uploads

Mint the slot behind an upload link (called by the upload page)

Authenticated by the link token alone — this is what the upload page calls once the person has picked a file. Returns the same shape as POST /v1/uploads; the page then PUTs the bytes to first_party_upload_url (or upload_url). Calling it again re-points the link at a fresh slot, so a retried upload just works.

post/v1/upload-links/{token}/uploads

Request

  • Base URL: https://api.framelane.io
  • URL: https://api.framelane.io/v1/upload-links/{token}/uploads
  • Auth: none declared

Path parameters

tokenstring required

Request body

content_typestring required

MIME type of the file the person picked.

filenamestring nullable

The file's name, for display.

durationnumber nullable

Browser-probed duration in seconds (video/audio).

widthinteger nullable

Browser-probed pixel width.

heightinteger nullable

Browser-probed pixel height.

Example request

{
  "content_type": "video/mp4"
}

Response

Successful Response

upload_urlstring nullable

GCS resumable upload URL. PUT your file bytes here with the correct Content-Type. null when you sent content_base64: the bytes are already stored, so there is no slot left to fill.

source_urlstring required

CDN URL for the uploaded file. Pass this as source_url in render/task requests.

expires_atstring date-time required

When the upload_url expires (1 hour from now).

uploadedboolean

True when this call also stored the file (you sent content_base64), so source_url is usable immediately. False means only a slot was minted and the bytes are still yours to PUT.

asset_idstring nullable

The media asset registered for this upload — poll it with GET /v1/workspace/assets/{id}. Null for fonts, which are storable but are not timeline media and so get no asset row.

first_party_upload_urlstring nullable

The same upload session as upload_url, on a Framelane hostname. Use it when your network allows *.framelane.io but not storage.googleapis.com — same protocol, same chunks, same expiry. Null when you sent content_base64, or when this deployment has no first-party upload host.

Example response

{
  "upload_url": "https://storage.googleapis.com/framelane-prod-user/uploads/ws_01J.../a1b2c3.mp4?upload_id=...",
  "source_url": "https://cdn-user.framelane.io/uploads/ws_01J.../a1b2c3.mp4",
  "asset_id": "asset_01J8QR2K5VKDGN2T4FBM3CZYX7",
  "first_party_upload_url": "https://uploads.framelane.io/s/AAECAwQFBgcICQoL…"
}

Changes

No recorded changes to this operation across all 1 revision of this API.