UXDL Docs

Media Upload Flow

Signed URLs, validation, CDN publishing, and storage ownership.

Flow

  1. Client requests signed upload URL from API.
  2. API validates user permissions and file policy (type, size).
  3. Client uploads directly to S3 via signed URL.
  4. S3 event triggers worker for virus scan and optimization.
  5. CDN publishes optimized asset; API updates record status.

Request signed URL

bash
curl -X POST "$API_URL/v1/media/upload-url" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"filename":"photo.jpg","contentType":"image/jpeg","sizeBytes":204800}'

Response

json
{
  "uploadUrl": "https://s3.amazonaws.com/bucket/key?X-Amz-Signature=...",
  "mediaId": "med_01HZ...",
  "expiresAt": "2026-05-24T19:00:00Z"
}

File policy

TypeMax sizeAllowed MIME
Image10 MBimage/jpeg, image/png, image/webp
Document25 MBapplication/pdf
Video500 MBvideo/mp4