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

HeaderRequiredDescription
X-Api-KeyYesYour 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

CodeMeaning
401Missing or invalid API key
500Internal 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

HeaderRequiredDescription
X-Api-KeyYesYour API key in the format mk_live_xxx.secret
Content-TypeYesapplication/json

Request Body

FieldTypeRequiredDescription
imageIdstringConditionalID of the source image. Either imageId or generatedImageId is required.
generatedImageIdstringConditionalID of a generated image. Either imageId or generatedImageId is required.
suggestionstringNoCreative direction or motion suggestions for the video
providerstringNoVideo generation provider (default: pollo)

Response

{
  "createdRecordIds": ["vid_001"],
  "batchId": "batch_abc123",
  "orderId": "order_xyz789",
  "reservationId": "res_def456",
  "creditsReserved": 10
}

Error Responses

CodeMeaning
400Invalid request body or missing required image ID
401Missing or invalid API key
402Insufficient credits
500Internal 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 correlationId for log tracing.
  • You must provide either imageId or generatedImageId, 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

HeaderRequiredDescription
X-Api-KeyYesYour API key in the format mk_live_xxx.secret
Content-TypeYesapplication/json

Request Body

FieldTypeRequiredDescription
imagesIdsstring[]YesArray 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

CodeMeaning
400Invalid request body, missing imagesIds, or array size out of bounds
401Missing or invalid API key
402Insufficient credits
500Internal 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 correlationId for log tracing.
  • The imagesIds array 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"]
  }'