Bulk API
REST API
Bulk API
Submit asynchronous AI detection jobs for many texts
POST
Bulk API
Current
Completion time depends on the number and length of submitted items and current system load. Use
Terminal bulk statuses are
Or an
Do not include both
Example Response
Example Response
Example Response
Example Response
The Bulk API queues many AI detection inputs as one asynchronous job. Submit the job with
POST /bulk, poll GET /bulk/{bulk_id}, then page through item metadata or results.GET /bulk/{bulk_id} to monitor progress.
Bulk jobs use the same base URL and API key authentication as the AI detection task API:
succeeded, failed, and partial. Bulk metadata and results are retained for 48 hours after the job reaches a terminal status.
Timestamps are returned as Unix epoch seconds encoded as strings, such as "1760000000.0". Treat them as UTC instants when converting to a date-time value.
The launch bulk limit is 1,000 billable units per request. A billable unit is one started 1,000-word block per valid item, with a minimum of one unit per item. There is no separate item-count limit, but normal request-body limits still apply. Requests over the current bulk limit return 413 Payload Too Large.
POST /bulk
Create a bulk AI detection job.Request
Provide exactly one ofitems or text.
Valid request bodies use either a plain text list:
items list when you want customer IDs returned with status and results:
text and items in the same request. Item id values are optional, but must be unique when provided.
List of item objects. Each item must include
text and may include a unique customer-defined id.List of input text strings. Use this simpler shape when you do not need customer item IDs.
Response
Returns202 Accepted.
The ID of the bulk job.
Initial status. Usually
queued; returns failed if every item failed immediate validation.Total number of submitted items.
Items accepted for processing. Each item includes
index, optional id, and task_id.Items that failed immediate validation. Each item includes
index, optional id, task_id: null, stage, and error.Example
GET /bulk/
Fetch the current status and counters for a bulk job.Request
The bulk job ID returned by
POST /bulk.Response
The ID of the bulk job.
One of
queued, running, succeeded, failed, or partial.Total number of submitted items.
Number of items accepted for processing.
Number of items that completed successfully.
Number of items that failed.
Job creation timestamp as Unix epoch seconds encoded as a string.
Job completion timestamp as Unix epoch seconds encoded as a string.
null while the job is not terminal.Status values
GET /bulk//items
Fetch paginated item metadata for a bulk job.Request
The bulk job ID returned by
POST /bulk.Zero-based item offset.
Maximum number of items to return. The maximum is
1000.Response
The ID of the bulk job.
The returned page offset.
The returned page limit.
Total number of submitted items.
Item metadata. Each item includes
index, optional id, task_id, stage, and optional error.GET /bulk//results
Fetch paginated results for a bulk job.Request
The bulk job ID returned by
POST /bulk.Zero-based item offset.
Maximum number of items to return. The maximum is
1000.Response
The ID of the bulk job.
The returned page offset.
The returned page limit.
Total number of submitted items.
Result items for successful or in-progress work. Successful completed items include
result; in-progress items have result: null.Failed item metadata for the requested page.