Zyphra API
Publish, generate, and automate programmatically. A REST API for scheduling social posts, generating video and images, and driving Zyphra from your own apps and AI agents.
Base URL
All endpoints are relative to your API host, set via NEXT_PUBLIC_API_URL. Examples below use a placeholder host.
https://api.yourdomain.comAuthentication
Authenticate every request with a Bearer API key. Keys are created in Dashboard → Settings → API keys and require a Pro plan.
Authorization: Bearer zy_live_...Scopes
readRead-only access to accounts, posts, media and job status.generateAccess to /generate and /batch generation endpoints only.adminFull access — required for all social publishing endpoints.curl https://api.yourdomain.com/api/v1/credits \
-H "Authorization: Bearer zy_live_..."| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/social/accounts | List connected accounts (id, platform, username). |
| POST | /api/v1/social/posts/schedule | Schedule a post to a single account. Returns { id }. |
| POST | /api/v1/social/posts/batch-schedule | Fan one post out to many accounts (max 20). Returns { id }. |
| GET | /api/v1/social/posts | List scheduled/published posts with status (scheduled | posted | failed). |
| GET | /api/v1/social/best-times | Recommended posting windows + personalized best hours (?platform=instagram). |
| GET | /api/v1/social/analytics | Posting activity summary per account. |
Schedule a post
Body for POST /api/v1/social/posts/schedule:
| Field | Type | Notes |
|---|---|---|
| accountId | string | Target account (from /social/accounts). |
| scheduledAt | ISO8601 string | When to publish. |
| content | string? | Caption / body text. |
| title | string? | Post title (where supported). |
| mediaUrls | string[]? | Public video URLs, max 10. |
| timezone | string? | Defaults to UTC. |
| recurrence | object? | { type: 'daily'|'weekly'|'biweekly'|'monthly', endAfter?: number } |
curl -X POST https://api.yourdomain.com/api/v1/social/posts/schedule \
-H "Authorization: Bearer zy_live_..." \
-H "Content-Type: application/json" \
-d '{
"accountId": "acct_123",
"scheduledAt": "2026-07-10T14:00:00Z",
"content": "New drop is live!",
"mediaUrls": ["https://cdn.example.com/clip.mp4"],
"timezone": "UTC"
}'Fan out to many accounts
batch-schedule takes the same body but replaces accountId with accountIds: string[] (max 20).
curl -X POST https://api.yourdomain.com/api/v1/social/posts/batch-schedule \
-H "Authorization: Bearer zy_live_..." \
-H "Content-Type: application/json" \
-d '{
"accountIds": ["acct_123", "acct_456"],
"scheduledAt": "2026-07-10T14:00:00Z",
"content": "Same post, many channels.",
"mediaUrls": ["https://cdn.example.com/clip.mp4"]
}'curl "https://api.yourdomain.com/api/v1/social/best-times?platform=instagram" \
-H "Authorization: Bearer zy_live_..."Media
Upload media to get a hosted, public URL you can pass to publishing and generation endpoints.
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/media/upload | Multipart file upload. Returns a hosted URL. |
| GET | /api/v1/media | List your media library. |
curl -X POST https://api.yourdomain.com/api/v1/media/upload \
-H "Authorization: Bearer zy_live_..." \
-F "file=@./clip.mp4"Generation
Start generation jobs and poll for results. Long-running jobs return a jobId you poll until complete.
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/generate | Start a generation job (faceless / viral-short / tools). Returns { jobId }. |
| GET | /api/v1/generate/{jobId} | Poll job status / result. |
| POST | /api/v1/video-gen | Frontier text-to-video (Veo / Kling). |
| POST | /api/v1/image-gen | AI image generation. |
| GET | /api/v1/credits | Credit balance. |
# Start a generation job
curl -X POST https://api.yourdomain.com/api/v1/generate \
-H "Authorization: Bearer zy_live_..." \
-H "Content-Type: application/json" \
-d '{ "type": "faceless" }'
# => { "jobId": "job_abc" }
# Poll for the result
curl https://api.yourdomain.com/api/v1/generate/job_abc \
-H "Authorization: Bearer zy_live_..."MCP Server
Drive Zyphra from AI agents (Claude, Cursor, and other MCP clients) over stdio. The server ships as @zyphra/mcp-server (services/mcp-server) with the zyphra-mcp binary.
Configuration
Set ZYPHRA_API_KEY (a zy_live_ key) and ZYPHRA_API_URL, then register the server with your MCP client.
{
"mcpServers": {
"zyphra": {
"command": "zyphra-mcp",
"env": {
"ZYPHRA_API_KEY": "zy_live_...",
"ZYPHRA_API_URL": "https://api.yourdomain.com"
}
}
}
}Available tools
list_video_modelsgenerate_videogenerate_imagegenerate_faceless_videoauto_edit_videoget_creditslist_social_accountsschedule_social_postlist_social_postsbest_time_to_postsocial_analyticsCLI
Prefer the terminal? The Zyphra CLI wraps the same API for accounts, posting, scheduling and credits.
npm install -g @zyphra/cli
zyphra --help
# Subcommands: accounts, post, schedule, posts, best-times, creditsReady to build?
Create an API key from your dashboard and start publishing and generating programmatically.
Get your API key
Social Publishing
Schedule and publish posts across connected accounts. These endpoints require an
admin-scope key. Supported platforms: tiktok, instagram, youtube, facebook, x, linkedin, threads. Publishing is currently video-first — provide a publicmediaUrl.