Fittins AI Logo
API docs menu

Reference

Create an image

POST/v1/images

Creates an on-model photo of your product on an AI model. Everything that can be checked is checked before it answers (the fields, your model and location, your plan, credits, storage and running generations), so most problems come back at once. It then answers 202 with a queued generation; the photo is usually ready in about a minute.

product_imagesarrayrequired

1 to 3 photos of the product: { "url": "https://…" } or { "upload_id": "upl_…" }. Flat lays, hanger and ghost-mannequin shots and packshots all work. Different angles of one item are fine; another colour of the same item goes in a separate generation.

model_idstringrequired

A library model (mdl_lib_…) or one of your custom models (mdl_own_…). List them with GET /v1/models.

promptstringrequired

3 to 1500 characters: pose, framing, light, mood, setting.

location_idstringoptional

A library or custom location (loc_lib_…, loc_own_…). Leave it out to describe the setting in the prompt.

aspect_ratioenumdefault 1:1

1:1 · 9:16 · 16:9 · 3:4 · 4:3 · 3:2 · 2:3

tierenumdefault default

turbo · default · premium (Starter plan and up) · ultra (Business and up).

qualityenumdefault 1k

1k · 2k · 4k · 8k. 2K, 4K and 8K are upscaled from the generated photo.

metadataobjectoptional

Your own references, returned unchanged: up to 20 keys (letters, digits, - or _, up to 40 characters), values up to 500 characters. metadata.sku (or reference) is shown on the result in My Generations.

Headers: Authorization (required), Content-Type: application/json, Idempotency-Key (recommended).

curl https://api.fittins.ai/v1/images \
  -H "Authorization: Bearer $FITTINS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: tshirt-red-m-front-v1" \
  -d '{
  "product_images": [
    {
      "url": "https://cdn.mystore.com/p/tshirt-red-front.jpg"
    }
  ],
  "model_id": "mdl_lib_DM5rQvl3KtlR7nqumd6I",
  "prompt": "full body, plain light grey background, soft studio light, front view",
  "aspect_ratio": "3:4",
  "tier": "default",
  "quality": "2k",
  "metadata": {
    "sku": "TSHIRT-RED-M"
  }
}'
202 Accepted
{
  "id": "gen_7Hq2Mz9TkQ4x1bVnR8sL",
  "object": "generation",
  "type": "image",
  "status": "queued",
  "created_at": "2026-11-04T17:02:11.000Z",
  "started_at": null,
  "completed_at": null,
  "input": {
    "model_id": "mdl_lib_DM5rQvl3KtlR7nqumd6I",
    "product_images": [
      {
        "url": "https://cdn.mystore.com/p/tshirt-red-front.jpg"
      }
    ],
    "location_id": null,
    "prompt": "full body, plain light grey background, soft studio light, front view",
    "aspect_ratio": "3:4",
    "tier": "default",
    "quality": "2k"
  },
  "output": null,
  "credits": {
    "estimated": 50,
    "charged": 0
  },
  "project_id": null,
  "metadata": {
    "sku": "TSHIRT-RED-M"
  },
  "error": null,
  "livemode": true
}

Credits per photo

Tier1K2K4K8K
Turbo30404050
Default40505060
Premium60707080
Ultra809090100

The same credits as on fittins.ai. They are taken once, when the photo is saved. A refused or failed generation costs nothing. If upscaling to 2K, 4K or 8K fails, you get the 1K photo, 40 credits are charged, and output.quality says 1k.

Questions? Email support@fittins.ai with the X-Request-Id of the request.Next: Generations →