API reference/Submit a job
POST

/v1

Queue an extraction for one video, or up to 200, against one schema.

Request

One call submits anything from a single video to two hundred. videos is always a list, so growing from one to many changes the length of an array rather than the endpoint you call.

Field
Type
Required
Description
videosstring[]yesOne to 200 entries, each a full URL or a bare video ID. Over 200 is refused with batch_too_large and nothing is queued.
schema.columnsarrayyesEach entry needs name and description, and may set type — one of NuExtract 3.0's type names: verbatim-string, string, number, integer, boolean, date or enum (which also takes options). Without a type, the first column is verbatim-string and the rest are string. Up to 12 columns, and the same schema runs against every video in the call.
schema.templateobjectnoA NuExtract 3.0 template in place of schema.columns, with a schema.descriptions object giving one description per field. Nested objects and nested lists are refused. See /docs/guides/writing-a-schema.
schema.multiplebooleannoDefaults to false. True returns an array of records per video.
schema.max_rowsintegernoWith multiple, keeps at most this many rows per video and drops the rest. 1 to 500.
schema_idstringnoA saved schema, instead of an inline one. Optionally with schema_version; the latest is used otherwise.
webhook_urlstringnoHTTPS endpoint called once the job settles, so you need not poll.

Send an Idempotency-Key header to make a retry of this call safe.

Response

201 · created
{
"job_id": "8f2c1e40-91a3-4b7e",
"videos": 3
}

Extraction runs on a queue, so this answers with an id rather than with rows. Read the job to collect them, or register a webhook_url and be told when there is something to collect.

Errors

400 for a malformed body or unusable schema, and for more than 200 videos — batch_too_large, with the message 200 video limit per batch exceeded. 401 for a bad key, 402 when the workspace is out of credits, 409 for an Idempotency-Key reused with a different body.

NOTE
A video with no captions is not an error here. The call succeeds, and that video fails later with no_captions — costing nothing, while the rest of the job carries on.
Was this page useful?Tell us what was missing