API reference
The complete REST contract, generated from the implementation.
Read the contract
The operation list, request schemas and response schemas below are generated from the API’s route registry and Go wire types. Download the OpenAPI 3.1 document to import it into your client generator or API tool. Replace the local server URL with your own deployed API.
Common conventions
- Bearer authentication uses operator or merchant/store keys as indicated per operation.
- All bodies are JSON objects; unknown and duplicate fields are rejected.
- Lists use limit (1–100) and cursor, returning data and optional next_cursor.
- IDs are opaque. Never derive tenant identity from a request body.
- PUT replaces the documented input fields; it is not a partial PATCH.
- The request body maximum is 256 KiB. API version: /v1.
Operations
Expand an endpoint for its scope, parameters, request and response contracts.
GET/healthzProcess health
Required scope: public. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
Responses
200- Success ·
Status 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/readyzDatabase readiness
Required scope: public. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
Responses
200- Success ·
Status 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/api-keysList API key metadata, never secrets
Required scope: admin. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
limit | query · optional | Minimum: 1. Maximum: 100. |
cursor | query · optional |
Responses
200- Success ·
KeyList 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/api-keysIssue a scoped API key (secret returned once)
Required scope: admin. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
Request body
{
"name": "Store server",
"scopes": [
"catalog",
"fit",
"events",
"analytics"
],
"store_id": "sto_example"
}Responses
201- Success ·
IssuedKey 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
DELETE/v1/api-keys/{key_id}Revoke an API key
Required scope: admin. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
key_id | path · required |
Responses
200- Success ·
Status 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/console/api-keysList seller API key metadata
Website backend only. Requires the console gateway secret and a seller session, not an integration API key.
| Parameter | Location | Details |
|---|---|---|
limit | query · optional | Minimum: 1. Maximum: 100. |
cursor | query · optional |
Responses
200- Success ·
KeyList 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/console/api-keysIssue a store-scoped integration key
Website backend only. Requires the console gateway secret and a seller session, not an integration API key.
Request body
{
"name": "Store server",
"scopes": [
"catalog",
"fit",
"events",
"analytics"
],
"store_id": "sto_example"
}Responses
201- Success ·
IssuedKey 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
DELETE/v1/console/api-keys/{key_id}Revoke a seller API key
Website backend only. Requires the console gateway secret and a seller session, not an integration API key.
| Parameter | Location | Details |
|---|---|---|
key_id | path · required |
Responses
200- Success ·
Status 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/console/loginSign in (website gateway only)
Website backend only. Returns a session token to be placed in an HttpOnly cookie; never forward it to browser JavaScript.
Request body
Responses
200- Success ·
ConsoleAuthenticated 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/console/logoutRevoke the current console session
Website backend only. Requires the console gateway secret and a seller session, not an integration API key.
Responses
200- Success ·
Status 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/console/meGet seller account and integration configuration
Website backend only. Requires the console gateway secret and a seller session, not an integration API key.
Responses
200- Success ·
ConsoleOverview 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/console/shopify/callbackValidate Shopify authorization callback
Website backend only. Requires the console gateway secret and a seller session, not an integration API key.
| Parameter | Location | Details |
|---|---|---|
shop | query · required | |
code | query · required | |
state | query · required | |
timestamp | query · required | |
hmac | query · required |
Responses
200- Success ·
ConsoleShopifyConnection 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/console/shopify/launchVerify a signed Shopify app launch (not authorization)
Website backend only. Verifies a fresh Shopify-signed app-launch query. Does not authorize a shop, create OAuth state or save a connection.
Request body
Responses
200- Success ·
ConsoleShopifyLaunch 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/console/signupCreate a seller account (website gateway only)
Website backend only. Returns a session token to be placed in an HttpOnly cookie; never forward it to browser JavaScript.
Request body
Responses
201- Success ·
ConsoleAuthenticated 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/console/storesList seller stores
Website backend only. Requires the console gateway secret and a seller session, not an integration API key.
| Parameter | Location | Details |
|---|---|---|
limit | query · optional | Minimum: 1. Maximum: 100. |
cursor | query · optional |
Responses
200- Success ·
StoreList 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/console/storesCreate a seller store
Website backend only. Requires the console gateway secret and a seller session, not an integration API key.
Responses
201- Success ·
Store 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
DELETE/v1/console/stores/{store_id}/shopifyRemove stored Shopify credentials
Website backend only. Requires the console gateway secret and a seller session, not an integration API key.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required |
Responses
200- Success ·
Status 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/console/stores/{store_id}/shopifyGet Shopify authorization status (not catalog sync)
Website backend only. Requires the console gateway secret and a seller session, not an integration API key.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required |
Responses
200- Success ·
ConsoleShopifyConnection 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/console/stores/{store_id}/shopify/startStart Shopify authorization
Website backend only. Requires the console gateway secret and a seller session, not an integration API key.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required |
Request body
Responses
200- Success ·
ConsoleShopifyStart 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/merchantGet the authenticated merchant
Required scope: admin. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
Responses
200- Success ·
Merchant 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
PUT/v1/merchantUpdate the authenticated merchant name
Required scope: admin. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
Responses
200- Success ·
Merchant 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/merchantsCreate a merchant and initial admin key (operator only)
Required scope: bootstrap. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
Responses
201- Success ·
MerchantCreated 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/openapi.jsonOpenAPI document
Required scope: public. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
Responses
200- Success ·
object 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/product-typesList supported product types and categories
Required scope: catalog. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
Responses
200- Success ·
ProductTypeList 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/statusAPI status
Required scope: public. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
Responses
200- Success ·
Status 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/storesList merchant stores
Required scope: admin. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
limit | query · optional | Minimum: 1. Maximum: 100. |
cursor | query · optional |
Responses
200- Success ·
StoreList 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/storesCreate a store
Required scope: admin. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
Responses
201- Success ·
Store 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/stores/{store_id}Get a store
Required scope: admin. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required |
Responses
200- Success ·
Store 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
PUT/v1/stores/{store_id}Update a store
Required scope: admin. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required |
Responses
200- Success ·
Store 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/stores/{store_id}/eventsList events including system-generated quiz events
Required scope: events. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
limit | query · optional | Minimum: 1. Maximum: 100. |
cursor | query · optional |
Responses
200- Success ·
EventList 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/stores/{store_id}/eventsIngest an idempotent customer or order outcome
Required scope: events. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required |
Request body
{
"external_id": "order-123-line-1-purchase",
"line_item_id": "line-1",
"occurred_at": "2026-09-20T12:00:00Z",
"order_id": "order-123",
"product_id": "prd_example",
"quantity": 1,
"session_id": "fit_example",
"source": "custom-store",
"type": "purchase",
"variant_id": "var_example"
}Responses
200- Identical event replay; original event returned ·
Event 201- Success ·
Event 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/stores/{store_id}/events/{event_id}Get an event
Required scope: events. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
event_id | path · required |
Responses
200- Success ·
Event 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/stores/{store_id}/fit-sessionsStart a session and freeze its chart/questionnaire
Required scope: fit. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required |
Request body
{
"color": "black",
"customer_reference": "opaque-customer-reference",
"product_id": "prd_example"
}Responses
201- Success ·
Session 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/stores/{store_id}/fit-sessions/{session_id}Get a session, answers and recommendation
Required scope: fit. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
session_id | path · required |
Responses
200- Success ·
Session 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/stores/{store_id}/fit-sessions/{session_id}/completeRecord acceptance, size override or decline
Required scope: fit. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
session_id | path · required |
Responses
200- Success ·
Session 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/stores/{store_id}/fit-sessions/{session_id}/next-questionAdaptive quiz: get the most informative next question, or done
Required scope: fit. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
session_id | path · required |
Request body
Responses
200- Success ·
NextQuestion 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/stores/{store_id}/fit-sessions/{session_id}/recommendationsSubmit answers and generate an immutable recommendation
Required scope: fit. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
session_id | path · required |
Request body
{
"answers": {
"measurements": {
"chest": 98
},
"preferred_fit": "regular",
"size_consistency": "consistent",
"usual_size": "M"
}
}Responses
200- Success ·
Recommendation 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
{
"algorithm_version": "metr-fit-2.0.0",
"chart_id": "cht_example",
"chart_revision": 1,
"confidence": 0.9,
"confidence_meaning": "uncalibrated_evidence_score",
"created_at": "2026-10-01T12:00:00Z",
"evidence": {
"chest": {
"body_cm": 98,
"chart_max_cm": 98,
"chart_min_cm": 98,
"source": "measurement"
},
"shoulders": {
"body_cm": 45,
"chart_max_cm": 45,
"chart_min_cm": 45,
"source": "measurement"
}
},
"explanation": "M best matches measurement, usual size against this chart.",
"fit": {
"chest": "within_range",
"shoulders": "within_range"
},
"id": "rec_example",
"method": "rules",
"probabilities": {
"L": 0.048,
"M": 0.904,
"S": 0.048
},
"recommended_size": "M",
"session_id": "fit_example",
"variant_ids": [
"var_medium"
],
"warnings": [
"Confidence is an uncalibrated evidence score, not a probability of fit."
]
}GET/v1/stores/{store_id}/metricsDescriptive session-cohort metrics (not causal uplift)
Required scope: analytics. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
from | query · optional | Session creation cohort, maximum 366 days. Defaults to the last 30 days. |
to | query · optional | Session creation cohort, maximum 366 days. Defaults to the last 30 days. |
Responses
200- Success ·
Metrics 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/stores/{store_id}/productsList products
Required scope: catalog. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
limit | query · optional | Minimum: 1. Maximum: 100. |
cursor | query · optional |
Responses
200- Success ·
ProductList 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/stores/{store_id}/productsCreate a product
Required scope: catalog. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required |
Request body
{
"external_id": "linen-shirt",
"garment_fit": "regular",
"gender": "unisex",
"product_type": "shirt",
"stretch": "none",
"title": "Linen shirt"
}Responses
201- Success ·
Product 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/stores/{store_id}/products/{product_id}Get a product
Required scope: catalog. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
product_id | path · required |
Responses
200- Success ·
Product 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
PUT/v1/stores/{store_id}/products/{product_id}Replace product fields
Required scope: catalog. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
product_id | path · required |
Request body
{
"external_id": "linen-shirt",
"garment_fit": "regular",
"gender": "unisex",
"product_type": "shirt",
"stretch": "none",
"title": "Linen shirt"
}Responses
200- Success ·
Product 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/stores/{store_id}/products/{product_id}/fit-questionnaireGet a product-specific questionnaire
Required scope: fit. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
product_id | path · required | |
color | query · optional | Optional exact variant color to restrict availability. |
Responses
200- Success ·
Questionnaire 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/stores/{store_id}/products/{product_id}/variantsList product variants
Required scope: catalog. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
product_id | path · required | |
limit | query · optional | Minimum: 1. Maximum: 100. |
cursor | query · optional |
Responses
200- Success ·
VariantList 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/stores/{store_id}/products/{product_id}/variantsCreate a variant
Required scope: catalog. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
product_id | path · required |
Request body
{
"available": true,
"color": "black",
"external_id": "linen-shirt-m",
"size": "M"
}Responses
201- Success ·
Variant 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/stores/{store_id}/products/{product_id}/variants/{variant_id}Get a variant
Required scope: catalog. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
product_id | path · required | |
variant_id | path · required |
Responses
200- Success ·
Variant 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
PUT/v1/stores/{store_id}/products/{product_id}/variants/{variant_id}Update variant external ID and availability
Required scope: catalog. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
product_id | path · required | |
variant_id | path · required |
Request body
{
"available": true,
"color": "black",
"external_id": "linen-shirt-m",
"size": "M"
}Responses
200- Success ·
Variant 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/stores/{store_id}/size-chartsList size charts
Required scope: catalog. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
limit | query · optional | Minimum: 1. Maximum: 100. |
cursor | query · optional |
Responses
200- Success ·
ChartList 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
POST/v1/stores/{store_id}/size-chartsCreate a size chart
Required scope: catalog. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required |
Request body
{
"basis": "garment",
"category": "tops",
"measurements": [
{
"method": "flat_width",
"name": "chest"
},
{
"method": "linear",
"name": "shoulders"
},
{
"method": "linear",
"name": "length"
}
],
"name": "Linen camp-collar shirt approved chart",
"rows": [
{
"measurements": {
"chest": {
"max": 50,
"min": 50
},
"length": {
"max": 68,
"min": 68
},
"shoulders": {
"max": 44,
"min": 44
}
},
"size": "S"
},
{
"measurements": {
"chest": {
"max": 52,
"min": 52
},
"length": {
"max": 70,
"min": 70
},
"shoulders": {
"max": 46,
"min": 46
}
},
"size": "M"
},
{
"measurements": {
"chest": {
"max": 54,
"min": 54
},
"length": {
"max": 72,
"min": 72
},
"shoulders": {
"max": 48,
"min": 48
}
},
"size": "L"
}
],
"unit": "cm",
"verified": true
}Responses
201- Success ·
Chart 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
GET/v1/stores/{store_id}/size-charts/{chart_id}Get a size chart
Required scope: catalog. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
chart_id | path · required |
Responses
200- Success ·
Chart 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
PUT/v1/stores/{store_id}/size-charts/{chart_id}Replace chart fields and increment its revision
Required scope: catalog. Admin keys may call all tenant routes. All store resources are scoped to the authenticated merchant and the store in the path.
| Parameter | Location | Details |
|---|---|---|
store_id | path · required | |
chart_id | path · required |
Request body
{
"basis": "garment",
"category": "tops",
"measurements": [
{
"method": "flat_width",
"name": "chest"
},
{
"method": "linear",
"name": "shoulders"
},
{
"method": "linear",
"name": "length"
}
],
"name": "Linen camp-collar shirt approved chart",
"rows": [
{
"measurements": {
"chest": {
"max": 50,
"min": 50
},
"length": {
"max": 68,
"min": 68
},
"shoulders": {
"max": 44,
"min": 44
}
},
"size": "S"
},
{
"measurements": {
"chest": {
"max": 52,
"min": 52
},
"length": {
"max": 70,
"min": 70
},
"shoulders": {
"max": 46,
"min": 46
}
},
"size": "M"
},
{
"measurements": {
"chest": {
"max": 54,
"min": 54
},
"length": {
"max": 72,
"min": 72
},
"shoulders": {
"max": 48,
"min": 48
}
},
"size": "L"
}
],
"unit": "cm",
"verified": true
}Responses
200- Success ·
Chart 400- Invalid JSON or query ·
ErrorEnvelope 401- Invalid or expired API key ·
ErrorEnvelope 403- Missing scope or wrong store restriction ·
ErrorEnvelope 404- Resource not found within tenant ·
ErrorEnvelope 405- Method not allowed ·
ErrorEnvelope 409- Conflict or non-identical replay ·
ErrorEnvelope 410- Fit session expired ·
ErrorEnvelope 413- Request body too large ·
ErrorEnvelope 415- Expected application/json ·
ErrorEnvelope 422- Validation failed or sizing abstained ·
ErrorEnvelope 429- Rate limited; Retry-After header gives seconds ·
ErrorEnvelope 500- Internal error ·
ErrorEnvelope 502- Upstream service unavailable ·
ErrorEnvelope 503- Dependency unavailable ·
ErrorEnvelope
Request and response schemas
Fields marked required appear in the contract. Optional body measurements remain optional even when the chart itself requires those areas.
Answers
| Field | Type | Description |
|---|---|---|
ageoptional | number | null | See the integration guide for usage. |
body_trackoptional | string | See the integration guide for usage. |
body_typeoptional | string | Optional visual proportions v1: 1 straight, 2 broader upper body, 3 fuller hips, 4 defined waist, 5 fuller middle, 6 fuller balanced proportions. Context only; not scored or converted to measurements. Allowed: 1, 2, 3, 4, 5, 6. |
chest_profileoptional | string | Allowed: narrow, average, broad. |
height_cmoptional | number | null | Optional height in cm for length-bearing charts. Does not infer body lengths. Minimum: 120. Maximum: 230. |
hip_profileoptional | string | Allowed: narrow, average, broad. |
lower_body_profileoptional | string | Allowed: balanced, fuller_hips, fuller_waist. |
measurementsoptional | object | Optional body measurements in cm, restricted to fields advertised by the questionnaire. Never send garment dimensions. |
preferred_fitoptional | string | Allowed: close, regular, loose. |
reference_sizeoptional | string | See the integration guide for usage. |
shoulder_profileoptional | string | Allowed: narrow, average, broad. |
silhouette_hipsoptional | string | Fashion sizing assets v1: asset stem and option number. Optional context only; no measurement or confidence derived from starter priors. Allowed: female_bottoms_hips_seat:1, female_bottoms_hips_seat:2, female_bottoms_hips_seat:3, female_bottoms_hips_seat:4, female_bottoms_hips_seat:5, female_bottoms_hips_seat:6, male_bottoms_hips_seat:1, male_bottoms_hips_seat:2, male_bottoms_hips_seat:3, male_bottoms_hips_seat:4, male_bottoms_hips_seat:5, male_bottoms_hips_seat:6. |
silhouette_shouldersoptional | string | Fashion sizing assets v1: asset stem and option number. Optional context only; no measurement or confidence derived from starter priors. Allowed: female_tops_shoulders:1, female_tops_shoulders:2, female_tops_shoulders:3, female_tops_shoulders:4, female_tops_shoulders:5, female_tops_shoulders:6, male_tops_shoulders:1, male_tops_shoulders:2, male_tops_shoulders:3, male_tops_shoulders:4, male_tops_shoulders:5, male_tops_shoulders:6. |
silhouette_thighoptional | string | Fashion sizing assets v1: asset stem and option number. Optional context only; no measurement or confidence derived from starter priors. Allowed: female_bottoms_thigh_legs:1, female_bottoms_thigh_legs:2, female_bottoms_thigh_legs:3, female_bottoms_thigh_legs:4, female_bottoms_thigh_legs:5, female_bottoms_thigh_legs:6, male_bottoms_thigh_legs:1, male_bottoms_thigh_legs:2, male_bottoms_thigh_legs:3, male_bottoms_thigh_legs:4, male_bottoms_thigh_legs:5, male_bottoms_thigh_legs:6. |
silhouette_waistoptional | string | Fashion sizing assets v1: asset stem and option number. Optional context only; no measurement or confidence derived from starter priors. Allowed: female_tops_waist_stomach:1, female_tops_waist_stomach:2, female_tops_waist_stomach:3, female_tops_waist_stomach:4, female_tops_waist_stomach:5, female_tops_waist_stomach:6, male_tops_waist_stomach:1, male_tops_waist_stomach:2, male_tops_waist_stomach:3, male_tops_waist_stomach:4, male_tops_waist_stomach:5, male_tops_waist_stomach:6. |
size_consistencyoptional | string | Allowed: sometimes_smaller, consistent, sometimes_larger. |
upper_body_profileoptional | string | Allowed: balanced, fuller_chest, fuller_waist. |
usual_sizeoptional | string | See the integration guide for usage. |
waist_profileoptional | string | Allowed: narrow, average, broad. |
weight_kgoptional | number | null | Optional adult weight in kg for apparel. Context only: not used in size scoring or confidence. Minimum: 30. Maximum: 300. |
Chart
| Field | Type | Description |
|---|---|---|
basisrequired | string | Allowed: body, garment. |
brandoptional | string | See the integration guide for usage. |
categoryrequired | string | Allowed: tops, bottoms, one_piece, footwear. |
created_atrequired | date-time | See the integration guide for usage. |
idrequired | string | See the integration guide for usage. |
measurementsrequired | Measurement[] | Minimum items: 1. Maximum items: 8. |
merchant_idrequired | string | See the integration guide for usage. |
namerequired | string | See the integration guide for usage. |
revisionrequired | integer | See the integration guide for usage. |
rowsrequired | SizeRow[] | Ordered smallest to largest. Every row must contain every declared measurement. Labels map exactly to variant sizes. Minimum items: 1. Maximum items: 30. |
share_as_referenceoptional | boolean | See the integration guide for usage. |
store_idrequired | string | See the integration guide for usage. |
unitrequired | string | Allowed: cm, in. |
updated_atrequired | date-time | See the integration guide for usage. |
verifiedrequired | boolean | Merchant confirmation that measurements, units, basis and methods were reviewed. Required true for recommendations. |
ChartInput
| Field | Type | Description |
|---|---|---|
basisrequired | string | Allowed: body, garment. |
brandoptional | string | See the integration guide for usage. |
categoryrequired | string | Allowed: tops, bottoms, one_piece, footwear. |
measurementsrequired | Measurement[] | Minimum items: 1. Maximum items: 8. |
namerequired | string | See the integration guide for usage. |
rowsrequired | SizeRow[] | Ordered smallest to largest. Every row must contain every declared measurement. Labels map exactly to variant sizes. Minimum items: 1. Maximum items: 30. |
share_as_referenceoptional | boolean | See the integration guide for usage. |
unitrequired | string | Allowed: cm, in. |
verifiedrequired | boolean | Merchant confirmation that measurements, units, basis and methods were reviewed. Required true for recommendations. |
ChartList
| Field | Type | Description |
|---|---|---|
datarequired | Chart[] | See the integration guide for usage. |
next_cursoroptional | string | See the integration guide for usage. |
CompletionInput
| Field | Type | Description |
|---|---|---|
chosen_variant_idoptional | string | See the integration guide for usage. |
decisionrequired | string | Allowed: accepted, overridden, declined. |
ConsoleAccount
| Field | Type | Description |
|---|---|---|
created_atrequired | date-time | See the integration guide for usage. |
emailrequired | email | Maximum length: 254. |
idrequired | string | See the integration guide for usage. |
merchant_idrequired | string | See the integration guide for usage. |
ConsoleAuthenticated
| Field | Type | Description |
|---|---|---|
accountrequired | ConsoleAccount | See the integration guide for usage. |
expires_atrequired | date-time | See the integration guide for usage. |
session_tokenrequired | string | Website-server-only session token. Store in an HttpOnly cookie, never browser JSON. |
ConsoleLogin
| Field | Type | Description |
|---|---|---|
emailrequired | email | Maximum length: 254. |
passwordrequired | string | At least 12 characters and at most 72 UTF-8 bytes. |
ConsoleOverview
| Field | Type | Description |
|---|---|---|
accountrequired | ConsoleAccount | See the integration guide for usage. |
merchantrequired | Merchant | See the integration guide for usage. |
shopify_enabledrequired | boolean | See the integration guide for usage. |
ConsoleShopifyConnection
| Field | Type | Description |
|---|---|---|
connected_atrequired | date-time | See the integration guide for usage. |
expires_atoptional | date-time | null | See the integration guide for usage. |
scopesrequired | string | See the integration guide for usage. |
shoprequired | string | See the integration guide for usage. |
statusrequired | string | See the integration guide for usage. |
store_idrequired | string | See the integration guide for usage. |
ConsoleShopifyLaunch
| Field | Type | Description |
|---|---|---|
shoprequired | string | See the integration guide for usage. |
ConsoleShopifyLaunchInput
| Field | Type | Description |
|---|---|---|
queryrequired | string | Original Shopify-signed app-launch query without a leading question mark. Never log it or accept an unsigned shop override. Maximum length: 2000. |
ConsoleShopifyStart
| Field | Type | Description |
|---|---|---|
authorization_urlrequired | string | See the integration guide for usage. |
ConsoleShopifyStartInput
| Field | Type | Description |
|---|---|---|
launch_queryoptional | string | Original Shopify-signed app-launch query without a leading question mark. Never log it or accept an unsigned shop override. Maximum length: 2000. |
ConsoleSignup
| Field | Type | Description |
|---|---|---|
companyrequired | string | Maximum length: 120. |
emailrequired | email | Maximum length: 254. |
passwordrequired | string | At least 12 characters and at most 72 UTF-8 bytes. |
ErrorEnvelope
| Field | Type | Description |
|---|---|---|
errorrequired | Problem | See the integration guide for usage. |
Estimate
| Field | Type | Description |
|---|---|---|
probabilitiesrequired | object | See the integration guide for usage. |
sizerequired | string | Maximum length: 32. |
Event
| Field | Type | Description |
|---|---|---|
customer_referenceoptional | string | Maximum length: 128. |
external_idrequired | string | Maximum length: 128. |
idrequired | string | See the integration guide for usage. |
line_item_idoptional | string | Maximum length: 128. |
merchant_idrequired | string | See the integration guide for usage. |
occurred_atrequired | date-time | See the integration guide for usage. |
order_idoptional | string | Maximum length: 128. |
product_idrequired | string | See the integration guide for usage. |
quantityrequired | integer | Minimum: 1. Maximum: 100. |
reasonoptional | string | See the integration guide for usage. |
received_atrequired | date-time | See the integration guide for usage. |
session_idoptional | string | See the integration guide for usage. |
sourcerequired | string | See the integration guide for usage. |
store_idrequired | string | See the integration guide for usage. |
typerequired | string | See the integration guide for usage. |
variant_idoptional | string | See the integration guide for usage. |
EventInput
| Field | Type | Description |
|---|---|---|
customer_referenceoptional | string | Maximum length: 128. |
external_idrequired | string | Maximum length: 128. |
line_item_idoptional | string | Maximum length: 128. |
occurred_atrequired | date-time | See the integration guide for usage. |
order_idoptional | string | Maximum length: 128. |
product_idrequired | string | See the integration guide for usage. |
quantityrequired | integer | Minimum: 1. Maximum: 100. |
reasonoptional | string | See the integration guide for usage. |
session_idoptional | string | See the integration guide for usage. |
sourcerequired | string | See the integration guide for usage. |
typerequired | string | Allowed: fit_viewed, add_to_cart, checkout_started, purchase, return_requested, size_exchange, item_kept. |
variant_idoptional | string | See the integration guide for usage. |
EventList
| Field | Type | Description |
|---|---|---|
datarequired | Event[] | See the integration guide for usage. |
next_cursoroptional | string | See the integration guide for usage. |
Evidence
| Field | Type | Description |
|---|---|---|
body_cmoptional | number | null | See the integration guide for usage. |
chart_max_cmrequired | number | See the integration guide for usage. |
chart_min_cmrequired | number | See the integration guide for usage. |
estimate_cmoptional | number | null | See the integration guide for usage. |
sd_cmoptional | number | null | See the integration guide for usage. |
sourcerequired | string | See the integration guide for usage. |
IssuedKey
| Field | Type | Description |
|---|---|---|
keyrequired | Key | See the integration guide for usage. |
secretrequired | string | See the integration guide for usage. |
Key
| Field | Type | Description |
|---|---|---|
created_atrequired | date-time | See the integration guide for usage. |
expires_atoptional | date-time | null | See the integration guide for usage. |
idrequired | string | See the integration guide for usage. |
merchant_idrequired | string | See the integration guide for usage. |
namerequired | string | See the integration guide for usage. |
prefixrequired | string | See the integration guide for usage. |
revoked_atoptional | date-time | null | See the integration guide for usage. |
scopesrequired | string[] | See the integration guide for usage. |
store_idoptional | string | See the integration guide for usage. |
KeyInput
| Field | Type | Description |
|---|---|---|
expires_atoptional | date-time | null | See the integration guide for usage. |
namerequired | string | See the integration guide for usage. |
scopesrequired | string[] | See the integration guide for usage. |
store_idoptional | string | See the integration guide for usage. |
KeyList
| Field | Type | Description |
|---|---|---|
datarequired | Key[] | See the integration guide for usage. |
next_cursoroptional | string | See the integration guide for usage. |
Measurement
| Field | Type | Description |
|---|---|---|
methodrequired | string | Allowed: circumference, flat_width, linear. |
namerequired | string | See the integration guide for usage. |
Merchant
| Field | Type | Description |
|---|---|---|
created_atrequired | date-time | See the integration guide for usage. |
idrequired | string | See the integration guide for usage. |
namerequired | string | See the integration guide for usage. |
MerchantCreated
MerchantInput
| Field | Type | Description |
|---|---|---|
namerequired | string | See the integration guide for usage. |
Metrics
| Field | Type | Description |
|---|---|---|
exchange_for_size_raterequired | number | null | See the integration guide for usage. |
fit_assisted_conversion_raterequired | number | null | See the integration guide for usage. |
fromrequired | date-time | See the integration guide for usage. |
interpretationrequired | string | See the integration guide for usage. |
kept_after_recommendation_raterequired | number | null | See the integration guide for usage. |
kept_linesrequired | integer | See the integration guide for usage. |
observed_throughrequired | date-time | See the integration guide for usage. |
purchased_linesrequired | integer | See the integration guide for usage. |
quiz_completion_raterequired | number | null | See the integration guide for usage. |
recommendation_acceptance_raterequired | number | null | See the integration guide for usage. |
recommendation_override_raterequired | number | null | See the integration guide for usage. |
sessions_acceptedrequired | integer | See the integration guide for usage. |
sessions_overriddenrequired | integer | See the integration guide for usage. |
sessions_purchasedrequired | integer | See the integration guide for usage. |
sessions_recommendedrequired | integer | See the integration guide for usage. |
sessions_startedrequired | integer | See the integration guide for usage. |
size_exchange_linesrequired | integer | See the integration guide for usage. |
size_related_return_raterequired | number | null | See the integration guide for usage. |
size_return_linesrequired | integer | See the integration guide for usage. |
torequired | date-time | See the integration guide for usage. |
NextQuestion
| Field | Type | Description |
|---|---|---|
askedrequired | integer | See the integration guide for usage. |
donerequired | boolean | See the integration guide for usage. |
estimateoptional | Estimate | null | See the integration guide for usage. |
questionoptional | Question | null | See the integration guide for usage. |
NextQuestionInput
| Field | Type | Description |
|---|---|---|
answersrequired | Answers | See the integration guide for usage. |
skippedoptional | string[] | See the integration guide for usage. |
Problem
| Field | Type | Description |
|---|---|---|
coderequired | string | See the integration guide for usage. |
messagerequired | string | See the integration guide for usage. |
request_idrequired | string | See the integration guide for usage. |
Product
| Field | Type | Description |
|---|---|---|
created_atrequired | date-time | See the integration guide for usage. |
external_idrequired | string | Maximum length: 128. |
garment_fitrequired | string | Allowed: fitted, regular, relaxed, oversized. |
genderrequired | string | Allowed: women, men, unisex. |
idrequired | string | See the integration guide for usage. |
merchant_idrequired | string | See the integration guide for usage. |
product_typerequired | string | See the integration guide for usage. |
size_chart_idoptional | string | See the integration guide for usage. |
store_idrequired | string | See the integration guide for usage. |
stretchrequired | string | Allowed: none, moderate, high. |
titlerequired | string | See the integration guide for usage. |
updated_atrequired | date-time | See the integration guide for usage. |
ProductInput
| Field | Type | Description |
|---|---|---|
external_idrequired | string | Maximum length: 128. |
garment_fitrequired | string | Allowed: fitted, regular, relaxed, oversized. |
genderrequired | string | Allowed: women, men, unisex. |
product_typerequired | string | See the integration guide for usage. |
size_chart_idoptional | string | See the integration guide for usage. |
stretchrequired | string | Allowed: none, moderate, high. |
titlerequired | string | See the integration guide for usage. |
ProductList
| Field | Type | Description |
|---|---|---|
datarequired | Product[] | See the integration guide for usage. |
next_cursoroptional | string | See the integration guide for usage. |
ProductType
| Field | Type | Description |
|---|---|---|
categoryrequired | string | Allowed: tops, bottoms, one_piece, footwear, unsupported. |
idrequired | string | See the integration guide for usage. |
labelrequired | string | See the integration guide for usage. |
ProductTypeList
| Field | Type | Description |
|---|---|---|
datarequired | ProductType[] | See the integration guide for usage. |
next_cursoroptional | string | See the integration guide for usage. |
Question
| Field | Type | Description |
|---|---|---|
helpoptional | string | See the integration guide for usage. |
idrequired | string | See the integration guide for usage. |
labelrequired | string | See the integration guide for usage. |
maxoptional | number | null | See the integration guide for usage. |
minoptional | number | null | See the integration guide for usage. |
option_labelsoptional | object | See the integration guide for usage. |
optionsoptional | string[] | See the integration guide for usage. |
requiredrequired | boolean | See the integration guide for usage. |
sectionoptional | string | Allowed: usual_size, body_profile, height_weight, fit_preference, measurements. |
typerequired | string | See the integration guide for usage. |
unitoptional | string | Allowed: cm, in, kg. |
Questionnaire
| Field | Type | Description |
|---|---|---|
available_sizesrequired | string[] | See the integration guide for usage. |
categoryrequired | string | Allowed: tops, bottoms, one_piece, footwear. |
chart_idrequired | string | See the integration guide for usage. |
chart_revisionrequired | integer | See the integration guide for usage. |
product_idrequired | string | See the integration guide for usage. |
questionsrequired | Question[] | See the integration guide for usage. |
versionrequired | string | See the integration guide for usage. |
Range
| Field | Type | Description |
|---|---|---|
maxrequired | number | See the integration guide for usage. |
minrequired | number | See the integration guide for usage. |
Recommendation
| Field | Type | Description |
|---|---|---|
algorithm_versionrequired | string | See the integration guide for usage. |
chart_idrequired | string | See the integration guide for usage. |
chart_revisionrequired | integer | See the integration guide for usage. |
confidencerequired | number | Uncalibrated evidence score, never a probability or accuracy claim. Minimum: 0. Maximum: 1. |
confidence_meaningrequired | string | See the integration guide for usage. |
created_atrequired | date-time | See the integration guide for usage. |
evidencerequired | object | See the integration guide for usage. |
explanationrequired | string | See the integration guide for usage. |
fitrequired | object | See the integration guide for usage. |
idrequired | string | See the integration guide for usage. |
methodrequired | string | Allowed: circumference, flat_width, linear. |
probabilitiesrequired | object | See the integration guide for usage. |
recommended_sizerequired | string | See the integration guide for usage. |
session_idrequired | string | See the integration guide for usage. |
variant_idsrequired | string[] | See the integration guide for usage. |
warningsrequired | string[] | See the integration guide for usage. |
RecommendationInput
| Field | Type | Description |
|---|---|---|
answersrequired | Answers | See the integration guide for usage. |
Session
| Field | Type | Description |
|---|---|---|
answersoptional | Answers | null | See the integration guide for usage. |
chosen_variant_idoptional | string | See the integration guide for usage. |
coloroptional | string | Maximum length: 80. |
completed_atoptional | date-time | null | See the integration guide for usage. |
created_atrequired | date-time | See the integration guide for usage. |
customer_referenceoptional | string | Maximum length: 128. |
decisionoptional | string | Allowed: accepted, overridden, declined. |
expires_atrequired | date-time | See the integration guide for usage. |
idrequired | string | See the integration guide for usage. |
merchant_idrequired | string | See the integration guide for usage. |
product_idrequired | string | See the integration guide for usage. |
questionnairerequired | Questionnaire | See the integration guide for usage. |
recommendationoptional | Recommendation | null | See the integration guide for usage. |
statusrequired | string | See the integration guide for usage. |
store_idrequired | string | See the integration guide for usage. |
SessionInput
| Field | Type | Description |
|---|---|---|
coloroptional | string | Maximum length: 80. |
customer_referenceoptional | string | Maximum length: 128. |
product_idrequired | string | See the integration guide for usage. |
SizeRow
| Field | Type | Description |
|---|---|---|
measurementsrequired | object | See the integration guide for usage. |
sizerequired | string | Maximum length: 32. |
Status
| Field | Type | Description |
|---|---|---|
statusrequired | string | See the integration guide for usage. |
Store
| Field | Type | Description |
|---|---|---|
created_atrequired | date-time | See the integration guide for usage. |
domainrequired | string | See the integration guide for usage. |
idrequired | string | See the integration guide for usage. |
merchant_idrequired | string | See the integration guide for usage. |
namerequired | string | See the integration guide for usage. |
StoreInput
| Field | Type | Description |
|---|---|---|
domainrequired | string | See the integration guide for usage. |
namerequired | string | See the integration guide for usage. |
StoreList
| Field | Type | Description |
|---|---|---|
datarequired | Store[] | See the integration guide for usage. |
next_cursoroptional | string | See the integration guide for usage. |
Variant
| Field | Type | Description |
|---|---|---|
availablerequired | boolean | See the integration guide for usage. |
coloroptional | string | Maximum length: 80. |
created_atrequired | date-time | See the integration guide for usage. |
external_idrequired | string | Maximum length: 128. |
idrequired | string | See the integration guide for usage. |
merchant_idrequired | string | See the integration guide for usage. |
product_idrequired | string | See the integration guide for usage. |
sizerequired | string | Maximum length: 32. |
store_idrequired | string | See the integration guide for usage. |
VariantInput
| Field | Type | Description |
|---|---|---|
availablerequired | boolean | See the integration guide for usage. |
coloroptional | string | Maximum length: 80. |
external_idrequired | string | Maximum length: 128. |
sizerequired | string | Maximum length: 32. |
VariantList
| Field | Type | Description |
|---|---|---|
datarequired | Variant[] | See the integration guide for usage. |
next_cursoroptional | string | See the integration guide for usage. |