Skip to main content
POST
Create a presigned upload

Authorizations

Authorization
string
header
required

Organisation API key, sent as Authorization: Bearer chk_live_….

  • chk_live_… — production inference, live credits, livemode: true, is_staging: false.
  • chk_stg_… — real inference classified as staging, the same live credits, livemode: true, is_staging: true.
  • chk_test_… — identical pipeline against the fixture backend, test credits, livemode: false.

Keys are stored hashed; only the prefix (chk_live_a1b2…) is ever displayed again. A key may be scoped to a subset of endpoint families — calling outside its scopes is a 403.

Headers

Idempotency-Key
string

Client-generated key (a UUID is ideal) making this POST safe to retry. The first request is executed and its response stored for 24 h; any replay with the same key returns that stored response with Idempotent-Replayed: true and bills nothing. Reusing a key with a different payload is a 409 idempotency_key_reuse.

Required string length: 8 - 255

Body

application/json
endpoint
enum<string>
required

Endpoint the upload is destined for. Required: the size ceiling written into the presigned URL is per endpoint, and a video asset is not held to the same limit as a plate photo.

Available options:
vehicle.pose,
vehicle.segment,
vehicle.identify,
vin.read,
driver_license.read,
plate.read,
document.read,
dashboard.read,
engine.detect,
damage.detect,
damage.severity,
tire.read,
tire.detect,
parts.recognize,
parts.segment,
parts.decompose,
pricing.vehicle,
pricing.repair,
render.background,
render.enhance,
render.plate,
render.360,
render.video,
render.hotspots
content_type
string

MIME type of the file you are about to upload. Sent verbatim on the PUT.

Examples:

"video/mp4"

"image/jpeg"

"audio/wav"

filename
string

Kept for your own traceability; never interpreted.

Maximum string length: 255
size_bytes
integer

Optional exact byte length. Omit it to receive a bounded multipart POST.

Required range: x >= 1

Response

Upload slot created.

object
string
required
Allowed value: "upload"
upload_ref
string
required

Pass this as input_ref / input_refs once the bytes are uploaded.

Pattern: ^upl_[1-9A-HJ-NP-Za-km-z]{8,32}$
Example:

"upl_7Qm2hV9tXbLd"

url
string<uri>
required

Presigned PUT target or POST form action.

expires_at
integer<int64>
required

After this instant the URL is refused and a new upload must be created.

Example:

1755300000

max_bytes
integer
required

Hard ceiling enforced by storage, in bytes.

Required range: x >= 1
Example:

524288000

method
enum<string>
required
Available options:
PUT,
POST
headers
object

Signed headers required for a PUT response.

fields
object

Form fields to append before file for a POST response.