Start Free
ImageText to ImageUnlimited$0 per request

PicassoIA Image

Creates one or two images from a prompt, in seven aspect ratios and in JPG, WebP or PNG. Set a seed to reproduce a result.

Try the modelView docs
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"}}'

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/picassoia-image/predictions \
      -H "Authorization: Bearer $PICASSOIA_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"input":{"prompt":"a lighthouse at sunset, oil painting"}}'
    Response · 201 Createdstarting
    {
      "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
      }
    }
  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": 6,
        "next_poll_in_seconds": 6
      }
    }

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

  3. Read the result

    When status is succeeded, output is a list of image URLs. 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-1.jpg"
      ],
      "error": null,
      "completed_at": "2026-10-01T09:30:08.000Z",
      "metrics": {
        "predict_time": 6.4
      },
      "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/picassoia-image/predictions

picassoia/picassoia-image

FieldTypeDefaultNotes
promptstring, 1–4000 charactersrequiredWhat the image should show.
aspect_ratio1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:31:1
num_outputsinteger, 1–21How many images.
output_formatwebp, jpg, pngjpg
output_qualityinteger, 0–10080JPG and WebP only.
seedintegerrandomSet it to reproduce a result.

Output: a list of 1 or 2 image URLs.

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
PicassoIA Image · Text to ImageUnlimited$0 per request$0.02/MP

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.