Create Presigned Upload URL
Create a short-lived presigned URL for uploading media files. Upload the raw file bytes
to presigned_url using every header returned in required_headers, then pass
public_url as a model input.
Authorizations
API key for authentication
Body
MIME type of the file to upload
"image/png"
High-level file category
image, video, audio, other "image"
How long the stored file is retained before automatic deletion, in seconds. Sets expires_at in the response. Defaults to 180 days when omitted; clamped to a minimum of 60 seconds and a maximum of 365 days (31536000). Does not affect the 15-minute upload-URL lifetime.
60 <= x <= 31536000604800
Response
Presigned upload URL created
Upload identifier
"0dce0f44-b8a5-4f30-91d4-5f6b0c221bf0"
Short-lived URL for uploading raw file bytes
"https://eachlabs-storage.s3.amazonaws.com/uploads/...?X-Amz-Signature=..."
Public URL to pass as a model input after upload succeeds
"https://cdn-us.eachlabs.ai/uploads/0dce0f44-b8a5-4f30-91d4-5f6b0c221bf0.png"
When the stored file is automatically deleted (its retention deadline). Defaults to 180 days out; controlled by expires_in_seconds. Not the upload-URL deadline — the presigned URL only accepts uploads for 15 minutes after issuance.
"2026-12-08T18:15:00Z"
Headers that must be sent verbatim with the upload PUT request
{
"x-amz-meta-file-id": "0dce0f44-b8a5-4f30-91d4-5f6b0c221bf0"
}