Creative Studio API
Generate images and videos asynchronously through the public API.
Creative Studio API
Creative Studio lets you generate images and videos using your credit balance. Generations run asynchronously — start a job, then poll its status until it completes.
Authentication
All endpoints require an API key. Write endpoints require the creative:generate scope. Enable Allow Creative Studio generation when creating a key in your Account settings.
Model catalog endpoints require the read scope.
Workflow
- List models with
GET /v1/creative-studio/models - Start a generation with
POST /v1/creative-studio/generations - Poll
GET /v1/creative-studio/generations/{id}untilstatusiscompletedorfailed - When completed, use
outputUrl— a CDN URL oncdn.videoslash.com
Media inputs
Hosted URLs
Pass reference images, videos, or audio as HTTPS URLs in the mediaUrls object. Keys must match the model's media parameter names (for example input_images, start_image, video_urls).
{
"modelId": "nano-banana-2",
"prompt": "A cinematic product photo on marble",
"mediaUrls": {
"input_images": ["https://example.com/reference.jpg"]
},
"parameters": {
"aspect_ratio": "1:1"
}
}Local files
For local files, request a presigned upload URL, PUT the bytes directly to storage, then reference the returned uploadId in mediaUploads:
# 1. Request upload URL
curl -s -X POST "$API_BASE_URL/v1/creative-studio/media-uploads" \
-H "Authorization: Bearer vsl_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"fileName": "reference.jpg",
"contentType": "image/jpeg",
"fileSizeBytes": 245678,
"modelId": "nano-banana-2"
}'
# 2. Upload bytes (use requiredHeaders from the response)
curl -s -X PUT "$UPLOAD_URL" \
-H "Content-Type: image/jpeg" \
-H "Content-Length: 245678" \
--data-binary @reference.jpg
# 3. Start generation with uploadId
curl -s -X POST "$API_BASE_URL/v1/creative-studio/generations" \
-H "Authorization: Bearer vsl_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"modelId": "nano-banana-2",
"prompt": "A cinematic product photo on marble",
"mediaUploads": {
"image_input": ["UPLOAD_ID_FROM_STEP_1"]
}
}'Uploaded files are stored temporarily until a generation references them. Permanent reference storage is only created after credits are verified for the generation request.
Model reference
Each model has its own parameter set. Browse the generated model pages in the sidebar for request examples and parameter tables.
Credits
Credits are checked before a generation starts. The actual charge happens when processing begins, matching dashboard behavior. Failed generations are refunded automatically.