Funktion · Ghost mannequin
Ghost mannequin-API för hollow-man-produktfoton
I en mening
Phottas ghost mannequin-API tar ett foto på ett plagg på en docka och returnerar en osynlig docka-bild där plagginsidan har rekonstruerats. Välj stilen 3d eller flat_lay, POST:a, polla var 3:e sekund, ladda ner när den är completed.
- Typisk tid: 1.5–4 min
- Credits: 4 credits vid 2K · 5 credits vid 4K
- Bearbetning: asynkron, polling
- Gränser: 600 requests/min
- Autentisering: Bearer-nyckel
Varje siffra på den här sidan kommer från Photter API-dokumentationen · kontrollerad
RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/ghost-mannequin \
-H "Authorization: Bearer $PHOTTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front",
"angle": "side",
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, cream interior lining",
"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", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"product_image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front",
"angle": "side",
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, cream interior lining",
"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",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"product_image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front",
"angle": "side",
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, cream interior lining",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
},
)
data = res.json()["data"] # data["id"], data["status"]
I korthet
I korthet
- Endpoint
- POST /api/v1/ghost-mannequin
- Autentisering
- Bearer API-nyckel
- Bearbetning
- Asynkron — polla status-endpointen
- Typisk tid
- 1.5–4 min
- Credits
- 4 credits vid 2K · 5 credits vid 4K
- Bildförhållanden
- 3:4 · 1:1 · 4:3 · 9:16 · 16:9
- Indatagränser
- Upp till 10 MB per bild; JPEG, PNG, WebP
- Idempotent
- Nej
Request och response
Request
RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/ghost-mannequin \
-H "Authorization: Bearer $PHOTTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front",
"angle": "side",
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, cream interior lining",
"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", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"product_image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front",
"angle": "side",
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, cream interior lining",
"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",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"product_image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front",
"angle": "side",
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, cream interior lining",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
},
)
data = res.json()["data"] # data["id"], data["status"]202 Accepted / Completed
{
"data": {
"id": "gm_d4e5f6",
"status": "processing",
"style": "3d",
"angle": "side",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"credits_used": 4,
"created_at": "2026-04-10T16:00:00Z"
},
"request_id": "req_gm001"
}{
"data": {
"id": "gm_d4e5f6",
"status": "completed",
"style": "3d",
"angle": "side",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_url": "https://cdn.photta.app/generated/gm_d4e5f6.jpg",
"thumbnail_url": "https://cdn.photta.app/generated/gm_d4e5f6-thumb.jpg",
"credits_used": 4,
"created_at": "2026-04-10T16:00:00Z",
"completed_at": "2026-04-10T16:00:48Z",
"duration_ms": 48000
},
"request_id": "req_gm002"
}Request-parametrar
product_imageTyp: stringObligatorisk
URL or base64 data URI of the garment photo (front or back, on a mannequin or flat).
back_imageTyp: string
URL or base64 data URI of the opposite side — helps the AI reconstruct the interior of the garment for a more realistic 3D effect.
image_sideTyp: string
Which side product_image represents.
= front
Värden:frontbackangleTyp: string
Camera angle for the output. "side" is worth calling out: the side view is reconstructed from the front photo (plus the back photo when provided), giving you a third catalog view without a third photoshoot — and it works well even on textured garments (crochet, lace, embroidery).
= straight
Värden:straightbacksidestyleTyp: string
Output style: "3d" (ghost mannequin with 3D body shape) or "flat_lay" (garment laid flat, mannequin removed).
= 3d
Värden:3dflat_laybackground_colorTyp: string
Background color.
= white
Värden:whitegraybeigeblackresolutionTyp: string
Output resolution. "2K" costs 4 credits per image; "4K" costs 5 credits per image. 4K is produced natively in a single generation — 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ärden:2K4Kaspect_ratioTyp: string
Output aspect ratio. Note: 1:1 is not available at 4K resolution — 1:1 combined with 4K returns 400.
= 3:4
Värden:3:41:14:39:1616:9user_instructionTyp: string
Optional free-form note, 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_idTyp: string
Brand label UUID returned by the Brand Labels API. Applied to the generated garment when present. API v1 request fields use snake_case; use brand_label_id.
Fel
- 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 anrop per minut per API-nyckel (Fast fönster; gränsen är densamma på alla planer)
- En 429 innehåller Retry-After: 30 sekunder
- Upp till 10 MB per bild
- Format: JPEG, PNG, WebP
- Samtidiga batcher per plan: Free 1 · Hobby 2 · Seller 3 · Brand 4 · Studio 6
- Endast polling — API:et skickar inga webhooks.
Ett foto in, ett foto med osynlig docka ut
Ladda upp källan, välj stil, skicka, polla, ladda ner.
Steg 1
Generera en API-nyckel
Ghost mannequin använder samma inloggningsuppgifter som alla andra Photta-funktioner — en nyckel, ett kreditsaldo.
Steg 2
Ladda upp källfotot
Skicka en publik URL eller en base64-data-URI i `product_image`; lägg till `back_image` när du har en baksida. JPEG, PNG och WebP upp till 10 MB per bild.
Steg 3
POST:a ghost mannequin-jobbet
POST:a till `/api/v1/ghost-mannequin` med `product_image`, `style` (`3d` eller `flat_lay`) samt valfria `angle`, `background_color`, `resolution`. Polling är den enda signalen för slutförande — API:et skickar inga webhooks.
Steg 4
Polla tills jobbet är klart
Gör GET mot `/api/v1/ghost-mannequin/:id` var 3:e sekund tills `data.status` är `completed` eller `failed`; normal slutförandetid är 1.5 till 4 minuter.
Steg 5
Ladda ner och spara
Resultatet är en PNG där dockan tagits bort och plaggets insida rekonstruerats. Perfekt för PDP-ghostbilder, produktgallerier med 3D-känsla och flat-lay-inlägg.
Samma endpoint i Node.js, Python och cURL
Node.js
Ghost mannequin-API i Node.js
Anropa Phottas ghost mannequin-API från en Node.js-backend med inbyggd fetch. Ingen SDK krävs: lagra din nyckel, skicka in jobbet, polla efter resultatet.
LäsPython
Ghost mannequin-API i Python
Anropa Phottas ghost mannequin-API i Python med requests-biblioteket. Wrapper på trettio rader, async-vänlig via httpx, fungerar i Django, FastAPI och Celery.
LäscURL
Ghost mannequin-API med cURL
Anropa Phottas ghost mannequin-API direkt från skalet med cURL. Skicka, polla, ladda ner — alla kodavsnitt fungerar tillsammans med jq för skriptade pipelines.
Läs
Frågor utvecklare ställer innan de driftsätter ghost mannequin
Vad är fotografering med ghost mannequin?
En PDP-behandling där plagget ser ut att sväva på en osynlig kropp, vilket visar både form och inre konstruktion samtidigt. Historiskt sätts detta ihop från flera studiobilder; Phottas API skapar det i ett enda anrop från ett foto på docka.
Vad kostar ghost mannequin?
4 credits vid 2K, 5 credits vid 4K — en credit billigare på varje nivå jämfört med try-on. Misslyckade jobb återbetalas automatiskt.
Vad är skillnaden mellan 3D- och flat-lay-stil?
`3d`-stilen behåller dockans tredimensionella kroppsform — plagget behåller volym, axlar och ärmar framträder naturligt och insidan rekonstrueras. `flat_lay` plattar till plagget till en ren 2D-layout, perfekt för kapselkollektioner eller marknadsplatslistningar som kräver en konsekvent form framifrån.
Kan jag batch-bearbeta flera foton?
Ja. POST:a till `/api/v1/ghost-mannequin/batch` med en array av källbilder. Svaret ger dig ett batch-ID plus genererings-ID:n per objekt. Polla `/api/v1/ghost-mannequin/batch/:id` för en sammanlagd status eller varje objekt individuellt.
Bevarar den inre sömmar och etiketter?
Ja — modellen rekonstruerar plaggets insida (halsringningens insida, muddens insida, linningens foder) istället för att hallucinera en generisk yta. Märkeslappar och tryckta etiketter som syns på originalfotot behålls när det är möjligt.
Hur pollar jag efter resultatet?
Gör GET mot `/api/v1/ghost-mannequin/:id` var 3:e sekund. Batch-jobb pollar en överordnad endpoint som returnerar en sammanlagd status plus en uppdelning per objekt.
Relaterade funktioner
Funktioner
API för virtuell try-on för apparel
REST API som placerar kläder på AI-mannekänger. Asynkron, 1,5–4 minuters generering, 5 credits vid 2K, 6 vid 4K. Exempel för cURL, Node.js och Python.
Se endpointFunktioner
API för smyckes-try-on för halsband, ringar, armband och örhängen
Placera halsband, ringar, armband och örhängen på AI-modeller via REST. 5 credits vid 2K, inbyggda närbildsprovdockor, reflexmedveten rendering från Photta-dokumentationen.
Se endpointBygg
Automatisera ghost mannequin-extrahering för din katalog
Recept för nattlig katalogautomatisering: hämta gårdagens produktuppdateringar, skicka dem i batch till Phottas ghost mannequin-API, polla överordnad batch och spara i din databas.
Se endpointJämför
Photta mot Pixazo — egen pipeline eller modellaggregator
Photta vs Pixazo jämförda: first-party-pipeline för mode vs multi-modellaggregator. Endpoints, latens, gratisnivå och avvägningar. Hämtat 2026-04-19.
Se endpointSnabbstart
Första Photta-bilden på under fem minuter.
Skapa konto, generera en API-nyckel, kör ditt första cURL-anrop, polla tills det är klart, spara resultatet. Fem steg, dokumenterade från början till slut.
Se endpointReferens
Photta API-fel
Den fullständiga listan över feltyper i Photta API med deras statuskoder, strukturen på ett felmeddelande, och vilka fel som är värda att försöka igen.
Se endpointReferens
Photta API rate limits
Photta API:s rate limit, dess fönster, Retry-After-headern, polling-intervallet och taken för samtidighet per abonnemang, allt hämtat från API-dokumentationen.
Se endpoint
Varje siffra på den här sidan kommer från Photter API-dokumentationen · kontrollerad
Testa API:et på fem minuter
Generera en Photta API-nyckel, klistra in cURL-kodfragmentet ovan, och du har din första bild på en modell innan kaffet har bryggts klart.
- 1.5–4 min
- 4 credits vid 2K · 5 credits vid 4K
- asynkron, polling
- 600 requests/min
- Bearer-nyckel