← All integrations
API
For teams building their own UI. You call the same REST endpoints the SDK uses under the hood.
When to use the API
For teams building their own UI: mobile apps, server-rendered sites, or anything that does not want our JS bundle. You call the same REST endpoints the SDK uses under the hood.
Setup steps
Get keys
Get keys
Same as SDK:POST /partner/v1/admin/merchantsreturns your secret and publishable keys.Allow your domain
Allow your domain
Add your origin toallowed_originsorPARTNER_CORS_ORIGINS.Create shopper sessions (server only)
Create shopper sessions (server only)
POST /partner/v1/sessionsAuthorization: Bearer dress_sk_live_… { "external_user_ref": "customer-12345" } // Response: { "access_token": "…" } (JWT — safe for the client)Never send the secret key to the client; only pass the access token.
Sync catalog (server only)
Sync catalog (server only)
POST /partner/v1/productsAuthorization: Bearer dress_sk_live_… { "external_id": "SKU-001", "title": "Blue dress", "url": "https://yoursite.com/p/blue-dress", "image_urls": ["https://yoursite.com/img/1.jpg"], "gender": "women" } // Store the returned product_id for try-on callsCheck if the shopper has a model
Check if the shopper has a model
GET /user-model/currentAuthorization: Bearer <shopper access_token> // null or empty → they need onboarding firstModel creation
Model creation
Send the shopper to DressApp's model studio:
Embed model studioGET /embed/model-studio?access_token=<token>&partner_return=https://yoursite.com/returnOr build the URL from
GET /partner/v1/embed-config(publishable key) → usepublic_app_url+/onboarding?access_token=….Start a try-on
Start a try-on
POST /tryon/{product_id}?async=trueAuthorization: Bearer <shopper access_token> // Response (HTTP 202): { "job_id": "…" }Poll for the result
Poll for the result
GET /tryon/jobs/{job_id}Authorization: Bearer <shopper access_token> // When status is "completed", the response includes image URL(s)Alternative: register webhooks via
POST /partner/v1/webhooksfortryon.job.completed/tryon.job.failedand skip polling.Optional extras
Optional extras
- Try-on history:
GET /tryon/history- Usage / quota:
GET /partner/v1/merchants/me/usage- (secret key)
- Bill Gemini on your Google project:
PUT /partner/v1/integrations/google-api-key
Verify before launch
Verify before launch
HTTPS everywhere, secret key never in client code, one full test run end to end.