Start Free
VideoUnlimited$0 per request

Seedance 2.5 Lite

Turns a prompt, or a first frame, into a video with synchronized audio. Choose 5, 10 or 15 seconds at 480p or up to 10 seconds at 720p, and add a closing frame to decide how the clip ends.

Try the modelView docs
curl -s -X POST https://api.picassoia.com/v1/models/picassoia/seedance-2.5-lite/predictions \  -H "Authorization: Bearer $PICASSOIA_API_KEY" \  -H "Content-Type: application/json" \  -d '{"input":{"prompt":"a paper boat sailing down a rainy street"}}'

How to call it

One run takes three requests: create the prediction, poll it until it finishes and read the result. The code and the answers below are for this model and the mode you chose.

Before you start

Create an API key and keep it on your server in the PICASSOIA_API_KEY environment variable. Every request sends it in the Authorization header.

Get your API key
  1. Create the prediction

    Send the input in a POST. The API answers 201 at once, without waiting for the result: the prediction is in the starting state, with an estimate in eta and the address to poll in urls.get.

    Request
    curl -s -X POST https://api.picassoia.com/v1/models/picassoia/seedance-2.5-lite/predictions \
      -H "Authorization: Bearer $PICASSOIA_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"input":{"prompt":"a paper boat sailing down a rainy street"}}'
    Response · 201 Createdstarting
    {
      "id": "api_3f9c2b7e8d1a4c6f9e0b1a2c3d4e5f60",
      "model": "picassoia/seedance-2.5-lite",
      "input": {
        "prompt": "a paper boat sailing down a rainy street",
        "resolution": "480p",
        "duration": 5,
        "aspect_ratio": "16:9",
        "save_audio": true,
        "enhance_prompt": true
      },
      "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": 60,
        "next_poll_in_seconds": 30
      }
    }
  2. Poll it until it finishes

    Ask urls.get again after eta.next_poll_in_seconds: at half the estimate, when the estimate is reached, then every 2 seconds. Polling faster gets you nothing sooner.

    Statuses:startingprocessingsucceeded·failed·canceled

    Request
    # 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"
    Response · 200 OK · in progressprocessing
    {
      "id": "api_3f9c2b7e8d1a4c6f9e0b1a2c3d4e5f60",
      "status": "processing",
      "output": null,
      "eta": {
        "seconds": 30,
        "next_poll_in_seconds": 30
      }
    }

    Only the fields that change are shown; the rest are as in step 1.

  3. Read the result

    When status is succeeded, output is the URL of the MP4. Download the files you want to keep.

    If status is failed, error says why; canceled means it was canceled before it finished. These three statuses are final: the prediction never changes again.

    Request
    # 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'
    Response · 200 OK · finishedsucceeded
    {
      "id": "api_3f9c2b7e8d1a4c6f9e0b1a2c3d4e5f60",
      "status": "succeeded",
      "output": "https://…/output.mp4",
      "error": null,
      "completed_at": "2026-10-01T09:30:54.000Z",
      "metrics": {
        "predict_time": 52.8
      },
      "eta": null
    }

    Only the fields that change are shown; the rest are as in step 1.

The ids, times and URLs in these answers are examples: yours come in each answer.

This model in the API

Create a prediction with a POST, then poll it until it finishes. These are the model's inputs:

Endpoint

POST https://api.picassoia.com/v1/models/picassoia/seedance-2.5-lite/predictions

picassoia/seedance-2.5-lite

FieldTypeDefaultNotes
promptstring, 1–4000 charactersrequiredWhat happens in the video.
imageimage (https or data URL)—Opening frame.
last_frame_imageimage (https or data URL)—Closing frame. Needs image as well.
resolution480p, 720p480p
duration5, 10 or 15 (seconds)5Up to 15 at 480p, up to 10 at 720p.
aspect_ratiomatch_input_image, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3match_input_image with an image, 16:9 without
save_audiobooleantrueKeep the synchronized audio.
seedintegerrandom
enhance_promptbooleantrueAs in picassoia/picassoia-video.

Output: one MP4 URL (a string).

Open the full API reference

Compare with other providers

See how our prices compare with what other providers charge for the model of the same name.

ModelPicasso IAOther providers
Seedance 2.5 Lite · Text to Video · Image to Video · First and Last FrameUnlimited$0 per requestfrom ~$0.2205/s

Comparison based on other providers' public prices as of October 1, 2026. On Picasso IA, API predictions are free with the Infinite plan, with up to 5 in progress at once.

~ approximate price, as the provider gives it.