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.

POST → https://fourechelon.com/api/v1/responses/batch
Terminal
curl 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.

requestsarray

1-32 response items, each with the same model and input shape as POST /api/v1/responses.

objectstring

The batch envelope is response_batch.

request_idstring

Batch-level request id. Each item also carries its own request_id.

dataarray

Per-item results in request order. Each entry is either a response body or a structured error with its own status.

data[].statusnumber

Per-item HTTP-style status. The envelope returns 200 when every item succeeded and 207 when any item failed.

Idempotency-Keyheader

Optional. Applied per item as key#index, so retried batches replay item-by-item.

Terminal
{
  "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..."
    }
  ]
}