Funktion · Batch ghost mannequin
Batch ghost mannequin-API til hele kataloger
I én sætning
Phottas batch ghost mannequin-endpoint modtager et array af tøjfotos og returnerer et batch-id plus ét element-id pr. billede. Credits for hele batchet reserveres forud; poll batchet for en samlet status.
- Typisk tid: 1.5–4 min per image
- Credits: 4 credits ved 2K · 5 credits ved 4K
- Behandling: async, polling
- Grænser: 600 requests/min
- Autentifikation: Bearer key
Hvert tal på denne side stammer fra Photta API-dokumentationen · tjekket
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')const res = await fetch("https://api.photta.app/api/v1/ghost-mannequin/batch", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"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"
}),
});
const { data } = await res.json(); // data.id, data.statusimport os, requests
res = requests.post(
"https://api.photta.app/api/v1/ghost-mannequin/batch",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"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"
},
)
data = res.json()["data"] # data["id"], data["status"]
Kort fortalt
Kort fortalt
- Endpoint
- POST /api/v1/ghost-mannequin/batch
- Autentifikation
- Bearer API-nøgle
- Behandling
- Asynkron — poll status-endpointet
- Typisk tid
- 1.5–4 min per image
- Credits
- 4 credits ved 2K · 5 credits ved 4K
- Billedformater
- 3:4 · 1:1 · 4:3 · 9:16 · 16:9
- Inputgrænser
- Op til 10 MB pr. billede; JPEG, PNG, WebP
- Idempotent
- Nej
Request og 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')const res = await fetch("https://api.photta.app/api/v1/ghost-mannequin/batch", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"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"
}),
});
const { data } = await res.json(); // data.id, data.statusimport os, requests
res = requests.post(
"https://api.photta.app/api/v1/ghost-mannequin/batch",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"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"
},
)
data = res.json()["data"] # data["id"], data["status"]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"
}{
"data": {
"batch_id": "gmb_x7y8z9",
"status": "completed",
"total": 3,
"completed": 3,
"failed": 0,
"processing": 0,
"credits_reserved": 12,
"credits_used": 12,
"credits_refunded": 0,
"items": [
{
"id": "gm_p1q2r3",
"status": "completed",
"output_url": "https://cdn.photta.app/generated/gm_p1q2r3.jpg",
"thumbnail_url": "https://cdn.photta.app/generated/gm_p1q2r3-thumb.jpg",
"credits_used": 4,
"completed_at": "2026-04-10T16:06:42Z",
"duration_ms": 102000
},
{
"id": "gm_s4t5u6",
"status": "completed",
"output_url": "https://cdn.photta.app/generated/gm_s4t5u6.jpg",
"thumbnail_url": "https://cdn.photta.app/generated/gm_s4t5u6-thumb.jpg",
"credits_used": 4,
"completed_at": "2026-04-10T16:08:18Z",
"duration_ms": 96000
},
{
"id": "gm_v7w8x9",
"status": "completed",
"output_url": "https://cdn.photta.app/generated/gm_v7w8x9.jpg",
"thumbnail_url": "https://cdn.photta.app/generated/gm_v7w8x9-thumb.jpg",
"credits_used": 4,
"completed_at": "2026-04-10T16:09:50Z",
"duration_ms": 92000
}
],
"created_at": "2026-04-10T16:05:00Z",
"completed_at": "2026-04-10T16:09:50Z"
},
"request_id": "req_gmbs002"
}Request-parametre
product_imagesType: array[object]Påkrævet
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.
angleType: 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
Værdier:straightbacksidestyleType: string
Applied to all images.
= 3d
Værdier:3dflat_laybackground_colorType: string
Applied to all images.
= white
Værdier:whitegraybeigeblackresolutionType: 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
Værdier:2K4Kaspect_ratioType: string
Applied to all images. Note: 1:1 is not available at 4K resolution — 1:1 combined with 4K returns 400.
= 3:4
Værdier:3:41:14:39:1616:9user_instructionType: 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_idType: 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.
Fejl
- 400
invalid_request_error - The request is malformed or contains invalid parameters.
- 401
authentication_error - The API key is missing, invalid, or expired.
- 402
insufficient_credits_error - Your account does not have enough credits.
- 404
not_found_error - The requested resource does not exist.
- 409
conflict_error - The request conflicts with current state — e.g. your concurrent-batch cap is reached.
- 429
rate_limit_error - Too many requests. Slow down and retry.Retry-After: 30
- 500
api_error - An internal server error occurred. Retry later.
Grænser
- 600 anmodninger i minuttet pr. API-nøgle (Fast vindue; grænsen er den samme på alle planer)
- En 429 indeholder Retry-After: 30 sekunder
- Op til 10 MB pr. billede
- Formater: JPEG, PNG, WebP
- Samtidige batches pr. plan: Free 1 · Hobby 2 · Seller 3 · Brand 4 · Studio 6
- Kun polling — API'et sender ingen webhooks.
Én anmodning, et helt stativ af tøj
Sammensæt arrayet, indsend én gang, poll batchet, download hvert element.
Trin 1
Generér en API-nøgle
Batch ghost mannequin bruger de samme legitimationsoplysninger og den samme credit-saldo som enhver anden Photta-funktion.
Trin 2
Sammensæt billed-arrayet
`product_images` modtager ét objekt pr. stykke tøj: `image` samt valgfri `back_image` og `image_side`. API-batchgrænsen er 5 billeder på Free og Hobby, 10 på Seller, 25 på Brand og 50 på Studio.
Trin 3
POST batchet
POST `/api/v1/ghost-mannequin/batch`. `angle`, `style`, `background_color`, `resolution` og `aspect_ratio` gælder for hvert element, og `user_instruction` tilføjer én note på op til 400 tegn til dem alle. Credits for hele batchet reserveres, før det første element renderes.
Trin 4
Poll batchet
GET `/api/v1/ghost-mannequin/batch/:id` hvert 3. sekund. Svarets body indeholder `total`, `completed`, `failed` og en opdeling pr. element, så du kan begynde at downloade, før det sidste stykke tøj er færdigt.
Trin 5
Download hvert resultat
Hvert fuldført element har sin egen `output_url`, `credits_used` og varighed. Elementer, der fejler, refunderer deres reserverede credits og rapporteres i `credits_refunded`.
Det samme endpoint i Node.js, Python og cURL
Node.js
Batch ghost mannequin-API i Node.js
Kald Phottas batch ghost mannequin-API fra en Node.js-backend med indbygget fetch. Ingen SDK påkrævet: gem din nøgle, indsend jobbet, foretag polling for resultatet.
LæsPython
Batch ghost mannequin-API i Python
Kald Phottas batch ghost mannequin-API i Python med requests-biblioteket. Tredive-linjers wrapper, async-venlig via httpx, fungerer i Django, FastAPI og Celery.
LæscURL
Batch ghost mannequin-API med cURL
Kald Phottas batch ghost mannequin-API direkte fra kommandolinjen med cURL. Indsend, poll, download — hvert kodestykke fungerer sammen med jq til scriptede pipelines.
Læs
Spørgsmål, udviklere stiller, før de kører batches
Hvad tilfører batch-endpointet?
Det accepterer et array af tøjfotos i én anmodning og behandler dem i baggrunden. Du får et batch-id til den samlede visning og et element-id pr. foto i stedet for at skulle spore dusinvis af separate jobs.
Hvor mange billeder kan der være i ét batch?
API-batchgrænsen er 5 billeder på Free og Hobby, 10 på Seller, 25 på Brand og 50 på Studio — fem gange dashboard-grænsen. Et batch, der er større end din plan tillader, returnerer 400.
Hvordan opkræves credits for et batch?
Hele batchet reserveres forud: billeder ganget med stykprisen, 4 credits ved 2K eller 5 ved 4K. Hvis saldoen ikke dækker reservationen, returnerer anmodningen 402, og intet renderes.
Hvad sker der, hvis ét element fejler?
Resten af batchet fortsætter. Batchets body rapporterer `failed` side om side med `completed`, og de reserverede credits for fejlslagne elementer føres tilbage i `credits_refunded`.
Hvor mange batches kan køre på samme tid?
Samtidige igangværende batches er begrænset af planen: Free 1, Hobby 2, Seller 3, Brand 4 og Studio 6. Indsendelse ud over grænsen returnerer 409 — poll det aktive batch, indtil det er afsluttet, og indsend derefter igen.
Hvordan poller jeg et batch?
GET `/api/v1/ghost-mannequin/batch/:id` hvert 3. sekund for den samlede status, eller poll ethvert enkelt element på den almindelige statussti til ghost mannequin, når du vil have detaljer pr. stykke tøj.
Relaterede funktioner
Funktioner
Ghost mannequin API til hollow-man-produktfotos
AI ghost mannequin-endpoint. Fjern mannequinen fra et tøjbillede og bevar indvendige detaljer. 3D eller flat-lay, batchbehandling, 4 credits ved 2K.
Se endpointetFunktioner
Virtuel try-on API til tøj
REST API, der placerer tøj på AI-mannequiner. Asynkront, 1.5–4 minutters generering, 5 credits ved 2K, 6 ved 4K. cURL-, Node.js- og Python-eksempler.
Se endpointetByg
Automatiser udtræk af ghost mannequin til dit katalog
Opskrift på natlig katalogautomatisering: hent gårsdagens produktopdateringer, send dem som batch til Phottas ghost-mannequin-API, lav polling på overordnet batch, gem data i din database.
Se endpointetSammenlign
Photta mod Pixazo — førsteparts-pipeline eller model-aggregator
Photta vs Pixazo sammenlignet: førsteparts modepipeline versus multivariant model-aggregator. Endpoints, latency, free tier og kompromiser. Indhentet 2026-04-19.
Se endpointetHurtig start
Første Photta-billede på under fem minutter.
Opret en konto, generer en API-nøgle, kør dit første cURL-kald, foretag polling indtil det er fuldført, gem resultatet. Fem trin, dokumenteret fra start til slut.
Se endpointetReference
Photta API-fejl
Den komplette liste over Photta API-fejltyper med deres statuskoder, strukturen på fejlsvaret, og hvilke fejl det kan betale sig at prøve igen.
Se endpointetReference
Photta API rate limits
Photta API-rate limit, dets vindue, Retry-After-headeren, polling-intervallet og lofterne for samtidighed pr. abonnement, alt sammen aflæst fra API-dokumentationen.
Se endpointet
Hvert tal på denne side stammer fra Photta API-dokumentationen · tjekket
Prøv API'et på fem minutter
Generér en Photta API-nøgle, indsæt cURL-kodestykket ovenfor, og du har dit første billede på en model, før kaffen er færdigbrygget.
- 1.5–4 min per image
- 4 credits ved 2K · 5 credits ved 4K
- async, polling
- 600 requests/min
- Bearer key