Picsart API Platform
← All models

Gemini 3 Pro

Premium

Google · Text · Video → Text

Google’s top Gemini model — text, image, and video reasoning.

Model ID: gemini-3-proWorkflow: gemini
VisionVideo InputThinking
Try on Playground ↗

Overview

Alongside the unified model APIs, we expose compatibility APIs that take each vendor's original parameters exactly as the vendor defines them — nothing renamed, nothing reshaped on the way through.

That makes them the shortest path onto Picsart if you already work with the vendor directly: the request bodies you've already written keep working as they are. You keep their parameter names and defaults, and you get the vendor's full parameter set rather than the subset that is shared across every model.

The cost is that a request is written for one vendor — switching models later means rewriting it, and results come back in the vendor's own shape. When you'd rather write once and change models freely, use the unified API.

Make a request

Call the workflow with ai.apis.run() in TypeScript, or hit /workflows/{workflow}/execute directly — params is passed through untouched either way.

These endpoints are addressed by workflow name rather than model id: the one in this model's header, since one model runs as one workflow. Authentication is unchanged — your Picsart API key as a bearer token (see Authentication).

ts
import { createClient, ApiRunMode } from '@picsart/ai-sdk';

const ai = createClient({
  apiKey: process.env.PICSART_API_KEY,
  apiUrl: 'https://api.picsart.com',
});

// Calls the 'gemini' workflow directly — params are sent as-is.
const { result, usage } = await ai.apis.run('gemini', {
  contents: [
    {
      parts: []
    }
  ]
}, {
  mode: ApiRunMode.SYNC,
});

console.log(result); // workflow-specific output
console.log(usage?.credits); // credits charged

Parameters

4 parameters, sent inside params. These are the vendor's own names, so they line up one-for-one with the vendor's documentation. Required ones must be supplied; the rest fall back to their defaults.

ParameterTypeRequiredDefaultDetails
contents
Contents array with parts
Content[]yes——
└parts
Array of parts containing text and/or image data
GeminiPart[]yes——
└text
Text input
stringno—
e.g. Hi, This is a picture of me. Can you add a llama next to me
└imageUrl
stringno——
└audioUrl
URL pointing to the generated audio file
stringno——
└typedeprecated
Only used for custom imageUrl data
stringno——
└fileData
File data
objectno——
└inlineData
Inline data
objectno——
└functionCall
A predicted FunctionCall returned from the model that contains a string representing the FunctionDeclaration.name with the arguments and their values.
objectno——
└functionResponse
The result output of a FunctionCall that contains a string representing the FunctionDeclaration.name and a structured JSON object containing any output from the function is used as context to the model.
objectno——
└thought
booleanno——
└thoughtSignature
Optional. An opaque signature for the thought so it can be reused in subsequent requests. A base64-encoded string
stringno——
└partMetadata
Custom metadata associated with the Part
objectno——
└videoMetadata
Optional. Video metadata
objectno——
└mediaProcessing
How a video part is read. AGENTIC lets the model fetch only the segments it needs (Gemini 3.5+ Flash models only); default is STATIC fixed-rate frame extraction.
stringno—
MEDIA_PROCESSING_UNSPECIFIEDSTATICAGENTIC
└role
stringno——
generationConfig
objectno——
└temperature
Temperature value for controlling randomness
numberno—
e.g. 1.2
└topK
Top-K sampling value
numberno—
e.g. 40
└topP
Top-P (nucleus) sampling value
numberno1
e.g. 0.95
└maxOutputTokens
Maximum number of output tokens
numberno—
e.g. 8192
└candidateCount
Number of response variations to return.
numberno—
e.g. 2
└responseMimeType
Response MIME type
stringno—
e.g. text/plain
└imageConfig
Image config
objectno——
└aspectRatio
Image aspect ratio. Use "auto" to let the model choose — no aspect ratio is sent to the vendor in that case. Support is model-dependent: the extreme ratios 1:4, 4:1, 1:8, 8:1 are only supported by Gemini 3 image models. gemini-2.5-flash-image supports only 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 and returns 400 unsupported_aspect_ratio for any other value.
stringno—
auto1:12:33:23:44:34:55:49:1616:921:91:44:11:88:1
└imageSize
Image resolution. Support is model-dependent: gemini-2.5-flash-image and gemini-3.1-flash-lite-image support 1K only; gemini-3-pro-image supports 1K, 2K, 4K; gemini-3.1-flash-image supports 0.5K, 1K, 2K, 4K.
stringno—
0.5K1K2K4K
└responseModalities
Response modalities
string[]no—
e.g. ["Text","Image","Audio"]
└thinkingConfig
Configuration for the model's thinking/reasoning capabilities. Supported by gemini-2.5-pro, gemini-2.5-flash, gemini-3-pro, gemini-3.1-pro, gemini-3-pro-image.
objectno——
└thinkingBudget
Number of thinking tokens the model should use. Range: 0-24576. Set to 0 to disable thinking. Not supported by gemini-2.5-flash-image or gemini-3.1-flash-lite-image.
numberno—
0–24576
e.g. 1024
└includeThoughts
Whether to include thought summaries in the response. When true, the response will contain thought parts.
booleannofalse
e.g. true
└thinkingLevel
Controls the depth of the model's internal reasoning process. Only LOW and HIGH are supported. Not supported by gemini-2.5-flash-image or gemini-3-pro-image.
stringno—
MINIMALLOWMEDIUMHIGH
└speechConfig
Speech configuration for TTS. Use voiceConfig for single-speaker or multiSpeakerVoiceConfig for multi-speaker.
objectno——
└voiceConfig
Single-speaker voice config
objectno——
└multiSpeakerVoiceConfig
Multi-speaker voice config
objectno——
model
Model to run. Text (chat completion) models are post-charged by token; image models produce image output (requested via responseModalities) and are billed per-image. TTS/speech synthesis lives on GEMINI_V1_AUDIOS.
stringnogemini-2.5-flash
gemini-2.5-progemini-2.5-flashgemini-embedding-expgemini-2.5-flash-imagegemini-2.5-flash-image-previewgemini-3-pro-imagegemini-3-pro-image-previewgemini-3.1-flash-imagegemini-3.1-flash-image-previewgemini-3-progemini-3-pro-previewgemini-3.1-pro-previewgemini-3.1-flash-litegemini-3.5-flash-litegemini-3.6-flashgemini-3.7-flashgemini-3.8-flashgemini-3.1-flash-lite-preview
tools
Optional tools with function declarations
object[]no——

Response

Over HTTP the output arrives inside a status envelope, at response.result. ai.apis.run() unwraps that envelope for you and resolves to { result, usage } instead. Either way the resultitself is the vendor's own shape.

json
{
  "result": {
    "candidates": [
      {
        "content": {
          "parts": []
        },
        "finishReason": "…",
        "index": 0
      }
    ],
    "usage": {
      "promptTokenCount": 0,
      "cachedContentTokenCount": 0,
      "toolUsePromptTokenCount": 0,
      "candidatesTokenCount": 0,
      "thoughtsTokenCount": 0,
      "totalTokenCount": 0,
      "credits": 0
    }
  },
  "usage": {
    "credits": 360
  }
}