Generate Multi-Format Videos
Asynchronously generate MP4 videos across multiple formats from a single Animated design. Use this endpoint to produce video creatives at different dimensions in one call — for example, a 16:9 landscape video and a 9:16 vertical Story from the same template.
The API returns immediately and delivers results via a NEW_BANNER_BATCH webhook event to your callback_url when all formats are ready.
Plan requirement
This feature is available from the Pro plan.
Endpoint
POST/async/banner-builder/{designId}/generateAPI Reference
Generation characteristics
- Supported Design Type: Animated
- Response: Asynchronous
image_file_typedefaults to"mp4"on animated designs — omit it or set it explicitly- Retrieval methods: Webhooks, Polling
Output file types
Supported: MP4
Input video customization
- Supported input formats:
MP4,WebM,MOV - Maximum file size: 100 MB
- Trim with query parameters on the video URL:
?trim_start=2.5— start at 2.5 seconds?trim_end=10— end at 10 seconds
- Mute audio with
audio_muted: 1(a number, not a boolean)
json
{
"video_element_name": {
"video_url": "https://example.com/video.mp4",
"audio_muted": 0
}
}Output Customization — FPS
Configure frame rate via the video property:
- Default: 24 fps
- Range: 2–30 fps
json
{
"video": { "fps": 24 }
}Request body fields
All body fields are optional.
| Field | Type | Required | Description |
|---|---|---|---|
elements | object | No | Dictionary of element overrides keyed by layer name. See Element Properties. Omit to render the design's saved default content. |
template_format_names | array<string> | No | Format IDs to generate. Omit to generate every format of the design. An entry that doesn't exist on the design answers 404 with id: format_not_found. |
callback_url | string (url) | No | Webhook URL notified when the batch completes. Omit to retrieve results by polling. |
image_file_type | string | No | Animated designs default to "mp4" — omit it, or set it explicitly. |
video | object | No | Video output options: fps (2–30, default 24). |
original_visual_id | string (uuid) | No | Regenerate an existing visual in place — see Visual Versioning. Must target exactly one format. |
Sample request
Replace {YOUR-API-KEY} and {designId} before running.
bash
curl -X POST \
-H "x-api-key: {YOUR-API-KEY}" \
-H "Content-Type: application/json" \
-d '{
"callback_url": "https://webhook.mycompany.com/videos",
"image_file_type": "mp4",
"video": { "fps": 24 },
"template_format_names": ["facebook-feed", "instagram-post"],
"elements": {
"primary_text": { "payload": "New branding available.", "color": "#FF0000" },
"video_0": { "video_url": "https://mycompany.com/video.mp4", "audio_muted": 0 }
}
}' \
https://api.abyssale.com/async/banner-builder/{designId}/generateSample response
json
{ "generation_request_id": "df75afa8-5a77-4e03-aeef-6d1b6dd0580a" }Related
- Asynchronous Generation Overview
- Video Element Properties
- Banner Events — webhook payload on completion
- Errors — error codes for failed requests
- Node.js SDK · Python SDK — every method, config, retries and the polling helpers
