Capability · Batch ghost mannequin

Batch ghost mannequin API voor complete catalogi

In één zin

Photta’s batch ghost mannequin-endpoint accepteert een array van kledingfoto's en retourneert een batch-id plus één item-id per afbeelding. Credits voor de gehele batch worden vooraf gereserveerd; poll de batch voor een geaggregeerde status.

  • Typische duur: 1.5–4 min per image
  • Credits: 4 credits bij 2K · 5 credits bij 4K
  • Verwerking: async, polling
  • Limieten: 600 requests/min
  • Authenticatie: Bearer key

Elk getal op deze pagina is afkomstig uit de Photta-API-documentatie · gecontroleerd

POST/api/v1/ghost-mannequin/batch
RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/ghost-mannequin/batch \
  -H "Authorization: Bearer $PHOTTA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "product_images": [
    {
      "image": "https://cdn.yourstore.com/products/jacket-front.jpg",
      "back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
      "image_side": "front"
    },
    {
      "image": "https://cdn.yourstore.com/products/shirt-front.jpg",
      "image_side": "front"
    },
    {
      "image": "https://cdn.yourstore.com/products/trousers-front.jpg",
      "image_side": "front"
    }
  ],
  "style": "3d",
  "background_color": "white",
  "resolution": "2K",
  "aspect_ratio": "3:4",
  "user_instruction": "closed front, buttoned up",
  "brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')
A garment shown without its mannequin by the ghost mannequin API
Voorbeelduitvoer

In één oogopslag

In één oogopslag

Endpoint
POST /api/v1/ghost-mannequin/batch
Authenticatie
Bearer API key
Verwerking
Asynchroon — poll het status-endpoint
Typische duur
1.5–4 min per image
Credits
4 credits bij 2K · 5 credits bij 4K
Beeldverhoudingen
3:4 · 1:1 · 4:3 · 9:16 · 16:9
Invoerlimieten
Tot 10 MB per afbeelding; JPEG, PNG, WebP
Idempotent
Nee

Request en response

Request

RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/ghost-mannequin/batch \
  -H "Authorization: Bearer $PHOTTA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "product_images": [
    {
      "image": "https://cdn.yourstore.com/products/jacket-front.jpg",
      "back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
      "image_side": "front"
    },
    {
      "image": "https://cdn.yourstore.com/products/shirt-front.jpg",
      "image_side": "front"
    },
    {
      "image": "https://cdn.yourstore.com/products/trousers-front.jpg",
      "image_side": "front"
    }
  ],
  "style": "3d",
  "background_color": "white",
  "resolution": "2K",
  "aspect_ratio": "3:4",
  "user_instruction": "closed front, buttoned up",
  "brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')

202 Accepted / Completed

{
  "data": {
    "batch_id": "gmb_x7y8z9",
    "status": "processing",
    "total": 3,
    "completed": 0,
    "failed": 0,
    "items": [
      {
        "id": "gm_p1q2r3",
        "status": "processing"
      },
      {
        "id": "gm_s4t5u6",
        "status": "processing"
      },
      {
        "id": "gm_v7w8x9",
        "status": "processing"
      }
    ],
    "style": "3d",
    "background_color": "white",
    "resolution": "2K",
    "aspect_ratio": "3:4",
    "credits_reserved": 12,
    "created_at": "2026-04-10T16:05:00Z"
  },
  "request_id": "req_gmb001"
}

Request-parameters

product_images

Type: array[object]Vereist

Array of image objects. Each object contains "image" (URL or base64), optional "back_image", and optional "image_side". API batch caps (5× the dashboard limit): Free/Hobby/Hobby v2 5, Seller/Starter 10, Brand/Pro 25, Studio/Premium 50.

angle

Type: string

Applied to all images. "side" reconstructs the side view from each front photo (plus back_image when provided) — see the single-generate endpoint for details.

= straight

Waarden: straightbackside
style

Type: string

Applied to all images.

= 3d

Waarden: 3dflat_lay
background_color

Type: string

Applied to all images.

= white

Waarden: whitegraybeigeblack
resolution

Type: string

Applied to all images. "2K" = 4 credits each. "4K" = 5 credits each. 4K is produced natively in a single generation per item — pick it upfront; the resolution cannot be changed after creation. Note: 4K cannot be combined with aspect_ratio 1:1 — that combination returns 400.

= 2K

Waarden: 2K4K
aspect_ratio

Type: string

Applied to all images. Note: 1:1 is not available at 4K resolution — 1:1 combined with 4K returns 400.

= 3:4

Waarden: 3:41:14:39:1616:9
user_instruction

Type: string

Batch-level: one note applied to every item. Optional free-form string, max 400 characters (anything longer is silently truncated). A guarded steer for ambiguous rendering choices — e.g. "closed front", "cream interior lining", "buttoned up" — it never overrides the source garment, brand label, or structural reconstruction, and it is explicitly NOT a determinism/seed control.

brand_label_id

Type: string

Applied to all images. Brand label UUID returned by the Brand Labels API. API v1 request fields use snake_case; use brand_label_id.

Errors

400invalid_request_error
The request is malformed or contains invalid parameters.
401authentication_error
The API key is missing, invalid, or expired.
402insufficient_credits_error
Your account does not have enough credits.
404not_found_error
The requested resource does not exist.
409conflict_error
The request conflicts with current state — e.g. your concurrent-batch cap is reached.
429rate_limit_error
Too many requests. Slow down and retry.Retry-After: 30
500api_error
An internal server error occurred. Retry later.

Limieten

  • 600 verzoeken per minuut per API key (Vast venster; de limiet is identiek op elk abonnement)
  • Een 429 bevat Retry-After: 30 seconden
  • Tot 10 MB per afbeelding
  • Formaten: JPEG, PNG, WebP
  • Gelijktijdige batches per abonnement: Free 1 · Hobby 2 · Seller 3 · Brand 4 · Studio 6
  • Uitsluitend polling — de API stuurt geen webhooks.

Eén request, een hele reeks kledingstukken

Stel de array samen, dien eenmalig in, poll de batch, download elk item.

  1. Stap 1

    Genereer een API-sleutel

    Batch ghost mannequin gebruikt dezelfde inloggegevens en hetzelfde creditsaldo als elke andere Photta-functionaliteit.

  2. Stap 2

    Stel de array met afbeeldingen samen

    `product_images` verwacht één object per kledingstuk: `image`, plus een optionele `back_image` en `image_side`. De API-batchlimiet is 5 afbeeldingen op Free en Hobby, 10 op Seller, 25 op Brand en 50 op Studio.

  3. Stap 3

    POST de batch

    POST `/api/v1/ghost-mannequin/batch`. `angle`, `style`, `background_color`, `resolution` en `aspect_ratio` zijn van toepassing op elk item, en `user_instruction` voegt één instructie van maximaal 400 tekens toe aan alle items. Credits voor de complete batch worden gereserveerd voordat het eerste item rendert.

  4. Stap 4

    Poll de batch

    GET `/api/v1/ghost-mannequin/batch/:id` elke 3 seconden. De body bevat `total`, `completed`, `failed` en een overzicht per item, zodat je al kunt beginnen met downloaden voordat het laatste kledingstuk klaar is.

  5. Stap 5

    Download elk resultaat

    Elk voltooid item bevat zijn eigen `output_url`, `credits_used` en verwerkingstijd. Items die mislukken, restitueren hun gereserveerde credits en worden vermeld in `credits_refunded`.

Vragen die developers stellen voordat ze batches draaien

Wat voegt het batch-endpoint toe?

Het accepteert een array van kledingfoto's in één request en verwerkt deze op de achtergrond. Je ontvangt een batch-id voor het geaggregeerde overzicht en een item-id per foto, in plaats van tientallen losse jobs te moeten volgen.

Hoeveel afbeeldingen passen er in één batch?

De API-batchlimiet is 5 afbeeldingen op Free en Hobby, 10 op Seller, 25 op Brand en 50 op Studio — vijf keer de limiet van het dashboard. Een batch die groter is dan je abonnement toestaat, retourneert 400.

Hoe worden credits berekend voor een batch?

De volledige batch wordt vooraf gereserveerd: het aantal afbeeldingen vermenigvuldigd met de prijs per afbeelding, 4 credits op 2K of 5 op 4K. Als het saldo onvoldoende is om de reservering te dekken, retourneert het request 402 en wordt er niets gerenderd.

Wat gebeurt er als één item mislukt?

De rest van de batch gaat gewoon door. De batch-body toont `failed` naast `completed`, en de gereserveerde credits voor mislukte items worden teruggestort in `credits_refunded`.

Hoeveel batches kunnen er gelijktijdig draaien?

Gelijktijdig actieve batches zijn gelimiteerd per abonnement: Free 1, Hobby 2, Seller 3, Brand 4 en Studio 6. Het overschrijden van dit maximum retourneert 409 — poll de actieve batch totdat deze is afgerond en dien daarna opnieuw in.

Hoe poll ik een batch?

GET `/api/v1/ghost-mannequin/batch/:id` elke 3 seconden voor de geaggregeerde status, of poll een specifiek item op het standaard ghost mannequin-statuspad wanneer je details per kledingstuk wilt ophalen.

Gerelateerde functionaliteiten

Elk getal op deze pagina is afkomstig uit de Photta-API-documentatie · gecontroleerd

Probeer de API in vijf minuten

Genereer een Photta API-sleutel, plak het bovenstaande cURL-fragment en je hebt je eerste afbeelding op een model voordat de koffie klaar is.

  • 1.5–4 min per image
  • 4 credits bij 2K · 5 credits bij 4K
  • async, polling
  • 600 requests/min
  • Bearer key