Videos
List videos, generate single videos from images, and create reels from multiple images.
GET /api/external/videos
Returns a list of generated videos.
Headers
| Header | Required | Description |
|---|---|---|
| X-Api-Key | Yes | Your API key in the format mk_live_xxx.secret |
Query Parameters
No query parameters.
Response
{
"videos": [
{
"id": "vid_abc123",
"name": "Product Showcase - White T-Shirt",
"thumbnail": "https://cdn.example.com/videos/thumb_abc123.jpg",
"videoUrl": "https://cdn.example.com/videos/vid_abc123.mp4",
"status": "DONE",
"voting": "APPROVED",
"createdAt": "2026-03-20T17:00:00.000Z"
}
],
"count": 1
}
Error Responses
| Code | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 500 | Internal server error |
Notes
- No credits are consumed by this endpoint.
Example
curl -X GET "https://app.qamera.ai/api/external/videos" \ -H "X-Api-Key: mk_live_abc123.secret456"
POST /api/external/video-picker/register-videos
Generates a video from an existing image. Credits are reserved immediately and consumed after processing completes.
Headers
| Header | Required | Description |
|---|---|---|
| X-Api-Key | Yes | Your API key in the format mk_live_xxx.secret |
| Content-Type | Yes | application/json |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| imageId | string | Conditional | ID of the source image. Either imageId or generatedImageId is required. |
| generatedImageId | string | Conditional | ID of a generated image. Either imageId or generatedImageId is required. |
| suggestion | string | No | Creative direction or motion suggestions for the video |
| provider | string | No | Video generation provider (default: pollo) |
Response
{
"createdRecordIds": ["vid_001"],
"batchId": "batch_abc123",
"orderId": "order_xyz789",
"reservationId": "res_def456",
"creditsReserved": 10
}
Error Responses
| Code | Meaning |
|---|---|
| 400 | Invalid request body or missing required image ID |
| 401 | Missing or invalid API key |
| 402 | Insufficient credits |
| 500 | Internal server error |
Notes
- Processing is asynchronous. The job is published to a message queue and processed by a worker.
- Track the status of generated videos using the GET endpoint.
- Credits are reserved at creation, consumed after successful processing, and refunded on failure.
- Each request generates a
correlationIdfor log tracing. - You must provide either
imageIdorgeneratedImageId, not both.
Example
curl -X POST "https://app.qamera.ai/api/external/video-picker/register-videos" \
-H "X-Api-Key: mk_live_abc123.secret456" \
-H "Content-Type: application/json" \
-d '{
"imageId": "img_abc123",
"suggestion": "Slow zoom in with subtle rotation",
"provider": "pollo"
}'
POST /api/external/reel/register-reel
Generates a reel (short-form video) from multiple images. Credits are reserved immediately and consumed after processing completes.
Headers
| Header | Required | Description |
|---|---|---|
| X-Api-Key | Yes | Your API key in the format mk_live_xxx.secret |
| Content-Type | Yes | application/json |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| imagesIds | string[] | Yes | Array of image IDs to include in the reel (min: 1, max: 10) |
Response
{
"createdRecordIds": ["reel_001"],
"batchId": "batch_abc123",
"orderId": "order_xyz789",
"reservationId": "res_def456",
"creditsReserved": 15
}
Error Responses
| Code | Meaning |
|---|---|
| 400 | Invalid request body, missing imagesIds, or array size out of bounds |
| 401 | Missing or invalid API key |
| 402 | Insufficient credits |
| 500 | Internal server error |
Notes
- Processing is asynchronous. The job is published to a message queue and processed by a worker.
- Track the status of generated reels using the GET /api/external/videos endpoint.
- Credits are reserved at creation, consumed after successful processing, and refunded on failure.
- Each request generates a
correlationIdfor log tracing. - The
imagesIdsarray must contain between 1 and 10 image IDs.
Example
curl -X POST "https://app.qamera.ai/api/external/reel/register-reel" \
-H "X-Api-Key: mk_live_abc123.secret456" \
-H "Content-Type: application/json" \
-d '{
"imagesIds": ["img_001", "img_002", "img_003", "img_004"]
}'