Media Conversion API¶
Image, video and 3D-model conversion are live. They follow the same 3-step shape as Document Conversion: submit → poll → download.
Auth is the same bearer token as everywhere else; anonymous callers are served within the free quota.
Submit¶
| Media | Endpoint |
|---|---|
| Image | POST /api/v1/convert/image/convert/ |
| Video | POST /api/v1/convert/video/convert/ |
| 3D model | POST /api/v1/convert/model/convert/ |
Send multipart/form-data with a file part, or reference a remote source with
file_url / s3_key — exactly one of the two. target_formats selects the output.
curl -sS https://indox.org/api/v1/convert/image/convert/ \
-H "Authorization: Bearer $INDOX_API_KEY" \
-F file=@photo.png \
-F target_formats=jpeg
Poll¶
| Media | Endpoint |
|---|---|
| Image | GET /api/v1/convert/image/conversion/{conversion_id}/ |
| 3D model | GET /api/v1/convert/model/conversion/{conversion_id}/ |
| Any media | GET /api/v1/media_core/conversion/{conversion_id}/ |
GET /api/v1/media_core/conversion/wait/{conversion_id}/ long-polls to a terminal state
instead of returning immediately.
Download¶
GET /api/v1/media_core/files/{conversion_id}/download/
Batch: POST /api/v1/media_core/batch/collect/ then
GET /api/v1/media_core/batch/{batch_id}/download/.
Capabilities¶
GET /api/v1/convert/{image,video,model}/formats/ lists what converts to what, and
GET /api/v1/convert/{image,model}/operations/ lists the per-media operations. Check
these before spending credits — an unsupported pair is rejected at submit with a 400.
Legacy aliases
/api/v1/image_converter/, /api/v1/video_converter/ and /api/v1/model/ remain
mounted and route to the same views. Prefer the canonical convert/ paths above;
the aliases are kept for existing integrations.
The official SDKs wrap all of this — in Python, client.images,
client.videos and client.models.