API Reference
The Render API is available at https://render.impossible.io over HTTPS. It supports Cross-Origin Resource Sharing (CORS) for browser-based requests.
Token-based rendering (v2)
The recommended approach. First create a render token, then use it to retrieve the video.
| Method | Endpoint | Description |
|---|---|---|
| POST | /v2/render/{project-id} | Create a render token. Returns a token for video retrieval. |
| GET | /v2/render/{token}.{ext} | Render and deliver when complete. Highest latency, smoothest playback. |
| GET | /v2/get/{token}.{ext} | Progressive download. Starts delivering as frames become available. |
| GET | /v2/play/{token}.{ext} | Streaming. Lowest latency, renders on-demand as playback progresses. |
| DELETE | /v2/token/{token} | Delete a token and its associated rendered data. |
Direct rendering (v1)
Renders and delivers in a single request. Simpler but less flexible — no upload support, no token reuse.
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/render/{project-id}/{movie}.{ext} | Render and deliver when complete. |
| GET | /v1/get/{project-id}/{movie}.{ext} | Progressive download. |
| GET | /v1/play/{project-id}/{movie}.{ext} | Streaming playback. |
Pass dynamic parameters as query string values: ?name=Alex&company=Acme.
Supported output formats
Video formats
| Format | Extension | Notes |
|---|---|---|
| MP4 (H.264) | .mp4 | Most compatible. Render mode only. |
| WebM (VP8/VP9) | .webm | All retrieval modes. Best for streaming. |
| Flash Video | .flv | Legacy. All retrieval modes. |
| HLS | .m3u8 | Adaptive streaming. Render + get modes. |
| MPEG-DASH | .mpd | Adaptive streaming. Render + get modes. |
| MPEG-2 | .mpeg | Broadcast use. |
| Windows Media | .wmv | Legacy. |
| GIF | .gif | Animated GIF output. |
| Apple ProRes | .mov | Professional editing. |
Image formats
| Format | Extension | Parameters |
|---|---|---|
| JPEG | .jpg | frame (frame number), q (quality 10-99) |
| PNG | .png | frame (frame number), compression (0-9) |
| TIFF | .tif | frame (frame number) |
Image sequences
| Format | Extension | Parameters |
|---|---|---|
| ZIP archive | .zip | format (png/jpg/tif), from (start frame), to (end frame), q (JPEG quality), compression (PNG compression) |
Request body (POST /v2/render)
{
"movie": "movie-name",
"params": {
"variable1": "value1",
"variable2": "value2"
},
"parallel": 1,
"routingkey": "default",
"upload": { }
}
See Rendering Videos for detailed parameter documentation and examples.
Response (POST /v2/render)
{
"token": "v2:region:unique-id",
"uploads": { }
}
The uploads field is present only when upload tasks are included in the request.
Error responses
| Status | Meaning |
|---|---|
| 200 | Success. Token or video returned. |
| 201 | Accepted (async upload). Processing in background. |
| 400 | Bad request. Check your request body. |
| 404 | Project or movie not found. |
| 429 | Rate limited. Too many concurrent requests. |
| 500 | Server error. Retry with backoff. |
Note
The API has no authentication requirement for render and retrieval endpoints. Rate limiting is based on your account tier.