Endpoint Playground
Returns one menu product's full customization tree: size, bread, and per-ingredient choices (extra/regular/light/none), each with its real price and calorie delta. Groups nest -- picking a size choice can reveal a bread group, which can reveal one group per ingredient -- so a size step, a bread step, and every "Customize Sandwich" ingredient all live in one recursive tree. product_id comes from GET /jimmy-johns/menu.
14 Oct 2026: 1 groups; 5 fields had a value in every checked item.
Sample value profiles: name: “Make it a Combo!”; mandatory: true in 1 of 1; choices: median 2 entries.
curl 'https://api.crawlora.net/api/v1/jimmy-johns/modifiers?product_id=33276056' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| product_id | integer | Yes | 33276056 | Product id from a /jimmy-johns/menu product |
{
"code": 200,
"msg": "OK",
"data": {
"product_id": 33276056,
"groups": [
{
"group_id": 1176353985,
"name": "Make it a Combo!",
"mandatory": true,
"choices": [
{
"option_id": 5265915593,
"name": "No",
"cost": 0,
"is_default": true,
"groups": [
{
"group_id": 1176354037,
"name": "Choose Your Size",
"mandatory": true,
"choices": [
{
"option_id": 5265915696,
"chain_option_id": 2476875,
"name": "REGULAR",
"cost": 8.69,
"is_default": true,
"groups": [
{
"group_id": 1176355033,
"name": "Smoked Ham",
"mandatory": true,
"choices": [
{
"option_id": 5265919605,
"name": "Xtra Smoked Ham",
"cost": 2.29,
"base_calories": "70"
},
{
"option_id": 5265919606,
"name": "Reg Smoked Ham",
"cost": 0,
"is_default": true
},
{
"option_id": 5265919608,
"name": "No Smoked Ham",
"cost": 0,
"base_calories": "-70"
}
]
}
]
}
]
}
]
}
]
}
],
"group_count": 1,
"source_url": "https://jj.ordering.api.olo.com/v1.1/products/33276056/modifiers",
"fetched_at": "2026-09-03T00:00:00Z"
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.