Language

Getting started

1. Choose a plan and create an API key

The API requires an active plan. Sign in, open Developer Settings from the account menu and activate a plan. Then create a key under API keys. The raw key is shown exactly once on creation, so store it in your secret manager immediately.

2. Create a session

A session represents one end user of your integration. Create one at the start of each end-user conversation:

curl -X POST https://www.getsize.shoes/api/public/v1/sessions \
  -H "X-Api-Key: gsk_live_..."

{
  "sessionId": "abc123-def456-...",
  "createdAt": "2026-04-15T10:00:00Z",
  "expiresAt": "2026-04-22T10:00:00Z",
  "shoeCount": 0,
  "hasFootMeasurement": false
}

Store sessionId; every subsequent call threads it through the URL.

3. Add a foot measurement (optional)

curl -X POST https://www.getsize.shoes/api/public/v1/sessions/$SESSION_ID/foot-measurement \
  -H "X-Api-Key: gsk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"rightFootLengthMm": 268, "leftFootLengthMm": 270}'

4. Identify a shoe the user owns

Walk the catalog with /shoe-selection: send the user's picks so far as selection.answers, show the options in nextStep, append the picked id and call again until complete is true.

curl -X POST https://www.getsize.shoes/api/public/v1/shoe-selection \
  -H "X-Api-Key: gsk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"purpose": "ADD_TO_RACK", "selection": {"answers": ["nike", "FD2722", "FD2722-002", "US_MALE", "10"]}}'

{
  "selection": { "answers": ["nike", "FD2722", "FD2722-002", "US_MALE", "10"], "metadata": {} },
  "complete": true,
  "nextStep": null,
  "shoe": { "brandId": "nike", "modelId": "FD2722", "sizeSystem": "US_MALE", "size": "10", "lengthMm": 265, ... }
}

See Identifying shoes for the full pattern.

5. Add the identified shoe to the session rack

curl -X POST https://www.getsize.shoes/api/public/v1/sessions/$SESSION_ID/shoes \
  -H "X-Api-Key: gsk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"shoe": {"answers": ["nike", "FD2722", "FD2722-002", "US_MALE", "10"], "metadata": {}}}'

{
  "id": 18825,
  "brandId": "nike",
  "modelId": "FD2722",
  ...
}

shoe takes the completed selection from step 4, not the shoe object in that response. Keep the returned id if you may want to remove the shoe later with DELETE /sessions/$SESSION_ID/shoes/{id}.

6. Get a size recommendation for a target shoe

Walk /shoe-selection again with "purpose": "RECOMMENDATION_TARGET" for the shoe the user is considering. That walk completes without a size, and its selection is the target.

curl -X POST https://www.getsize.shoes/api/public/v1/sessions/$SESSION_ID/recommendations \
  -H "X-Api-Key: gsk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"target": {"answers": ["adidas", "SAMBAU2312", "KZ6720", "EU"], "metadata": {}}}'

{
  "recommendedSize": "44",
  "sizeSystem": "EU",
  "confidenceBasis": [ ... ]
}