Skip to main content
Upload a customer photo using a 3-step signed-URL flow. Returns a fileId used when creating generations.

Overview


Step 1: Prepare Upload

No body required.

Response

string
required
Short-lived signed URL for uploading directly to cloud storage.
string
required
Opaque key identifying this upload. Pass it to the complete step.

Step 2: Upload to Storage

PUT the raw file directly to the signed URL. This goes to cloud storage, not through the app proxy.
Send raw bytes with Content-Type: application/octet-stream. Supported formats: JPEG, PNG, WebP, HEIC/HEIF. Max size: 20 MB.

Step 3: Complete Upload

Notify the backend to validate and process the image. Processing includes HEIC-to-JPEG conversion, HDR-to-SDR, and auto-crop to 4:5 aspect ratio centered on the detected person.
string
required
The uploadKey from Step 1.

Response

string
required
Unique identifier for the processed file. Use this when creating generations. Treat it as an opaque string and pass it back exactly as received.
string
required
Signed URL for previewing the processed image.
string
required
Status message.