Skip to content
OpenRelay is in early access, and the /v1 API is stable. New capabilities ship in the changelog.
API ReferenceInferenceBatches

Cancel a running batch

Cancels a batch that has not finished. In-flight records finish, unstarted ones are skipped, and partial results are written; completed work is billed. The batch settles to cancelled within a few minutes. A batch already in a terminal state returns 409.

Required permission

Requires the batch.write permission. See Permissions for the roles and API key permissions that include it.

Command line

The orl CLI wraps this endpoint:

orl batches cancel <id>
POST
/v1/batches/{id}/cancel

Authorization

apiKey
headerAuthorizationBearer <token>

OpenRelay API key. Send it as Authorization: Bearer or_… (legacy vl_… keys still work).

Path Parameters

id*string

Response Body

OK

application/json
  1. response

A batch inference job (OpenAI-compatible).

id*string

Batch id (batch_…).

object*"batch"
Value in"batch"
endpoint*string

The API family every record in the batch calls.

input_file_id*string
completion_window*"24h"
Value in"24h"
priority*string

The scheduling tier this batch runs and is billed at. Batches created before the tier existed read as standard.

Value in"standard""expedited"
status*string

Lifecycle state. validating → in_progress → finalizing → completed | failed | expired; cancelling → cancelled. A batch is in_progress while it waits for GPU capacity too; in_progress_at says when its requests started running.

Value in"validating""in_progress""finalizing""completed""failed""expired""cancelling""cancelled"
model?string

Model id, settled from the input file during validation.

output_file_id?string

Present once results are written; fetch its content for successful records.

error_file_id?string

Present once results are written; fetch its content for failed records.

created_at*integer

Unix timestamp (seconds).

Formatint64
in_progress_at*integer

Unix timestamp (seconds) when the batch's first requests started running. Always present and null until then, so an in_progress batch with a null in_progress_at is still queued for GPU capacity.

Formatint64
expires_at?integer

When the completion window closes (created_at + 24h).

Formatint64
completed_at?integer
Formatint64
failed_at?integer
Formatint64
expired_at?integer
Formatint64
cancelled_at?integer
Formatint64
request_counts*

Progress counters, settled as the batch validates and shards complete.

usage?

Rolled-up token and cost totals, present once any progress is recorded. cost_nano_usd is the price you pay (batch discount applied), in nano-USD so sub-cent batches stay exact.

metadata?

Your key-value pairs, echoed back unchanged.

Example Request
curl -X POST 'https://inference.openrelay.inc/v1/batches/string/cancel'
Example Response
{  "id": "string",  "object": "batch",  "endpoint": "string",  "input_file_id": "string",  "completion_window": "24h",  "priority": "standard",  "status": "validating",  "model": "string",  "output_file_id": "string",  "error_file_id": "string",  "created_at": 0,  "in_progress_at": 0,  "expires_at": 0,  "completed_at": 0,  "failed_at": 0,  "expired_at": 0,  "cancelled_at": 0,  "request_counts": {    "total": 0,    "completed": 0,    "failed": 0  },  "usage": {    "input_tokens": 0,    "output_tokens": 0,    "cost_nano_usd": 0  },  "metadata": {    "property1": "string",    "property2": "string"  }}