Create a presigned upload
Returns a presigned PUT URL. Upload the bytes to url with the declared
content_type, then pass the upload_ref as input_ref / input_refs on any endpoint.
Required for videos and batches; optional (but cheaper on retries) for images. The reference is single-organisation, single-use per job and expires with the URL. Stored objects are purged by the storage TTL of your organisation.
Authorizations
Organisation API key, sent as Authorization: Bearer chk_live_….
chk_live_…— real inference, real credits,livemode: 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
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.
8 - 255Body
Endpoint the upload is destined for. Required: the size ceiling written into the presigned URL is per endpoint, and a walkaround video is not held to the same limit as a plate photo.
vehicle.analyse, vehicle.segment, vehicle.identify, vin.read, plate.read, document.read, dashboard.read, engine.detect, video.onboard, 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, viewer.hotspots, inspections MIME type of the file you are about to upload. Sent verbatim on the PUT.
"video/mp4"
"image/jpeg"
"audio/wav"
Kept for your own traceability; never interpreted.
255Response
Upload slot created.
"upload"Pass this as input_ref / input_refs once the bytes are uploaded.
^upl_[1-9A-HJ-NP-Za-km-z]{8,32}$"upl_7Qm2hV9tXbLd"
Presigned PUT target. Send the raw bytes with the declared Content-Type and no authentication header — the signature is in the URL.
After this instant the URL is refused and a new upload must be created.
1755300000
Hard ceiling enforced by storage, in bytes.
x >= 1524288000
"PUT"