batch.completed

⚠️
Preview — this feature is being built; the design below is the spec.

Sent when: A batch finished processing every request it could. Some requests may still have failed individually; request_counts.failed says how many.

PropertyValue
ScopeOne workspace. Register with an inference key at /v1/webhooks.
AreaBatches
Subscribe with"events": ["batch.completed"], or a prefix such as "batch.*"

Payload

{
  "id": "evt_01JCA5D7F9H1K3M5P7R9",
  "type": "batch.completed",
  "created_at": "2026-11-05T10:00:00Z",
  "workspace_id": "wrkspc_01JC0A2C4E6G8J0L2N4Q",
  "data": {
    "object": {
      "id": "batch_01JBXF3P8K",
      "type": "batch",
      "status": "completed",
      "output_file_id": "file_01JBXG7Q",
      "error_file_id": "file_01JBXG8R",
      "request_counts": {
        "total": 5000,
        "succeeded": 4996,
        "failed": 4,
        "canceled": 0
      }
    }
  }
}

data.object matches what the corresponding GET endpoint returned when the event happened. Prompt and output text are never included.

What to do

  • Fetch results with Stream batch results and match lines on custom_id.
  • If request_counts.failed is above zero, read the errored lines and resubmit only those in a new batch.

Delivery

Deliveries are signed, retried with back-off for up to 3 days, and may arrive more than once or out of order. De-duplicate on the syntic-event-id header and compare timestamps before acting. See Webhooks.

Was this page helpful?