POST
Register a batch of files
Request · Response · Guide: Upload files
Batch-level defaults apply to every file; a per-file field overrides the matching default. Partial success is normal: valid files are registered and returned as accepted with a presignedUploadURL; files that fail per-file validation are returned as rejected with a per-item error and are not registered. One bad file never rejects the others.Status: 201 when all files are accepted, 207 when the result is mixed. The batch envelope is rejected wholesale with 422 (and nothing is registered) when files is empty or absent (INVALID_BATCH) or exceeds the cap (BATCH_TOO_LARGE). A file over the page limit is a per-item rejected, not a whole-batch rejection.The presignedUploadURL for each accepted file is valid for 300 seconds (5 minutes). An idempotent replay returns the same batchId, uploadIds and verdicts but freshly signed URLs.

Authorizations

x-api-key
string
header
required

API key for authentication

Headers

Idempotency-Key
string

Optional opaque key (max 255 chars, UUIDv4 recommended) making this request idempotent for 24h: a retry with the same key and body replays the original response with Idempotent-Replayed: true.

Body

application/json
files
object[]
required

Files to register, at most 100 per request.

Required array length: 1 - 100 elements
defaults
object

Batch-level defaults; each file may override them.

Response

All files accepted.

batchId
string
required

Server-generated batch identifier.

Example:

"batch_01J9Z"

apiRequestId
string
required

Grouping id stamped on every file. Equals the supplied defaults.apiRequestId, else batchId.

Example:

"batch_01J9Z"

accepted
number
required

Number of accepted files.

Example:

2

rejected
number
required

Number of rejected files.

Example:

1

results
object[]
required

One entry per requested file, in request order (results[i] maps to files[i]).