Metr Fit / API V1

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.

ParameterLocationDetails
limitquery · optional Minimum: 1. Maximum: 100.
cursorquery · 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

KeyInput

{
  "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.

ParameterLocationDetails
key_idpath · 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.

ParameterLocationDetails
limitquery · optional Minimum: 1. Maximum: 100.
cursorquery · 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

KeyInput

{
  "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.

ParameterLocationDetails
key_idpath · 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

ConsoleLogin

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.

ParameterLocationDetails
shopquery · required
codequery · required
statequery · required
timestampquery · required
hmacquery · required

Responses

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.

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

ConsoleSignup

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.

ParameterLocationDetails
limitquery · optional Minimum: 1. Maximum: 100.
cursorquery · 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.

Request body

StoreInput

{
  "domain": "https://shop.example.com",
  "name": "Example Store"
}

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.

ParameterLocationDetails
store_idpath · 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.

ParameterLocationDetails
store_idpath · required

Responses

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.

ParameterLocationDetails
store_idpath · required

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.

Request body

MerchantInput

{
  "name": "Example Fashion"
}

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.

Request body

MerchantInput

{
  "name": "Example Fashion"
}

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.

ParameterLocationDetails
limitquery · optional Minimum: 1. Maximum: 100.
cursorquery · 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.

Request body

StoreInput

{
  "domain": "https://shop.example.com",
  "name": "Example Store"
}

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.

ParameterLocationDetails
store_idpath · 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.

ParameterLocationDetails
store_idpath · required

Request body

StoreInput

{
  "domain": "https://shop.example.com",
  "name": "Example Store"
}

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.

ParameterLocationDetails
store_idpath · required
limitquery · optional Minimum: 1. Maximum: 100.
cursorquery · 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.

ParameterLocationDetails
store_idpath · required

Request body

EventInput

{
  "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.

ParameterLocationDetails
store_idpath · required
event_idpath · 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.

ParameterLocationDetails
store_idpath · required

Request body

SessionInput

{
  "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.

ParameterLocationDetails
store_idpath · required
session_idpath · 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.

ParameterLocationDetails
store_idpath · required
session_idpath · required

Request body

CompletionInput

{
  "chosen_variant_id": "var_example",
  "decision": "accepted"
}

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.

ParameterLocationDetails
store_idpath · required
session_idpath · required

Request body

NextQuestionInput

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.

ParameterLocationDetails
store_idpath · required
session_idpath · required

Request body

RecommendationInput

{
  "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.

ParameterLocationDetails
store_idpath · required
fromquery · optionalSession creation cohort, maximum 366 days. Defaults to the last 30 days.
toquery · optionalSession 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.

ParameterLocationDetails
store_idpath · required
limitquery · optional Minimum: 1. Maximum: 100.
cursorquery · 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.

ParameterLocationDetails
store_idpath · required

Request body

ProductInput

{
  "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.

ParameterLocationDetails
store_idpath · required
product_idpath · 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.

ParameterLocationDetails
store_idpath · required
product_idpath · required

Request body

ProductInput

{
  "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.

ParameterLocationDetails
store_idpath · required
product_idpath · required
colorquery · optionalOptional 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.

ParameterLocationDetails
store_idpath · required
product_idpath · required
limitquery · optional Minimum: 1. Maximum: 100.
cursorquery · 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.

ParameterLocationDetails
store_idpath · required
product_idpath · required

Request body

VariantInput

{
  "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.

ParameterLocationDetails
store_idpath · required
product_idpath · required
variant_idpath · 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.

ParameterLocationDetails
store_idpath · required
product_idpath · required
variant_idpath · required

Request body

VariantInput

{
  "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.

ParameterLocationDetails
store_idpath · required
limitquery · optional Minimum: 1. Maximum: 100.
cursorquery · 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.

ParameterLocationDetails
store_idpath · required

Request body

ChartInput

{
  "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.

ParameterLocationDetails
store_idpath · required
chart_idpath · 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.

ParameterLocationDetails
store_idpath · required
chart_idpath · required

Request body

ChartInput

{
  "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

FieldTypeDescription
ageoptionalnumber | nullSee the integration guide for usage.
body_trackoptionalstringSee the integration guide for usage.
body_typeoptionalstringOptional 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_profileoptionalstringAllowed: narrow, average, broad.
height_cmoptionalnumber | nullOptional height in cm for length-bearing charts. Does not infer body lengths. Minimum: 120. Maximum: 230.
hip_profileoptionalstringAllowed: narrow, average, broad.
lower_body_profileoptionalstringAllowed: balanced, fuller_hips, fuller_waist.
measurementsoptionalobjectOptional body measurements in cm, restricted to fields advertised by the questionnaire. Never send garment dimensions.
preferred_fitoptionalstringAllowed: close, regular, loose.
reference_sizeoptionalstringSee the integration guide for usage.
shoulder_profileoptionalstringAllowed: narrow, average, broad.
silhouette_hipsoptionalstringFashion 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_shouldersoptionalstringFashion 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_thighoptionalstringFashion 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_waistoptionalstringFashion 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_consistencyoptionalstringAllowed: sometimes_smaller, consistent, sometimes_larger.
upper_body_profileoptionalstringAllowed: balanced, fuller_chest, fuller_waist.
usual_sizeoptionalstringSee the integration guide for usage.
waist_profileoptionalstringAllowed: narrow, average, broad.
weight_kgoptionalnumber | nullOptional adult weight in kg for apparel. Context only: not used in size scoring or confidence. Minimum: 30. Maximum: 300.

Chart

FieldTypeDescription
basisrequiredstringAllowed: body, garment.
brandoptionalstringSee the integration guide for usage.
categoryrequiredstringAllowed: tops, bottoms, one_piece, footwear.
created_atrequireddate-timeSee the integration guide for usage.
idrequiredstringSee the integration guide for usage.
measurementsrequiredMeasurement[]Minimum items: 1. Maximum items: 8.
merchant_idrequiredstringSee the integration guide for usage.
namerequiredstringSee the integration guide for usage.
revisionrequiredintegerSee the integration guide for usage.
rowsrequiredSizeRow[]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_referenceoptionalbooleanSee the integration guide for usage.
store_idrequiredstringSee the integration guide for usage.
unitrequiredstringAllowed: cm, in.
updated_atrequireddate-timeSee the integration guide for usage.
verifiedrequiredbooleanMerchant confirmation that measurements, units, basis and methods were reviewed. Required true for recommendations.

ChartInput

FieldTypeDescription
basisrequiredstringAllowed: body, garment.
brandoptionalstringSee the integration guide for usage.
categoryrequiredstringAllowed: tops, bottoms, one_piece, footwear.
measurementsrequiredMeasurement[]Minimum items: 1. Maximum items: 8.
namerequiredstringSee the integration guide for usage.
rowsrequiredSizeRow[]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_referenceoptionalbooleanSee the integration guide for usage.
unitrequiredstringAllowed: cm, in.
verifiedrequiredbooleanMerchant confirmation that measurements, units, basis and methods were reviewed. Required true for recommendations.

ChartList

FieldTypeDescription
datarequiredChart[]See the integration guide for usage.
next_cursoroptionalstringSee the integration guide for usage.

CompletionInput

FieldTypeDescription
chosen_variant_idoptionalstringSee the integration guide for usage.
decisionrequiredstringAllowed: accepted, overridden, declined.

ConsoleAccount

FieldTypeDescription
created_atrequireddate-timeSee the integration guide for usage.
emailrequiredemailMaximum length: 254.
idrequiredstringSee the integration guide for usage.
merchant_idrequiredstringSee the integration guide for usage.

ConsoleAuthenticated

FieldTypeDescription
accountrequiredConsoleAccountSee the integration guide for usage.
expires_atrequireddate-timeSee the integration guide for usage.
session_tokenrequiredstringWebsite-server-only session token. Store in an HttpOnly cookie, never browser JSON.

ConsoleLogin

FieldTypeDescription
emailrequiredemailMaximum length: 254.
passwordrequiredstringAt least 12 characters and at most 72 UTF-8 bytes.

ConsoleOverview

FieldTypeDescription
accountrequiredConsoleAccountSee the integration guide for usage.
merchantrequiredMerchantSee the integration guide for usage.
shopify_enabledrequiredbooleanSee the integration guide for usage.

ConsoleShopifyConnection

FieldTypeDescription
connected_atrequireddate-timeSee the integration guide for usage.
expires_atoptionaldate-time | nullSee the integration guide for usage.
scopesrequiredstringSee the integration guide for usage.
shoprequiredstringSee the integration guide for usage.
statusrequiredstringSee the integration guide for usage.
store_idrequiredstringSee the integration guide for usage.

ConsoleShopifyLaunch

FieldTypeDescription
shoprequiredstringSee the integration guide for usage.

ConsoleShopifyLaunchInput

FieldTypeDescription
queryrequiredstringOriginal Shopify-signed app-launch query without a leading question mark. Never log it or accept an unsigned shop override. Maximum length: 2000.

ConsoleShopifyStart

FieldTypeDescription
authorization_urlrequiredstringSee the integration guide for usage.

ConsoleShopifyStartInput

FieldTypeDescription
launch_queryoptionalstringOriginal Shopify-signed app-launch query without a leading question mark. Never log it or accept an unsigned shop override. Maximum length: 2000.

ConsoleSignup

FieldTypeDescription
companyrequiredstringMaximum length: 120.
emailrequiredemailMaximum length: 254.
passwordrequiredstringAt least 12 characters and at most 72 UTF-8 bytes.

ErrorEnvelope

FieldTypeDescription
errorrequiredProblemSee the integration guide for usage.

Estimate

FieldTypeDescription
probabilitiesrequiredobjectSee the integration guide for usage.
sizerequiredstringMaximum length: 32.

Event

FieldTypeDescription
customer_referenceoptionalstringMaximum length: 128.
external_idrequiredstringMaximum length: 128.
idrequiredstringSee the integration guide for usage.
line_item_idoptionalstringMaximum length: 128.
merchant_idrequiredstringSee the integration guide for usage.
occurred_atrequireddate-timeSee the integration guide for usage.
order_idoptionalstringMaximum length: 128.
product_idrequiredstringSee the integration guide for usage.
quantityrequiredintegerMinimum: 1. Maximum: 100.
reasonoptionalstringSee the integration guide for usage.
received_atrequireddate-timeSee the integration guide for usage.
session_idoptionalstringSee the integration guide for usage.
sourcerequiredstringSee the integration guide for usage.
store_idrequiredstringSee the integration guide for usage.
typerequiredstringSee the integration guide for usage.
variant_idoptionalstringSee the integration guide for usage.

EventInput

FieldTypeDescription
customer_referenceoptionalstringMaximum length: 128.
external_idrequiredstringMaximum length: 128.
line_item_idoptionalstringMaximum length: 128.
occurred_atrequireddate-timeSee the integration guide for usage.
order_idoptionalstringMaximum length: 128.
product_idrequiredstringSee the integration guide for usage.
quantityrequiredintegerMinimum: 1. Maximum: 100.
reasonoptionalstringSee the integration guide for usage.
session_idoptionalstringSee the integration guide for usage.
sourcerequiredstringSee the integration guide for usage.
typerequiredstringAllowed: fit_viewed, add_to_cart, checkout_started, purchase, return_requested, size_exchange, item_kept.
variant_idoptionalstringSee the integration guide for usage.

EventList

FieldTypeDescription
datarequiredEvent[]See the integration guide for usage.
next_cursoroptionalstringSee the integration guide for usage.

Evidence

FieldTypeDescription
body_cmoptionalnumber | nullSee the integration guide for usage.
chart_max_cmrequirednumberSee the integration guide for usage.
chart_min_cmrequirednumberSee the integration guide for usage.
estimate_cmoptionalnumber | nullSee the integration guide for usage.
sd_cmoptionalnumber | nullSee the integration guide for usage.
sourcerequiredstringSee the integration guide for usage.

IssuedKey

FieldTypeDescription
keyrequiredKeySee the integration guide for usage.
secretrequiredstringSee the integration guide for usage.

Key

FieldTypeDescription
created_atrequireddate-timeSee the integration guide for usage.
expires_atoptionaldate-time | nullSee the integration guide for usage.
idrequiredstringSee the integration guide for usage.
merchant_idrequiredstringSee the integration guide for usage.
namerequiredstringSee the integration guide for usage.
prefixrequiredstringSee the integration guide for usage.
revoked_atoptionaldate-time | nullSee the integration guide for usage.
scopesrequiredstring[]See the integration guide for usage.
store_idoptionalstringSee the integration guide for usage.

KeyInput

FieldTypeDescription
expires_atoptionaldate-time | nullSee the integration guide for usage.
namerequiredstringSee the integration guide for usage.
scopesrequiredstring[]See the integration guide for usage.
store_idoptionalstringSee the integration guide for usage.

KeyList

FieldTypeDescription
datarequiredKey[]See the integration guide for usage.
next_cursoroptionalstringSee the integration guide for usage.

Measurement

FieldTypeDescription
methodrequiredstringAllowed: circumference, flat_width, linear.
namerequiredstringSee the integration guide for usage.

Merchant

FieldTypeDescription
created_atrequireddate-timeSee the integration guide for usage.
idrequiredstringSee the integration guide for usage.
namerequiredstringSee the integration guide for usage.

MerchantCreated

FieldTypeDescription
api_keyrequiredIssuedKeySee the integration guide for usage.
merchantrequiredMerchantSee the integration guide for usage.

MerchantInput

FieldTypeDescription
namerequiredstringSee the integration guide for usage.

Metrics

FieldTypeDescription
exchange_for_size_raterequirednumber | nullSee the integration guide for usage.
fit_assisted_conversion_raterequirednumber | nullSee the integration guide for usage.
fromrequireddate-timeSee the integration guide for usage.
interpretationrequiredstringSee the integration guide for usage.
kept_after_recommendation_raterequirednumber | nullSee the integration guide for usage.
kept_linesrequiredintegerSee the integration guide for usage.
observed_throughrequireddate-timeSee the integration guide for usage.
purchased_linesrequiredintegerSee the integration guide for usage.
quiz_completion_raterequirednumber | nullSee the integration guide for usage.
recommendation_acceptance_raterequirednumber | nullSee the integration guide for usage.
recommendation_override_raterequirednumber | nullSee the integration guide for usage.
sessions_acceptedrequiredintegerSee the integration guide for usage.
sessions_overriddenrequiredintegerSee the integration guide for usage.
sessions_purchasedrequiredintegerSee the integration guide for usage.
sessions_recommendedrequiredintegerSee the integration guide for usage.
sessions_startedrequiredintegerSee the integration guide for usage.
size_exchange_linesrequiredintegerSee the integration guide for usage.
size_related_return_raterequirednumber | nullSee the integration guide for usage.
size_return_linesrequiredintegerSee the integration guide for usage.
torequireddate-timeSee the integration guide for usage.

NextQuestion

FieldTypeDescription
askedrequiredintegerSee the integration guide for usage.
donerequiredbooleanSee the integration guide for usage.
estimateoptionalEstimate | nullSee the integration guide for usage.
questionoptionalQuestion | nullSee the integration guide for usage.

NextQuestionInput

FieldTypeDescription
answersrequiredAnswersSee the integration guide for usage.
skippedoptionalstring[]See the integration guide for usage.

Problem

FieldTypeDescription
coderequiredstringSee the integration guide for usage.
messagerequiredstringSee the integration guide for usage.
request_idrequiredstringSee the integration guide for usage.

Product

FieldTypeDescription
created_atrequireddate-timeSee the integration guide for usage.
external_idrequiredstringMaximum length: 128.
garment_fitrequiredstringAllowed: fitted, regular, relaxed, oversized.
genderrequiredstringAllowed: women, men, unisex.
idrequiredstringSee the integration guide for usage.
merchant_idrequiredstringSee the integration guide for usage.
product_typerequiredstringSee the integration guide for usage.
size_chart_idoptionalstringSee the integration guide for usage.
store_idrequiredstringSee the integration guide for usage.
stretchrequiredstringAllowed: none, moderate, high.
titlerequiredstringSee the integration guide for usage.
updated_atrequireddate-timeSee the integration guide for usage.

ProductInput

FieldTypeDescription
external_idrequiredstringMaximum length: 128.
garment_fitrequiredstringAllowed: fitted, regular, relaxed, oversized.
genderrequiredstringAllowed: women, men, unisex.
product_typerequiredstringSee the integration guide for usage.
size_chart_idoptionalstringSee the integration guide for usage.
stretchrequiredstringAllowed: none, moderate, high.
titlerequiredstringSee the integration guide for usage.

ProductList

FieldTypeDescription
datarequiredProduct[]See the integration guide for usage.
next_cursoroptionalstringSee the integration guide for usage.

ProductType

FieldTypeDescription
categoryrequiredstringAllowed: tops, bottoms, one_piece, footwear, unsupported.
idrequiredstringSee the integration guide for usage.
labelrequiredstringSee the integration guide for usage.

ProductTypeList

FieldTypeDescription
datarequiredProductType[]See the integration guide for usage.
next_cursoroptionalstringSee the integration guide for usage.

Question

FieldTypeDescription
helpoptionalstringSee the integration guide for usage.
idrequiredstringSee the integration guide for usage.
labelrequiredstringSee the integration guide for usage.
maxoptionalnumber | nullSee the integration guide for usage.
minoptionalnumber | nullSee the integration guide for usage.
option_labelsoptionalobjectSee the integration guide for usage.
optionsoptionalstring[]See the integration guide for usage.
requiredrequiredbooleanSee the integration guide for usage.
sectionoptionalstringAllowed: usual_size, body_profile, height_weight, fit_preference, measurements.
typerequiredstringSee the integration guide for usage.
unitoptionalstringAllowed: cm, in, kg.

Questionnaire

FieldTypeDescription
available_sizesrequiredstring[]See the integration guide for usage.
categoryrequiredstringAllowed: tops, bottoms, one_piece, footwear.
chart_idrequiredstringSee the integration guide for usage.
chart_revisionrequiredintegerSee the integration guide for usage.
product_idrequiredstringSee the integration guide for usage.
questionsrequiredQuestion[]See the integration guide for usage.
versionrequiredstringSee the integration guide for usage.

Range

FieldTypeDescription
maxrequirednumberSee the integration guide for usage.
minrequirednumberSee the integration guide for usage.

Recommendation

FieldTypeDescription
algorithm_versionrequiredstringSee the integration guide for usage.
chart_idrequiredstringSee the integration guide for usage.
chart_revisionrequiredintegerSee the integration guide for usage.
confidencerequirednumberUncalibrated evidence score, never a probability or accuracy claim. Minimum: 0. Maximum: 1.
confidence_meaningrequiredstringSee the integration guide for usage.
created_atrequireddate-timeSee the integration guide for usage.
evidencerequiredobjectSee the integration guide for usage.
explanationrequiredstringSee the integration guide for usage.
fitrequiredobjectSee the integration guide for usage.
idrequiredstringSee the integration guide for usage.
methodrequiredstringAllowed: circumference, flat_width, linear.
probabilitiesrequiredobjectSee the integration guide for usage.
recommended_sizerequiredstringSee the integration guide for usage.
session_idrequiredstringSee the integration guide for usage.
variant_idsrequiredstring[]See the integration guide for usage.
warningsrequiredstring[]See the integration guide for usage.

RecommendationInput

FieldTypeDescription
answersrequiredAnswersSee the integration guide for usage.

Session

FieldTypeDescription
answersoptionalAnswers | nullSee the integration guide for usage.
chosen_variant_idoptionalstringSee the integration guide for usage.
coloroptionalstringMaximum length: 80.
completed_atoptionaldate-time | nullSee the integration guide for usage.
created_atrequireddate-timeSee the integration guide for usage.
customer_referenceoptionalstringMaximum length: 128.
decisionoptionalstringAllowed: accepted, overridden, declined.
expires_atrequireddate-timeSee the integration guide for usage.
idrequiredstringSee the integration guide for usage.
merchant_idrequiredstringSee the integration guide for usage.
product_idrequiredstringSee the integration guide for usage.
questionnairerequiredQuestionnaireSee the integration guide for usage.
recommendationoptionalRecommendation | nullSee the integration guide for usage.
statusrequiredstringSee the integration guide for usage.
store_idrequiredstringSee the integration guide for usage.

SessionInput

FieldTypeDescription
coloroptionalstringMaximum length: 80.
customer_referenceoptionalstringMaximum length: 128.
product_idrequiredstringSee the integration guide for usage.

SizeRow

FieldTypeDescription
measurementsrequiredobjectSee the integration guide for usage.
sizerequiredstringMaximum length: 32.

Status

FieldTypeDescription
statusrequiredstringSee the integration guide for usage.

Store

FieldTypeDescription
created_atrequireddate-timeSee the integration guide for usage.
domainrequiredstringSee the integration guide for usage.
idrequiredstringSee the integration guide for usage.
merchant_idrequiredstringSee the integration guide for usage.
namerequiredstringSee the integration guide for usage.

StoreInput

FieldTypeDescription
domainrequiredstringSee the integration guide for usage.
namerequiredstringSee the integration guide for usage.

StoreList

FieldTypeDescription
datarequiredStore[]See the integration guide for usage.
next_cursoroptionalstringSee the integration guide for usage.

Variant

FieldTypeDescription
availablerequiredbooleanSee the integration guide for usage.
coloroptionalstringMaximum length: 80.
created_atrequireddate-timeSee the integration guide for usage.
external_idrequiredstringMaximum length: 128.
idrequiredstringSee the integration guide for usage.
merchant_idrequiredstringSee the integration guide for usage.
product_idrequiredstringSee the integration guide for usage.
sizerequiredstringMaximum length: 32.
store_idrequiredstringSee the integration guide for usage.

VariantInput

FieldTypeDescription
availablerequiredbooleanSee the integration guide for usage.
coloroptionalstringMaximum length: 80.
external_idrequiredstringMaximum length: 128.
sizerequiredstringMaximum length: 32.

VariantList

FieldTypeDescription
datarequiredVariant[]See the integration guide for usage.
next_cursoroptionalstringSee the integration guide for usage.