Authentication
Send your key as a bearer token. Live keys start with mog_live_ and test keys with mog_test_. Test keys are free and use stub providers, so responses are realistic but nothing is billed. Keys are shown once; we only keep a hash.
API access opens with the studio.
Everything the studio does, available to your product: create music videos and animations, direct revisions in plain language, export files and follow progress live. The API opens with the studio; this page describes what is coming.
curl https://api.mogable.com/v1/music-videos \
-H "Authorization: Bearer mog_test_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 4f6c1d2e-first-video" \
-d '{
"prompt": "a lo-fi song about the last train home",
"aspect_ratio": "9:16",
"webhook_url": "https://example.com/hooks/mogable"
}' | Method and path | Purpose |
|---|---|
POST /v1/music-videos | Create a music video from a prompt, optional lyrics and styles |
POST /v1/animations | Create a character, voice-over or sound animation |
GET /v1/scenes/{id} | Read a scene and its current version |
POST /v1/scenes/{id}/revisions | Direct a change in plain language |
GET /v1/scenes/{id}/versions | The version tree |
POST /v1/scenes/{id}/exports | Render MP4, WebM or GIF at 720p, 1080p or 4K |
GET /v1/jobs/{id}/events | Live progress as Server-Sent Events |
GET /v1/usage | Credit balance and usage this period |
Send your key as a bearer token. Live keys start with mog_live_ and test keys with mog_test_. Test keys are free and use stub providers, so responses are realistic but nothing is billed. Keys are shown once; we only keep a hash.
Creating a video returns 202 with a job. Poll the job, stream its progress as Server-Sent Events, or receive a signed webhook when it finishes.
Every POST accepts an Idempotency-Key header. Repeating a request within 24 hours returns the original response instead of creating a second video.
Errors use RFC 9457 problem details with a stable type and code, so your code can branch on them without parsing messages.
Every response carries RateLimit and RateLimit-Policy headers. Over the limit you get 429 with Retry-After. Long jobs queue rather than fail when you hit your concurrency limit.
Events: job.succeeded, job.failed, revision.ready, export.ready and credits.low. Payloads are signed with HMAC-SHA256 following the Standard Webhooks spec and retried with backoff for 72 hours.