POST /API/V1/RESPONSES/BATCH
Batch responses
Run up to 32 Rowe requests in one HTTP call. Each item is authorized, rate limited, executed, and metered independently, and the batch returns per-item results in request order.
POST /api/v1/responses/batch
Send requests with 1-32 items. Each item uses the same model and input contract as /api/v1/responses and is authorized, rate limited, executed, and metered on its own, so one failing item never invalidates the rest.
https://fourechelon.com/api/v1/responses/batchcurl https://fourechelon.com/api/v1/responses/batch \
-H "Authorization: Bearer $FOUR_ECHELON_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"requests": [
{
"model": "rowe-1.0",
"input": {
"task_type": "fit",
"object_id": "case",
"secondary_id": "shelf",
"point_cloud_scene": { "point_clouds": [ { "object_id": "case", "kind": "box", "points": [{ "x": 0, "y": 0, "z": 0 }] } ] }
}
},
{
"model": "rowe-1.0",
"input": {
"task_type": "stability",
"object_id": "case",
"point_cloud_scene": { "point_clouds": [ { "object_id": "case", "kind": "box", "points": [{ "x": 0, "y": 0, "z": 0 }] } ] }
}
}
]
}'Batch contract
Results come back in request order. The envelope is 200 when every item succeeded and 207 when any item carries an error status.
requestsarray1-32 response items, each with the same model and input shape as POST /api/v1/responses.
objectstringThe batch envelope is response_batch.
request_idstringBatch-level request id. Each item also carries its own request_id.
dataarrayPer-item results in request order. Each entry is either a response body or a structured error with its own status.
data[].statusnumberPer-item HTTP-style status. The envelope returns 200 when every item succeeded and 207 when any item failed.
Idempotency-KeyheaderOptional. Applied per item as key#index, so retried batches replay item-by-item.
{
"object": "response_batch",
"request_id": "req_batch...",
"data": [
{
"id": "resp_...",
"status": 200,
"output": [{ "type": "fit_result", "data": { "feasible": true } }],
"usage": { "input_tokens": 42, "output_tokens": 29, "estimated_cost_usd": 0.000158 },
"request_id": "req_item1..."
},
{
"status": 503,
"error": { "message": "The Rowe runtime is temporarily unavailable.", "type": "service_unavailable" },
"request_id": "req_item2..."
}
]
}