Seedance 2.5 IS HERE · Nano Banana 2 & GPT Image 2.5 UNLIMITED UNTIL November 15Upgrade
  • Picasso IA LogoLogo Picasso IA
  • Home
  • Image
  • Video
  • Music
  • Voice
  • Chat
  • 3D
  • AI InfluencerNEW
  • AI ToolkitNEW
  • SupercomputerNEW
  • APINEW
  • MCPNEW
  • Generations
  • Billing
  • Support
  • Account
Skip to Content
  • Explore
  • Image
  • Video
  • Chat
  • Unlimited
  • Video Edit
  • Lipsync
  • Enhance
  • Music
  • Voice
  • Transcribe
  • 3D
  • Upscale
  • Remove BG
Start FreeStart Free NowNewCreateStart CreatingPricingPricing80% OFF
Crea GratisStart Freeابدأ مجانًاCrie GrátisEssai Gratuitमुफ़्त शुरूEmpieza Gratis YaStart Free Nowابدأ مجانًا الآنComece Grátis JáCommencer Gratuitementअभी मुफ़्त शुरू करेंNuevoNewجديدNovoNouveauनयाCrearCreateإنشاءCriarCréerबनाएंEmpieza a CrearStart Creatingابدأ الإنشاءComece a CriarCommencer à Créerबनाना शुरू करेंPreciosPricingالأسعارPreçosTarifsमूल्यPreciosPricingالأسعارPreçosTarifsमूल्य80% OFF
  • ExplorarExploreاستكشافExplorarExplorerएक्सप्लोर
  • Inicio RápidoQuickstartالبدء السريعInício RápidoDémarrage Rapideत्वरित शुरुआत
  • DocumentaciónDocsالوثائقDocumentaçãoDocumentationडॉक्स
  • PreciosPricingالأسعارPreçosTarifsकीमत
  • Claves de APIAPI Keysمفاتيح APIChaves de APIClés APIAPI कुंजियाँ
  • MCPMCPخادم MCPMCPMCPMCP
  1. ExplorarExploreاستكشافExplorarExplorerएक्सप्लोर
  2. VídeoVideoالفيديوVídeoVidéoवीडियो
  3. Seedance 2.5 LiteSeedance 2.5 LiteSeedance 2.5 LiteSeedance 2.5 LiteSeedance 2.5 LiteSeedance 2.5 Lite
  4. Referencia de la APIAPI Referenceمرجع APIReferência da APIRéférence de l'APIAPI संदर्भ
IlimitadoUnlimitedغير محدودIlimitadoIllimitéअसीमितVídeoVideoالفيديوVídeoVidéoवीडियो
$0$0$0$0$0$0
/ ejecución/ run/ تشغيل/ execução/ requête/ रन
desde ~$0.2205/s en otras APIsfrom ~$0.2205/s elsewhereابتداءً من ⁦~$0.2205⁩/ثانية لدى الآخرينa partir de ~$0.2205/s em outros provedoresà partir de ~$0.2205/s ailleursदूसरी जगह ~$0.2205/⁠सेकंड से शुरू
Referencia de la API de Seedance 2.5 LiteSeedance 2.5 Lite API Referenceمرجع واجهة Seedance 2.5 Lite APIReferência da API do Seedance 2.5 LiteRéférence de l'API Seedance 2.5 LiteSeedance 2.5 Lite API संदर्भ
Texto a VídeoText to Videoتحويل النص إلى فيديوTexto para VídeoTexte vers Vidéoटेक्स्ट से वीडियो
Texto e imagen a vídeo con audio, clips de 5, 10 o 15 segundos y salida en 480p o 720p.Text and image to video with audio, clips of 5, 10 or 15 seconds and 480p or 720p output.تحويل النص والصورة إلى فيديو مع الصوت ومقاطع مدتها 5 أو 10 أو 15 ثانية ودقة 480p أو 720p.Texto e imagem para vídeo com áudio, clipes de 5, 10 ou 15 segundos e saída em 480p ou 720p.Texte et image vers vidéo avec audio, des clips de 5, 10 ou 15 secondes et une sortie en 480p ou 720p.टेक्स्ट और इमेज से वीडियो: ऑडियो, 5, 10 या 15 सेकंड की क्लिप और 480p या 720p आउटपुट।
Copiar Prompt para AgenteCopy Agent Promptنسخ موجّه الوكيلCopiar Prompt para AgenteCopier le Prompt pour l'Agentएजेंट प्रॉम्प्ट कॉपी करें
Ver DocumentaciónView Docsعرض الوثائقVer DocumentaçãoVoir la Documentationडॉक्स देखें
cURLcURLcURLcURLcURLcURL
Copiar para AgenteCopy for Agentنسخ للوكيلCopiar para AgenteCopier pour l'Agentएजेंट के लिए कॉपी करें
PlaygroundPlaygroundمساحة التجربةPlaygroundPlaygroundप्लेग्राउंड
APIAPIواجهة APIAPIAPIAPI
En Esta PáginaOn This Pageفي هذه الصفحةNesta PáginaSur cette Pageइस पेज पर
Cómo Llamar a la APICalling the APIاستدعاء APIComo Chamar a APIAppeler l'APIAPI को कॉल करना
En Esta PáginaOn This Pageفي هذه الصفحةNesta PáginaSur cette Pageइस पेज पर
cURLcURLcURLcURLcURLcURL
  • Cómo Llamar a la APICalling the APIاستدعاء APIComo Chamar a APIAppeler l'APIAPI को कॉल करना
  • ConfiguraciónSetupالإعدادConfiguraçãoConfigurationसेटअप
  • Parámetros de la PeticiónRequest Parametersمعاملات الطلبParâmetros da RequisiçãoParamètres de la Requêteरिक्वेस्ट पैरामीटर
  • ModosModesالأوضاعModosModesमोड
  • Petición de EjemploExample Requestمثال على الطلبRequisição de ExemploExemple de Requêteउदाहरण रिक्वेस्ट
  • AutenticaciónAuthenticationالمصادقةAutenticaçãoAuthentificationप्रमाणीकरण
  • Cola y SondeoQueue and Pollingقائمة الانتظار والاستعلام الدوريFila e Consulta PeriódicaFile d'Attente et Interrogationकतार और पोलिंग
  • EnvíoSubmitالإرسالEnviarEnvoiभेजना
  • SondeoPollالاستعلامConsultarInterrogationपोल करना
  • ResultadoResultالنتيجةResultadoRésultatनतीजा
  • CancelaciónCancelالإلغاءCancelarAnnulationरद्द करना
  • SalidaOutputالمخرجاتSaídaSortieआउटपुट
  • Errores y LímitesErrors and Limitsالأخطاء والحدودErros e LimitesErreurs et Limitesत्रुटियाँ और सीमाएँ
  • PreciosPricingالأسعارPreçosTarifsकीमत
  • JSON SchemaJSON Schemaمخطط JSON SchemaJSON SchemaJSON SchemaJSON Schema

Seedance 2.5 Lite usa el ID de modelo picassoia/seedance-2.5-lite. Texto e imagen a vídeo con audio, clips de 5, 10 o 15 segundos y salida en 480p o 720p.

Cómo Llamar a la API

Envía las peticiones a https://api.picassoia.com/v1/models/picassoia/seedance-2.5-lite/predictions con un cuerpo JSON cuyo input coincida con los parámetros de abajo.

Configuración

Guarda tu API key en tu servidor, en una variable de entorno, y envíala en la cabecera Authorization de cada petición.

Shell
1export PICASSOIA_API_KEY="pia_sk_…"

Seedance 2.5 Lite uses the model ID picassoia/seedance-2.5-lite. Text and image to video with audio, clips of 5, 10 or 15 seconds and 480p or 720p output.

Calling the API

Send requests to https://api.picassoia.com/v1/models/picassoia/seedance-2.5-lite/predictions with a JSON body whose input matches the parameters below.

Setup

Keep your API key on your server, in an environment variable, and send it in the Authorization header of every request.

Shell
1export PICASSOIA_API_KEY="pia_sk_…"

يستخدم Seedance 2.5 Lite معرّف النموذج picassoia/seedance-2.5-lite. تحويل النص والصورة إلى فيديو مع الصوت ومقاطع مدتها 5 أو 10 أو 15 ثانية ودقة 480p أو 720p.

استدعاء API

أرسل الطلبات إلى https://api.picassoia.com/v1/models/picassoia/seedance-2.5-lite/predictions بجسم JSON يتوافق فيه الكائن input مع المعاملات أدناه.

الإعداد

احتفظ بمفتاح API على خادمك، في متغير بيئة، وأرسله في ترويسة Authorization مع كل طلب.

Shell
1export PICASSOIA_API_KEY="pia_sk_…"

O Seedance 2.5 Lite usa o ID de modelo picassoia/seedance-2.5-lite. Texto e imagem para vídeo com áudio, clipes de 5, 10 ou 15 segundos e saída em 480p ou 720p.

Como Chamar a API

Envie requisições para https://api.picassoia.com/v1/models/picassoia/seedance-2.5-lite/predictions com um corpo JSON cujo input siga os parâmetros abaixo.

Configuração

Guarde sua API key no seu servidor, em uma variável de ambiente, e envie-a no cabeçalho Authorization de cada requisição.

Shell
1export PICASSOIA_API_KEY="pia_sk_…"

Seedance 2.5 Lite utilise l'identifiant de modèle picassoia/seedance-2.5-lite. Texte et image vers vidéo avec audio, des clips de 5, 10 ou 15 secondes et une sortie en 480p ou 720p.

Appeler l'API

Envoyez vos requêtes à https://api.picassoia.com/v1/models/picassoia/seedance-2.5-lite/predictions avec un corps JSON dont l'objet input correspond aux paramètres ci-dessous.

Configuration

Gardez votre API key sur votre serveur, dans une variable d'environnement, et envoyez-la dans l'en-tête Authorization de chaque requête.

Shell
1export PICASSOIA_API_KEY="pia_sk_…"

Seedance 2.5 Lite का मॉडल ID picassoia/seedance-2.5-lite है। टेक्स्ट और इमेज से वीडियो: ऑडियो, 5, 10 या 15 सेकंड की क्लिप और 480p या 720p आउटपुट।

API को कॉल करना

https://api.picassoia.com/v1/models/picassoia/seedance-2.5-lite/predictions पर ऐसी JSON बॉडी के साथ रिक्वेस्ट भेजें जिसका input नीचे दिए गए पैरामीटर से मेल खाता हो।

सेटअप

अपनी API key अपने सर्वर पर किसी एनवायरनमेंट वेरिएबल में रखें, और उसे हर रिक्वेस्ट के Authorization हेडर में भेजें।

Shell
1export PICASSOIA_API_KEY="pia_sk_…"
  • Home
  • Toolkit
  • Library
  • Account
Start FreeStart Free NowNewCreateStart CreatingPricingPricing80% OFF
  • Explore
  • Quickstart
  • Docs
  • Pricing
  • API Keys
  • MCP
  1. Explore
  2. Image
  3. PicassoIA Image Editor Pro
  4. API Reference
UnlimitedImage$0 per request with the Infinite plan; other providers charge $0.03/MP for a comparable model, as of October 1, 2026$0/ run$0.03/MP elsewhere

PicassoIA Image Editor Pro API Reference

Image Editing

AI image editing with up to 4 input images, 1 or 2 images per request and 7 aspect ratios.

View Docs
1
2
3
4curl -s -X POST https://api.picassoia.com/v1/models/picassoia/picassoia-image-editor-pro/predictions \
  -H "Authorization: Bearer $PICASSOIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":{"prompt":"Park the bicycle from image 2 on its kickstand on the sidewalk in the foreground of image 1, seat the dog from image 3 in its front basket and lay the tulip bouquet from image 4 across the rear rack. Match the soft morning light, with natural shadows on the pavement. Keep the street, the houses and the canal unchanged.","images":["https://pub-bb5d8b4a2a694e6281c78fef4a756936.r2.dev/api-examples/picassoia-image/1792278169860-canal-street.jpg","https://pub-bb5d8b4a2a694e6281c78fef4a756936.r2.dev/api-examples/picassoia-image/1792278174973-city-bicycle.jpg","https://pub-bb5d8b4a2a694e6281c78fef4a756936.r2.dev/api-examples/picassoia-image/1792278177001-terrier.jpg","https://pub-bb5d8b4a2a694e6281c78fef4a756936.r2.dev/api-examples/picassoia-image/1792278180239-tulip-bouquet.jpg"]}}'
PlaygroundAPI

On This Page

  • 1.Calling the API
  • Setup
  • Request Parameters
  • Modes
  • Example Request
  • 2.Authentication
  • 3.Queue and Polling
  • Submit
  • Poll
  • Result
  • Cancel
  • 4.Output
  • 5.Errors and Limits
  • 6.Pricing
  • 7.JSON Schema

PicassoIA Image Editor Pro uses the model ID picassoia/picassoia-image-editor-pro. AI image editing with up to 4 input images, 1 or 2 images per request and 7 aspect ratios.

Calling the API

Send requests to https://api.picassoia.com/v1/models/picassoia/picassoia-image-editor-pro/predictions with a JSON body whose input matches the parameters below.

Setup

Keep your API key on your server, in an environment variable, and send it in the Authorization header of every request.

Shell
1export PICASSOIA_API_KEY="pia_sk_…"

Request Parameters

promptstringRequired
DefaultNone
What the output should show. Up to 4000 characters.
imagesarrayRequired
DefaultNone
The images to edit or combine. Refer to them in the prompt as image 1, image 2 and so on. 1 to 4 images. A PNG, JPEG or WebP image, as a public https URL or as a data URL of up to 5 MB.
aspect_ratiostring
Default"match_input_image"
The shape of the output. Where match_input_image is an option, it keeps the proportions of the input image, or of the first one when there are several. Options: match_input_image, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2 and 2:3.
num_outputsinteger
Default1
How many results to make. From 1 to 2.
output_formatstring
Default"webp"
The file format of the result. Options: webp, jpg and png.
output_qualityinteger
Default95
Compression quality, for JPG and WebP. From 0 to 100.
seedinteger
DefaultNone
Set it to reproduce a result; leave it out for a random one.
ParameterTypeRequiredDefaultDescription
promptstringYesRequiredNoneWhat the output should show. Up to 4000 characters.
imagesarrayYesRequiredNoneThe images to edit or combine. Refer to them in the prompt as image 1, image 2 and so on. 1 to 4 images. A PNG, JPEG or WebP image, as a public https URL or as a data URL of up to 5 MB.
aspect_ratiostringNo"match_input_image"The shape of the output. Where match_input_image is an option, it keeps the proportions of the input image, or of the first one when there are several. Options: match_input_image, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2 and 2:3.
num_outputsintegerNo1How many results to make. From 1 to 2.
output_formatstringNo"webp"The file format of the result. Options: webp, jpg and png.
output_qualityintegerNo95Compression quality, for JPG and WebP. From 0 to 100.
seedintegerNoNoneSet it to reproduce a result; leave it out for a random one.

Modes

The mode depends on which files, if any, you send with the prompt. Every mode uses the same endpoint.

ModesFiles
Image Editingimages

Example Request

Image Editing

cURL
1
2
3
4curl -s -X POST https://api.picassoia.com/v1/models/picassoia/picassoia-image-editor-pro/predictions \
  -H "Authorization: Bearer $PICASSOIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":{"prompt":"put the cat from image 1 on the sofa from image 2","images":["https://example.com/cat.png","https://example.com/sofa.jpg"]}}'
Node.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29const API = 'https://api.picassoia.com/v1'
const headers = {
  Authorization: `Bearer ${process.env.PICASSOIA_API_KEY}`,
  'Content-Type': 'application/json',
}
const sleep = (s) => new Promise((resolve) => setTimeout(resolve, s * 1000))

const input = {
  prompt: "put the cat from image 1 on the sofa from image 2",
  images: [
    "https://example.com/cat.png",
    "https://example.com/sofa.jpg"
  ]
}

const created = await fetch(`${API}/models/picassoia/picassoia-image-editor-pro/predictions`, {
  method: 'POST',
  headers,
  body: JSON.stringify({ input }),
})
let prediction = await created.json()
if (!created.ok) throw new Error(`${prediction.code}: ${prediction.detail}`)

while (!['succeeded', 'failed', 'canceled'].includes(prediction.status)) {
  await sleep(prediction.eta?.next_poll_in_seconds ?? 2)
  prediction = await (await fetch(prediction.urls.get, { headers })).json()
}
if (prediction.status !== 'succeeded') throw new Error(prediction.error ?? prediction.status)
console.log(prediction.output)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23import os, time, requests

API = "https://api.picassoia.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['PICASSOIA_API_KEY']}"}

payload = {"input": {
    "prompt": "put the cat from image 1 on the sofa from image 2",
    "images": [
        "https://example.com/cat.png",
        "https://example.com/sofa.jpg",
    ],
}}

response = requests.post(f"{API}/models/picassoia/picassoia-image-editor-pro/predictions", json=payload, headers=HEADERS)
prediction = response.json()
if not response.ok:
    raise RuntimeError(f"{prediction['code']}: {prediction['detail']}")
while prediction["status"] not in ("succeeded", "failed", "canceled"):
    time.sleep((prediction.get("eta") or {}).get("next_poll_in_seconds", 2))
    prediction = requests.get(prediction["urls"]["get"], headers=HEADERS).json()
if prediction["status"] != "succeeded":
    raise RuntimeError(prediction["error"] or prediction["status"])
print(prediction["output"])

Authentication

Every request needs an API key in the Authorization header, as a Bearer token. Create keys in your account; the full key is shown once.

HTTP
1Authorization: Bearer $PICASSOIA_API_KEY

Manage API Keys

Queue and Polling

Every prediction takes three steps: create it, poll it until it finishes, then read the result.

Submit

The API answers 201, usually within seconds, with the prediction in the starting state, an estimate in eta and the URL to poll in urls.get. If the prediction fails right away, for example when the safety filter refuses the input, the answer is still 201, with the prediction in the failed state and its error.

cURL
1
2
3
4curl -s -X POST https://api.picassoia.com/v1/models/picassoia/picassoia-image-editor-pro/predictions \
  -H "Authorization: Bearer $PICASSOIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":{"prompt":"put the cat from image 1 on the sofa from image 2","images":["https://example.com/cat.png","https://example.com/sofa.jpg"]}}'
Node.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21const API = 'https://api.picassoia.com/v1'
const headers = {
  Authorization: `Bearer ${process.env.PICASSOIA_API_KEY}`,
  'Content-Type': 'application/json',
}

const input = {
  prompt: "put the cat from image 1 on the sofa from image 2",
  images: [
    "https://example.com/cat.png",
    "https://example.com/sofa.jpg"
  ]
}
const created = await fetch(`${API}/models/picassoia/picassoia-image-editor-pro/predictions`, {
  method: 'POST',
  headers,
  body: JSON.stringify({ input }),
})
let prediction = await created.json()
if (!created.ok) throw new Error(`${prediction.code}: ${prediction.detail}`)
console.log(prediction.id, prediction.status) // api_…, starting
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17import os, requests

API = "https://api.picassoia.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['PICASSOIA_API_KEY']}"}

payload = {"input": {
    "prompt": "put the cat from image 1 on the sofa from image 2",
    "images": [
        "https://example.com/cat.png",
        "https://example.com/sofa.jpg",
    ],
}}
response = requests.post(f"{API}/models/picassoia/picassoia-image-editor-pro/predictions", json=payload, headers=HEADERS)
prediction = response.json()
if not response.ok:
    raise RuntimeError(f"{prediction['code']}: {prediction['detail']}")
print(prediction["id"], prediction["status"])  # api_…, starting
Response · 201 Created
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32{
  "id": "api_3f9c2b7e8d1a4c6f9e0b1a2c3d4e5f60",
  "model": "picassoia/picassoia-image-editor-pro",
  "input": {
    "prompt": "put the cat from image 1 on the sofa from image 2",
    "images": [
      "https://example.com/cat.png",
      "https://example.com/sofa.jpg"
    ],
    "aspect_ratio": "match_input_image",
    "num_outputs": 1,
    "output_format": "webp",
    "output_quality": 95
  },
  "output": null,
  "error": null,
  "status": "starting",
  "created_at": "2026-10-01T09:30:00.000Z",
  "started_at": null,
  "completed_at": null,
  "metrics": {
    "predict_time": null
  },
  "urls": {
    "get": "https://api.picassoia.com/v1/predictions/api_3f9c2b7e8d1a4c6f9e0b1a2c3d4e5f60",
    "cancel": "https://api.picassoia.com/v1/predictions/api_3f9c2b7e8d1a4c6f9e0b1a2c3d4e5f60/cancel"
  },
  "eta": {
    "seconds": 12,
    "next_poll_in_seconds": 6
  }
}

Poll

Poll urls.get again after eta.next_poll_in_seconds: at half the estimate, when the estimate is reached, then every 2 seconds.

cURL
1
2
3
4# Repeat after eta.next_poll_in_seconds until status is
# succeeded, failed or canceled.
curl -s https://api.picassoia.com/v1/predictions/api_3f9c2b7e8d1a4c6f9e0b1a2c3d4e5f60 \
  -H "Authorization: Bearer $PICASSOIA_API_KEY"
Node.js
1
2
3
4
5
6const sleep = (s) => new Promise((resolve) => setTimeout(resolve, s * 1000))

while (!['succeeded', 'failed', 'canceled'].includes(prediction.status)) {
  await sleep(prediction.eta?.next_poll_in_seconds ?? 2)
  prediction = await (await fetch(prediction.urls.get, { headers })).json()
}
Python
1
2
3
4
5import time

while prediction["status"] not in ("succeeded", "failed", "canceled"):
    time.sleep((prediction.get("eta") or {}).get("next_poll_in_seconds", 2))
    prediction = requests.get(prediction["urls"]["get"], headers=HEADERS).json()
Response · 200 OK · in progress
1
2
3
4
5
6
7
8
9{
  "id": "api_3f9c2b7e8d1a4c6f9e0b1a2c3d4e5f60",
  "status": "processing",
  "output": null,
  "eta": {
    "seconds": 6,
    "next_poll_in_seconds": 6
  }
}

Result

When status is succeeded, output holds the result. A failed prediction carries its reason in error, and a canceled one was stopped before it finished. All three statuses are final.

cURL
1
2
3
4# The last poll holds the result: "output" when "status" is succeeded,
# "error" when it is failed. With jq, just those three fields:
curl -s https://api.picassoia.com/v1/predictions/api_3f9c2b7e8d1a4c6f9e0b1a2c3d4e5f60 \
  -H "Authorization: Bearer $PICASSOIA_API_KEY" | jq '.status, .output, .error'
Node.js
1
2if (prediction.status !== 'succeeded') throw new Error(prediction.error ?? prediction.status)
console.log(prediction.output)
Python
1
2
3if prediction["status"] != "succeeded":
    raise RuntimeError(prediction["error"] or prediction["status"])
print(prediction["output"])
Response · 200 OK · finished
1
2
3
4
5
6
7
8
9
10
11
12
13{
  "id": "api_3f9c2b7e8d1a4c6f9e0b1a2c3d4e5f60",
  "status": "succeeded",
  "output": [
    "https://…/output-1.webp"
  ],
  "error": null,
  "completed_at": "2026-10-01T09:30:08.000Z",
  "metrics": {
    "predict_time": 6.4
  },
  "eta": null
}

Cancel

POST urls.cancel stops a prediction that is still queued (any model) or an image that is still generating; a video already generating answers 409 not_cancelable.

The IDs, times and URLs in these responses are examples: yours will have their own.

Output

When the prediction succeeds, output is a list of 1 or 2 image URLs.

Real Outputs

  • PicassoIA Image Editor Pro
  • PicassoIA Image Editor Pro
  • PicassoIA Image Editor Pro
  • PicassoIA Image Editor Pro
  • PicassoIA Image Editor Pro
  • PicassoIA Image Editor Pro

Errors and Limits

Errors are JSON problem details with a stable code, and a 422 names every field at fault.

Limits

  • 5 predictions queued or running at once per account
  • Request body up to 10 MB; images as data URLs up to 5 MB each
  • Prompt up to 4000 characters
  • Unknown fields are refused with 422 invalid_input
All Error Codes

Pricing

$0 per request with an active Infinite plan: API predictions use no credits, whatever the settings.

Other providers charge $0.03/MP for a comparable model (as of October 1, 2026).

API Pricing

JSON Schema

The same schema the API serves at GET /v1/models/picassoia/picassoia-image-editor-pro.

JSON Schema
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85{
  "input_schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "prompt": {
        "type": "string",
        "minLength": 1,
        "maxLength": 4000,
        "description": "The edit to make. Refer to the images as \"image 1\", \"image 2\"…"
      },
      "images": {
        "minItems": 1,
        "maxItems": 4,
        "type": "array",
        "items": {
          "type": "string",
          "description": "An image: an https URL or a data URL."
        },
        "description": "1 to 4 images to edit or combine; the first one is the main image."
      },
      "aspect_ratio": {
        "default": "match_input_image",
        "description": "Aspect ratio of the result; match_input_image keeps the first image's.",
        "type": "string",
        "enum": [
          "match_input_image",
          "1:1",
          "16:9",
          "9:16",
          "4:3",
          "3:4",
          "3:2",
          "2:3"
        ]
      },
      "num_outputs": {
        "default": 1,
        "description": "How many images to create: 1 or 2.",
        "type": "integer",
        "minimum": 1,
        "maximum": 2
      },
      "output_format": {
        "default": "webp",
        "description": "File format of the images.",
        "type": "string",
        "enum": [
          "webp",
          "jpg",
          "png"
        ]
      },
      "output_quality": {
        "default": 95,
        "description": "Quality of JPG and WebP images, from 0 to 100.",
        "type": "integer",
        "minimum": 0,
        "maximum": 100
      },
      "seed": {
        "description": "Random seed. Set it to reproduce a result.",
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      }
    },
    "required": [
      "prompt",
      "images"
    ],
    "additionalProperties": false
  },
  "output_schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "array",
    "items": {
      "type": "string",
      "format": "uri"
    },
    "minItems": 1,
    "maxItems": 2,
    "description": "URLs of the edited images, in the requested output_format."
  }
}