
picassoia / Seedance 2.5 Lite
टेक्स्ट और इमेज से वीडियो: ऑडियो, 5, 10 या 15 सेकंड की क्लिप और 480p या 720p आउटपुट।
शून्य से जनरेट हुई इमेज तक, कुछ ही मिनटों में।
इसे ChatGPT, Claude, Gemini या अपने कोडिंग एजेंट में पेस्ट करें: आपके प्रोजेक्ट में API जोड़ने के लिए ज़रूरी सब कुछ इसमें है।
Add the PicassoIA API to my project, to generate images and videos from my own code.
How the API works:
- Base URL: https://api.picassoia.com/v1. JSON requests and responses.
- Auth: send `Authorization: Bearer <key>`, reading the key from the PICASSOIA_API_KEY environment variable. Keep it server-side: the API sends no CORS headers, so never call it from a browser or put the key in an app.
- Create a prediction: `POST /v1/models/{owner}/{name}/predictions` with the body `{"input": {...}}`. It answers `201` with the prediction in the `starting` state and never waits for the result.
- Poll `prediction.urls.get`, waiting `eta.next_poll_in_seconds` between calls, until `status` is `succeeded`, `failed` or `canceled`. Then read `output`, or `error` when it failed.
- `GET /v1/models` lists every model with its input schema (JSON Schema). Unknown fields are refused with `422 invalid_input`.
- Images go as public https URLs or data URLs (PNG, JPEG or WebP, up to 5 MB each); the request body is limited to 10 MB.
- Up to 5 predictions queued or running per account; the next one answers `429 concurrency_limit` with a `Retry-After` header.
- Output URLs are hosted by PicassoIA: download the files you want to keep.
- Docs: https://picassoia.com/en/api
Models:
- `picassoia/seedance-2.5-lite` (Seedance 2.5 Lite): text or image to video with synchronized audio: 5, 10 or 15 s at 480p, up to 10 s at 720p; optional closing frame (last_frame_image, needs image). Output: one MP4 URL (a string).
- `picassoia/picassoia-video` (PicassoIA Video): text or image to video: 480p up to 20 s, 720p up to 10 s, 1080p up to 5 s. Output: one MP4 URL (a string).
- `picassoia/picassoia-image` (PicassoIA Image): text to image: 1 or 2 images from a prompt. Output: a list of image URLs.
- `picassoia/picassoia-image-editor-pro` (PicassoIA Image Editor Pro): edits or combines 1 to 4 images following a prompt (refer to them as "image 1", "image 2"…). Output: a list of image URLs.
- `picassoia/picassoia-reference-to-video` (PicassoIA Reference To Video): reference to video with synchronized audio: up to 9 reference images, an optional reference video and an optional reference audio (a voice a character lip-syncs, or music), named in the prompt as "Image 1", "Video 1", "Audio 1". At least one image or the video is required; the video and the audio go as public https URLs only. 480p or 720p, 1 to 15 s. Output: one MP4 URL (a string).अपने अकाउंट में एक key बनाएँ और उसे अपने सर्वर पर PICASSOIA_API_KEY एनवायरनमेंट वेरिएबल में रखें। API keys और प्रेडिक्शन बनाने के लिए सक्रिय Infinite प्लान ज़रूरी है।
export PICASSOIA_API_KEY="pia_sk_…"एक POST से प्रेडिक्शन बनाएँ। API आमतौर पर कुछ ही सेकंड में जवाब देता है, नतीजे का इंतज़ार किए बिना।
curl -s -X POST https://api.picassoia.com/v1/models/picassoia/picassoia-image/predictions \
-H "Authorization: Bearer $PICASSOIA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"input":{"prompt":"a lighthouse at sunset, oil painting"}}'const API = 'https://api.picassoia.com/v1'
const headers = {
Authorization: `Bearer ${process.env.PICASSOIA_API_KEY}`,
'Content-Type': 'application/json',
}
const input = {
prompt: "a lighthouse at sunset, oil painting"
}
const created = await fetch(`${API}/models/picassoia/picassoia-image/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_…, startingimport os, requests
API = "https://api.picassoia.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['PICASSOIA_API_KEY']}"}
payload = {"input": {
"prompt": "a lighthouse at sunset, oil painting",
}}
response = requests.post(f"{API}/models/picassoia/picassoia-image/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{
"id": "api_3f9c2b7e8d1a4c6f9e0b1a2c3d4e5f60",
"model": "picassoia/picassoia-image",
"input": {
"prompt": "a lighthouse at sunset, oil painting",
"aspect_ratio": "1:1",
"num_outputs": 1,
"output_format": "jpg",
"output_quality": 80
},
"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
}
}प्रेडिक्शन के urls.get को पोल करें और हर कॉल के बीच eta.next_poll_in_seconds सेकंड रुकें, जब तक उसका स्टेटस succeeded, failed या canceled न हो जाए। अगर वह सफल रहा, तो आउटपुट डाउनलोड करें।
# 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"
# 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'const 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()
}
if (prediction.status !== 'succeeded') throw new Error(prediction.error ?? prediction.status)
console.log(prediction.output)import 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()
if prediction["status"] != "succeeded":
raise RuntimeError(prediction["error"] or prediction["status"])
print(prediction["output"]){
"id": "api_3f9c2b7e8d1a4c6f9e0b1a2c3d4e5f60",
"status": "succeeded",
"output": [
"https://…/output-1.jpg"
],
"error": null,
"completed_at": "2026-10-01T09:30:08.000Z",
"metrics": {
"predict_time": 6.4
},
"eta": null
}हर मॉडल, अपने प्लेग्राउंड, कोड और पैरामीटर के साथ

टेक्स्ट और इमेज से वीडियो: ऑडियो, 5, 10 या 15 सेकंड की क्लिप और 480p या 720p आउटपुट।

टेक्स्ट और इमेज से वीडियो: ऑडियो, 1 से 20 सेकंड की क्लिप और 480p, 720p या 1080p आउटपुट।
टेक्स्ट से इमेज: हर रिक्वेस्ट पर 1 या 2 इमेज और 7 आस्पेक्ट रेशियो।

AI इमेज एडिटिंग: अधिकतम 4 इनपुट इमेज, हर रिक्वेस्ट पर 1 या 2 इमेज और 7 आस्पेक्ट रेशियो।