Skip to content

Product images for a full catalogue

Send one task per SKU with four images each. Tag every task with the merchant it is for, make retries safe with an idempotency key and collect the files by webhook.

Simulated run Simulated · no API call 0:30.0

Request

POST https://api.tovano.ai/v1/tasks
Authorization: Bearer $TOVANO_API_KEY
Content-Type: application/json
X-Tovano-Customer: merchant-2291
Idempotency-Key: sku-48213-v3

{
  "model": "image/demo-1",
  "input": {
    "prompt": "Studio product photo on a white seamless background, soft shadow: walnut side table, 45 cm",
    "size": "1024x1024",
    "n": 4
  },
  "webhook_url": "https://shop.example.com/hooks/tovano"
}

Response

{
  "id": "tsk_166099647f94",
  "model": "image/demo-1",
  "status": "completed",
  "customer": "merchant-2291",
  "input": {
    "prompt": "Studio product photo on a white seamless background, soft shadow: walnut side table, 45 cm",
    "size": "1024x1024",
    "n": 4
  },
  "output": {
    "images": [
      {
        "url": "https://files.tovano.ai/tsk_166099647f94/0.png?sig=…",
        "content_type": "image/png"
      },
      {
        "url": "https://files.tovano.ai/tsk_166099647f94/1.png?sig=…",
        "content_type": "image/png"
      },
      {
        "url": "https://files.tovano.ai/tsk_166099647f94/2.png?sig=…",
        "content_type": "image/png"
      },
      {
        "url": "https://files.tovano.ai/tsk_166099647f94/3.png?sig=…",
        "content_type": "image/png"
      }
    ]
  },
  "unit": "image",
  "units": 4,
  "charged_micro": 80000,
  "error": null,
  "created_at": "2026-11-12T09:14:03Z",
  "completed_at": "2026-11-12T09:14:14Z"
}

Tasks

9 tasks

  1. SKU 48213 · Walnut side table

    tsk_166099647f94 · 4 images

    Completed $0.080
  2. SKU 48214 · Linen armchair

    tsk_ee17a9830e6f · 4 images

    Completed $0.080
  3. SKU 48215 · Brass floor lamp

    tsk_b13bb6b2aa0b · 4 images

    Completed $0.080
  4. SKU 48216 · Wool rug, 160 × 230 cm

    tsk_97c9333980cd · 4 images

    Completed $0.080
  5. SKU 48217 · Oak bookshelf

    tsk_b1acb0902325 · 4 images

    Completed $0.080
  6. SKU 48218 · Ceramic vase set

    tsk_a98b027f29f8 · 4 images

    Failed · not charged $0.000
  7. SKU 48218 · Ceramic vase set, retry

    tsk_6caf0faef919 · 4 images

    Completed $0.080
  8. SKU 48219 · Steel bar stool

    tsk_533c8c353927 · 4 images

    Completed $0.080
  9. SKU 48220 · Glass pendant light

    tsk_9fa289dc727b · 4 images

    Completed $0.080
Reserved $0.000 Charged $0.640

Output

Walnut side table
Linen armchair
Brass floor lamp
Wool rug, 160 × 230 cm
Oak bookshelf
Ceramic vase set, retry
Steel bar stool
Glass pendant light

Events

  1. 0:00.0POST /v1/tasks · 9 tasks queued
  2. 0:11.4tsk_166099647f94 completed · $0.080
  3. 0:13.8tsk_b13bb6b2aa0b completed · $0.080
  4. 0:14.1tsk_ee17a9830e6f completed · $0.080
  5. 0:15.3tsk_a98b027f29f8 failed · provider_error · not charged, $0.080 released
  6. 0:18.0tsk_b1acb0902325 completed · $0.080
  7. 0:18.3tsk_97c9333980cd completed · $0.080
  8. 0:22.2tsk_533c8c353927 completed · $0.080
  9. 0:22.5tsk_9fa289dc727b completed · $0.080
  10. 0:27.6tsk_6caf0faef919 completed · $0.080
  11. 0:30.0Done · 9 tasks, 1 failed and not charged · $0.640 charged

A played-back run with realistic requests, responses and charges. No API call is made and no key is used. Times are compressed.

Cost of this run

$0.640 for 9 tasks

ModelAmount
Demo Image 1
image/demo-132 images × $0.020 / image
$0.640
Total$0.640

1 task failed and was not charged. Its reserve was released at once.

Unit prices from the model catalogue, in US dollars, excluding tax. Agent jobs are charged per step at each step model's price.

At your volume

What a month costs

250,000 SKUs × $0.080 $20,000.00 Per SKU: 4 images × $0.020.

List prices. Committed-volume pricing, invoicing and an SLA are agreed in your contract. Talk to sales

How it works

Three calls you would write anyway.

  1. 1

    One task per SKU

    Each SKU is one task with n = 4. The Idempotency-Key is built from the SKU and prompt version, so a network retry never makes or bills the images twice.

  2. 2

    Tag the merchant

    Send the merchant or brand as the customer tag. Spend per merchant shows up in /v1/usage, ready to bill back.

  3. 3

    Collect by webhook

    Results arrive at your webhook, signed. A failed task is released in full and never charged: retry it with a new key.

The code

Copy it, add your key, run it.

The same request in curl, TypeScript and Python. The TypeScript client is tovano on npm.

# One task per SKU. The Idempotency-Key makes retries safe.
curl https://api.tovano.ai/v1/tasks \
  -H "Authorization: Bearer $TOVANO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Tovano-Customer: merchant-2291" \
  -H "Idempotency-Key: sku-48213-v3" \
  -d '{
    "model": "image/demo-1",
    "input": {
      "prompt": "Studio product photo on a white seamless background, soft shadow: walnut side table, 45 cm",
      "size": "1024x1024",
      "n": 4
    },
    "webhook_url": "https://shop.example.com/hooks/tovano"
  }'

More examples

What else teams run at volume.

All examples

Run it on your volume, with your contract.

Committed-volume pricing, monthly invoices, higher limits and a named contact for teams that run AI in production.