Fittins AI Logo
API docs menu

API v1

Fittins AI API

The Fittins AI API is the same premium AI fashion generation service as fittins.ai, for your own store, catalogue system or agency tools. Send up to 3 product photos and a model, and get back a studio-quality on-model photo, up to 8K, from the Turbo, Default, Premium or Ultra tier. Results use your plan's credits and also appear in My Generations.

Base URL
https://api.fittins.ai/v1
Plans
Pro, Business, Enterprise
Pricing
The same credits as the website: a Default 1K photo is 40 credits
Format
JSON over HTTPS; files as PNG

Quickstart

  1. 1

    Create a key

    In Profile → API keys on fittins.ai. The key is shown once; keep it on your server.

  2. 2

    Pick a model

    GET /v1/models lists our model library and your custom models.

  3. 3

    Create a photo

    POST /v1/images with your product photo URL. It answers 202 with a generation id.

  4. 4

    Get the result

    Poll GET /v1/generations/{id} every few seconds. When it succeeded, download output.url.

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
}
// Poll until the photo is ready (usually about a minute).
async function waitFor(id) {
  for (;;) {
    const res = await fetch(`https://api.fittins.ai/v1/generations/${id}`, {
      headers: { Authorization: `Bearer ${process.env.FITTINS_API_KEY}` },
    });
    const g = await res.json();
    if (g.status === "succeeded" || g.status === "failed") return g;
    await new Promise((r) => setTimeout(r, 4000));
  }
}

const g = await waitFor(generation.id);
if (g.status === "succeeded") console.log(g.output.url); // full-quality PNG, link valid 24 hours
else console.error(g.error.code, g.error.message);

Basics

Field namessnake_case; times in UTC, ISO 8601 (2026-11-04T17:02:11.000Z)
Idsgen_ generation · upl_ upload · file_ file · mdl_lib_ / mdl_own_ model · loc_lib_ / loc_own_ location
Lists{ "object": "list", "data": […], "has_more": true, "next_cursor": "…" }; ?limit=1..100 (default 20) and ?cursor=
VersionsThe major version is in the path (/v1). New fields and endpoints are added without notice; anything that would break your code gets a new version, announced 90 days ahead.
Request idEvery response has an X-Request-Id header. Quote it to support.

What responses never include

  • Our expanded prompts and the AI analysis of your photos: you get back your own prompt as input.prompt.
  • Preview and thumbnail versions: output is the full-quality PNG only.
  • Storage addresses: files come through /v1/files, by id, with signed links.
  • Which AI provider ran a step, and internal error codes: errors use the public codes below.
Questions? Email support@fittins.ai with the X-Request-Id of the request.Next: Authentication →