Generate Multi-Format Videos
How to generate videos - Abyssale REST API
Asynchronous Asset Generation Endpoint
POST /async/banner-builder/{design_id}/generate
Generation Characteristics
- Supported Design Type: Animated 
- Response: Asynchronous 
- Enables batch generation of multiple assets 
- Required Parameter: - image_file_type=mp4
- Retrieval methods: - Webhooks 
- Polling 
 
Output File Types
Supported formats:
- MP4 videos 
Additional information
Input Video Customization
- Supported Input Formats: MP4, WebM, MOV 
- Maximum File Size: 100 MB 
- The video can be trimmed using the following query properties to the video url: - trim_start: Start of the video in seconds. i.e: ?trim_start=2.5 to start your video at 2.5s
- trim_end: End of the video in seconds. i.e: ?trim_end=10 to end your video at 10s
 
- The sound can be muted by using the property - audio_mutedand set it to- 1
Example Input Video Configuration:
"video_element_name": {
 "video_url": "https://example.com/video.mp4",
 "audio_muted": 0,
}Output customisation
In addition to the supported image properties, a video property can be set to customise the output video. Here is the available option:
Video Frame Rate Configuration FPS (Frames Per Second)
- Default: 24 fps 
- Range: 2-30 fps 
Configuration Example:
"video": {
 "fps": 24
}Sample request
Do not forget to replace {YOUR-API-KEY} and {design_id}
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", "iab-medium"],
  "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/{design_id}/generateconst axios = require('axios');
const payload = {
  "callback_url": "https://webhook.mycompany.com/videos",
  "image_file_type": "mp4",
  "video": {
    "fps": 24
  },
  "template_format_names": ["facebook-feed", "instagram-post", "iab-medium"],
  "elements": {
    "primary_text": {
        "payload": "New branding available.",
        "color": "#FF0000"
    },
    "video_0": {
      "video_url": "https://mycompany.com/video.mp4",
      "audio_muted": 0
    }
  }
}
// Replace {id} by your template ID
axios.post("https://api.abyssale.com/async/banner-builder/{design_id}/generate", payload, {
    headers: {"x-api-key": "{YOUR-API-KEY}", "Content-Type": "application/json", "timeout": 30000}
  }).then(response => {
    console.log(response.data)
}jimport json
import requests
image_generation_payload = {
  "callback_url": "https://webhook.mycompany.com/videos",
  "image_file_type": "mp4",
  "video": {
    "fps": 24
  },
  "template_format_names": ["facebook-feed", "instagram-post", "iab-medium"],
  "elements": {
    "primary_text": {
        "payload": "New branding available.",
        "color": "#FF0000"
   },
    "video_0": {
      "video_url": "https://mycompany.com/video.mp4",
      "audio_muted": 0
    }
  }
}
# Do not forget to replace {YOUR-API-KEY} and {template_id}
r = requests.post("https://api.abyssale.com/async/banner-builder/{design_id}/generate",
  headers={"x-api-key": "YOUR-API-KEY", "Content-Type": "application/json"},
  data=json.dumps(image_generation_payload),
  timeout=30
)
r.json()Sample response
{
  "generation_request_id": "df75afa8-5a77-4e03-aeef-6d1b6dd0580a"
}Last updated
