Overview
Dockora API lets you generate professional AI videos programmatically using Runway Gen-4 Turbo.
Image → Video
Animate any product photo into a 10-second cinematic video.
Text → Video
Generate videos from text prompts with full creative control.
Webhooks
Get notified automatically when your video is ready.
Base URL
https://nhvqzogqwlrnzigmimpg.supabase.co/functions/v1| Method | Endpoint | Description |
|---|---|---|
| POST | /api-generate | Start a video generation task |
| GET | /api-status | Poll task status & get video URL |
Quick Start
From zero to your first generated video in under 5 minutes.
Get your API Key
Request an API key from the API for Business page. You'll receive it via email within 24 hours. Format: dk_xxxxxxxxxxxxxxxx
Make your first request
Send a POST to /api-generate with your image URL, prompt and style. You'll get back a task_id immediately.
Poll for the result
Every 4 seconds, GET /api-status?task_id=xxx until status is "succeeded". Then download from video_url.
# 1. Generate a video
curl -X POST \
https://nhvqzogqwlrnzigmimpg.supabase.co/functions/v1/api-generate \
-H "X-API-Key: dk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"mode": "image_to_video",
"image_url": "https://cdn.example.com/product.jpg",
"prompt": "Cinematic product reveal, slow zoom",
"style": "cinematic"
}'
# 2. Poll for result (every 4 seconds)
curl -X GET \
"https://nhvqzogqwlrnzigmimpg.supabase.co/functions/v1/api-status?task_id=task_abc123" \
-H "X-API-Key: dk_your_key_here"Authentication
All API requests require authentication via your API key.
Option 1 — Header (Recommended)
X-API-Key: dk_your_key_here
Option 2 — Bearer Token
Authorization: Bearer dk_your_key_here
Security Warning
Never expose your API key in client-side code or public repositories. Always make API calls from your backend server. Rotate your key immediately if compromised.
POST /api-generate
POST/api-generateStart a new video generation task. Returns a task_id for polling.
Request Body
| Parameter | Type | Required |
|---|---|---|
mode | string | Yes |
image_url | string | No |
prompt | string | No |
style | string | No |
webhook_url | string | No |
Available Styles
"cinematic""dramatic""dreamy""energetic""minimal""vintage""corporate""luxury"Response 200
{
"task_id": "task_abc123xyz",
"status": "pending",
"mode": "image_to_video",
"style": "cinematic",
"credits_remaining": 249,
"poll_url": "https://nhvqzogqwlrnzigmimpg.supabase.co/functions/v1/api-status?task_id=task_abc123xyz",
"message": "Video generation started. Poll every 4 seconds."
}curl -X POST \
https://nhvqzogqwlrnzigmimpg.supabase.co/functions/v1/api-generate \
-H "X-API-Key: dk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"mode": "image_to_video",
"image_url": "https://cdn.example.com/product.jpg",
"prompt": "Slow cinematic zoom, golden hour lighting",
"style": "cinematic",
"webhook_url": "https://yourapp.com/webhooks/video-ready"
}'GET /api-status
GET/api-statusPoll the status of a video generation task. Call every 4 seconds until status is 'succeeded' or 'failed'.
Query Parameters
| Parameter | Type | Required |
|---|---|---|
task_id | string | Yes |
Status Values
Response — Processing
{
"task_id": "task_abc123xyz",
"status": "processing",
"progress": 45,
"message": "Generating video frames..."
}Response — Succeeded
{
"task_id": "task_abc123xyz",
"status": "succeeded",
"video_url": "https://runway-output.s3.amazonaws.com/abc123.mp4",
"duration": 10,
"style": "cinematic",
"completed_at": "2026-04-29T14:32:00Z",
"message": "Video ready. Download or stream from video_url."
}curl -X GET \ "https://nhvqzogqwlrnzigmimpg.supabase.co/functions/v1/api-status?task_id=task_abc123xyz" \ -H "X-API-Key: dk_your_key_here"
Webhooks
Instead of polling, receive an automatic POST callback when your video is ready. Available on Growth and Enterprise plans.
Pass a webhook_url in your /api-generate request. When the video is ready, Dockora will POST the result to your URL. Your endpoint must respond with HTTP 200 within 10 seconds.
Webhook Payload
{
"task_id": "task_abc123xyz",
"status": "succeeded",
"video_url": "https://runway-output.s3.amazonaws.com/abc123.mp4",
"mode": "image_to_video",
"style": "cinematic",
"completed_at": "2026-04-29T14:32:00Z"
}# Dockora POSTs this payload to your webhook_url when video is ready:
# {
# "task_id": "task_abc123xyz",
# "status": "succeeded",
# "video_url": "https://runway-output.s3.amazonaws.com/video.mp4",
# "mode": "image_to_video",
# "style": "cinematic",
# "completed_at": "2026-04-29T14:32:00Z"
# }
# Your endpoint must return HTTP 200 within 10 seconds.Error Codes
All errors return a JSON body with code, message and a fix suggestion.
| Code | Name |
|---|---|
| 401 | Unauthorized |
| 402 | Payment Required |
| 403 | Forbidden |
| 422 | Unprocessable Entity |
| 429 | Too Many Requests |
| 500 | Internal Server Error |
| 503 | Service Unavailable |
Error Response Format
{
"error": "No credits remaining",
"code": 402,
"fix": "Upgrade your plan or wait for monthly reset",
"credits_remaining": 0,
"plan": "starter"
}Rate Limits
Rate limits are enforced per API key. Exceeding limits returns HTTP 429.
| Plan | Req / min | Req / day | Concurrent | Queue |
|---|---|---|---|---|
| Starter | 10 | 50 | 2 | Standard |
| Growth | 30 | 300 | 5 | Priority |
| Enterprise | 100 | 2000 | 20 | Dedicated |
Rate Limit Headers
X-RateLimit-LimitMax requests per minuteX-RateLimit-RemainingRequests remaining this minuteX-RateLimit-ResetUnix timestamp when limit resetsX-Credits-RemainingMonthly credits remainingSDKs & Libraries
Official and community SDKs to speed up your integration.
Python
Official Python SDK with async support, automatic polling and type hints.
pip install dockoraNode.js
Official Node.js SDK with Promise/async-await, TypeScript types included.
npm install @dockora/sdkPHP
Community-maintained PHP SDK. Supports Laravel and Symfony.
composer require dockora/php-sdkREST (OpenAPI)
Full OpenAPI 3.0 spec. Import into any REST client for instant testing.
Import into Postman / InsomniaPostman Collection
Pre-configured collection with all endpoints, example requests and environment variables.
API Playground
InteractiveBuild and test your request visually. The generated cURL updates in real time.
curl -X POST \
https://nhvqzogqwlrnzigmimpg.supabase.co/functions/v1/api-generate \
-H "X-API-Key: dk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"mode": "image_to_video",
"image_url": "https://cdn.example.com/product.jpg",
"prompt": "Cinematic product reveal, slow zoom",
"style": "cinematic"
}'Click "Run Request" to see the simulated response
Changelog
API version history and release notes.
- Added webhook_url parameter to /api-generate
- Email notification when video is ready
- New style: "luxury" added
- Credits alert at 80% and 95% usage
- Added text_to_video mode
- New styles: corporate, vintage
- Improved error messages with fix suggestions
- Rate limit headers in all responses
- Reduced average generation time by 40%
- Added credits_remaining to all responses
- Bearer token auth support added
- Improved webhook reliability
- Initial public API launch
- POST /api-generate endpoint
- GET /api-status endpoint
- 6 cinematic styles
- image_to_video mode
Ready to build?
Get your API key and start generating videos in minutes. No setup fees, cancel anytime.