How It Works
Zebracat's REST API works with any platform that supports HTTP requests. Authenticate with your API key, call an endpoint, and automate the rest.
Base URL: https://api.zebracat.aiAuth Header: X-API-KEY: sk-your-api-keyContent-Type: application/json
Zapier Webhooks
Use Zapier's Webhooks by Zapier app to connect Zebracat to 6,000+ apps.
Setup
- Create a new Zap
- Choose your trigger (e.g., RSS by Zapier for new blog posts, Google Sheets for new rows)
- Add action: Webhooks by Zapier → Custom Request
- Configure the request:
Method: POST
URL: https://api.zebracat.ai/v1/video/idea
Headers:
X-API-KEY: sk-your-api-key
Content-Type: application/json
Body:
{
"idea": "{{trigger_data}}",
"duration": 30,
"aspect_ratio": "vertical",
"should_render": true
}
Workflow Recipes
Blog RSS → Auto Video
RSS New Item → Zebracat Blog-to-Video → Slack Notification
// Step 2: Webhooks by Zapier → Custom Request
Method: POST
URL: https://api.zebracat.ai/v1/video/blog
Body: {"url": "{{link}}", "language": "english", "duration": 60, "should_render": true}
// Step 3: Add Delay (3 minutes)
// Step 4: Webhooks by Zapier → GET
URL: https://api.zebracat.ai/v1/video/status?task_id={{step2_task_id}}
Headers: X-API-KEY: sk-your-api-key
// Step 5: Slack → Send Message
Message: "New video ready: {{step4_video_url}}"
Google Sheets → Batch Videos
New Row in Sheet → Zebracat Idea-to-Video → Update Row with Video URL
Form Submission → Personalized Video
Typeform Response → Zebracat Script-to-Video → Email Video Link
Make (Integromat) HTTP Module
Use Make's HTTP module for advanced multi-step video automation with branching and error handling.
Setup
- Create a new Scenario
- Add your trigger module (RSS, Google Sheets, Webhook, etc.)
- Add module: HTTP → Make a request
- Configure:
URL: https://api.zebracat.ai/v1/video/idea
Method: POST
Headers:
X-API-KEY: sk-your-api-key
Content-Type: application/json
Body type: Raw
Content type: JSON (application/json)
Request content:
{
"idea": "{{1.title}}",
"duration": 30,
"aspect_ratio": "vertical",
"should_render": true
}
Workflow Recipes
Multi-Language Video Pipeline
Trigger → Create Video → Wait → Poll Status → Translate (Iterator: es, fr, de) → Notify
// Module 1: HTTP → Create base video
POST https://api.zebracat.ai/v1/video/idea
Body: {"idea": "{{trigger.text}}", "duration": 30, "should_render": true}
// Module 2: Sleep → 180 seconds
// Module 3: HTTP → Poll status (loop until completed)
GET https://api.zebracat.ai/v1/video/status?task_id={{module1.task_id}}
// Module 4: Iterator → ["es", "fr", "de"]
// Module 5: HTTP → Translate each
POST https://api.zebracat.ai/v1/video/translate
Body: {"video_url": "{{module3.video_url}}", "target_language": "{{module4.value}}", "should_render": true}
// Module 6: Slack/Email → Send all video links
Social Media Auto-Publisher
Schedule (Weekly) → Agentic Video → Wait → Post to Instagram + TikTok + YouTube
n8n Self-Hosted
Self-hosted workflow automation. Full control, no limits. Use the HTTP Request node.
Setup
- Add an HTTP Request node
- Set authentication: Generic Credential Type → Header Auth
- Header Name:
X-API-KEY, Header Value:sk-your-api-key
Importable Workflow: Blog-to-Video Pipeline
{
"nodes": [
{
"name": "RSS Feed",
"type": "n8n-nodes-base.rssFeedRead",
"parameters": {"url": "https://your-blog.com/feed"},
"position": [250, 300]
},
{
"name": "Create Video",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "POST",
"url": "https://api.zebracat.ai/v1/video/blog",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"bodyParameters": {
"parameters": [
{"name": "url", "value": "={{$json.link}}"},
{"name": "language", "value": "english"},
{"name": "duration", "value": "60"},
{"name": "should_render", "value": "true"}
]
},
"options": {}
},
"position": [480, 300]
},
{
"name": "Wait",
"type": "n8n-nodes-base.wait",
"parameters": {"amount": 3, "unit": "minutes"},
"position": [700, 300]
},
{
"name": "Check Status",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "GET",
"url": "=https://api.zebracat.ai/v1/video/status?task_id={{$node['Create Video'].json.task_id}}",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"position": [920, 300]
},
{
"name": "Send Notification",
"type": "n8n-nodes-base.slack",
"parameters": {
"channel": "#videos",
"text": "=New video ready: {{$json.video_url}}"
},
"position": [1140, 300]
}
],
"connections": {
"RSS Feed": {"main": [[{"node": "Create Video", "type": "main", "index": 0}]]},
"Create Video": {"main": [[{"node": "Wait", "type": "main", "index": 0}]]},
"Wait": {"main": [[{"node": "Check Status", "type": "main", "index": 0}]]},
"Check Status": {"main": [[{"node": "Send Notification", "type": "main", "index": 0}]]}
}
}
Copy the JSON above and import it in n8n via Workflow → Import from JSON.
Agentic Video from Webhook
Webhook Trigger → Agentic Video → Loop Until Done → Webhook Response
// HTTP Request node config for Agentic Video:
Method: POST
URL: https://api.zebracat.ai/v1/video/agentic
Body (JSON):
{
"prompt": "={{$json.body.prompt}}",
"should_render": true
}
API Endpoints Quick Reference
All endpoints use base URL https://api.zebracat.ai with header X-API-KEY: sk-your-key
| Endpoint | Method | Use Case |
|---|---|---|
| /v1/video/agentic | POST | AI picks everything — just give a prompt |
| /v1/video/idea | POST | Video from a text idea |
| /v1/video/script | POST | Video from a written script |
| /v1/video/blog | POST | Video from a blog URL |
| /v1/video/audio | POST | Video from an audio file |
| /v1/video/translate | POST | Translate existing video |
| /v1/video/status | GET | Check video generation status |
| /v1/script_generator | POST | Generate a script (no video) |
| /v1/voices | GET | List available voices |
| /v1/avatars | GET | List available avatars |
| /v1/visual_styles | GET | List visual styles |
| /v1/templates | GET | List video templates |
| /v1/video/languages | GET | List supported languages |