AI Video Generation API

An AI Video Generation API
Built For Code, Not Just Prompts.

One API key opens Moosky's video, image, and upscaling engines to your scripts, apps, and no-code tools. Queue a generation, price it before it runs, and pull the finished file — or let a webhook hand it to you.

AuthAn API key exchanged for a bearer token
ModelsLive lineup from the same registry the app uses
BillingCredits per run, quoted before it fires
DocsSwagger UI from the generated OpenAPI spec
Hero demo video
AI Video Generation API
Two-step auth: key to token to call
A public OpenAPI spec with Swagger UI
Webhooks push finished renders to you
Built for creators, storytellers, and teams who want production-ready results in minutes.

Model Options

One spec, three lanes of automation

The same registry the studio renders from answers for the API: pick a composer slug, post the selections, and the run is billed like any other.

Text and image to video

Wan 3.0, LTX 2.5, and Seedance 2.5 queue from a POST. The prompt, the start frame, the length, and the seed all travel as selections — the same schema the studio uses — so your pipeline and your editors render the identical shot.

T2V, I2V, and reference modes Native audio and camera control Cost quoted before every run Finished clips streamed by URL
Get An API Key

Generation, editing, upscaling

GPT Image 2.5, Seedream, and Qwen Image 3.0 generate and edit stills the same way; SeedVR2 and Ultimate Image Upscaler finish the passes. Catalog shots, thumbnails, and hero stills come out of the same key and the same balance.

T2I, I2I, and edit modes Batch-friendly public URLs One key across every lane Watermark-free downloads
Compare Models

Example Outputs

Shots from the same engines your script calls

Public outputs from Wan 3.0 and Seedance 2.0 R2V — the exact renders a single API call produces.

Why use it on Moosky AI

What you can build on the Moosky API

Same engines as the studio, driven from code — for anyone who generates at volume or ships the feature inside their own product.

Batch generation at scale

Fifty prompt lines, fifty clips from one script loop — no queue babysitting, and each run priced in credits before it fires.

Webhook-driven pipelines

Register a webhook against your key and the status push lands the moment a render finishes, no status polling in your loop.

Backend for your own app

Ship an AI feature on Moosky's engines while your users keep your interface; the key stays server-side.

Quotes before you spend

The estimate endpoint returns the exact credit cost of a run first, so nothing hits your balance without your code approving it.

One balance, every engine

The same credits that fund the studio fund the API, so an automation never needs its own bill or subscription.

OpenAPI, not folklore

The Swagger UI at api.moosky.ai/docs is generated from the same routes that serve you — every path and schema on one page.

How It Works

From key to finished render in three calls

1

Create your key

Sign up, open the /developer page, and create a key — copy the client secret once, it shows a single time.

2

Swap it for a token

POST the key pair to the token endpoint and keep the bearer token inside your script or server.

3

Generate and retrieve

Queue a run with the composer slug and selections, take the status or webhook, and download the finished file.

The same engines the studio runs, wired into your own stack

A content agency had a monthly problem: four hundred product videos a quarter, and an editor billing by the finished clip. The team built a script on the Moosky API instead — one JSON row per product, one POST per clip — and the editor's job shrank to the hero accounts that still earned a human cut.

The endpoint list is deliberately small and fully public: create a key on the developer page, exchange it for a token, list the live composers, queue a scene execution, and read its status or wait for the webhook. Nothing on this page exists that the OpenAPI spec does not already publish at api.moosky.ai/docs.

The part that convinced the agency was the quote call. Before a run hits the balance, the estimate endpoint returns the exact credit cost, so a bad template fails in staging at zero cost instead of burning the account's credits overnight — on the same balance that funds the studio, with no second contract to sign.

Quickstart

Key, token, first render — in three calls

Copy-paste from the endpoints the live OpenAPI spec publishes. Swap the composer slug for anything the registry lists.

Token, scene, cost quote, queue, and status — five calls, no SDK.

# 1) Exchange the key pair (from /developer) for a bearer token
curl -s -X POST "https://api.moosky.ai/auth/api-key/token" \
  -H "Content-Type: application/json" \
  -d '{"client_id":"YOUR_CLIENT_ID","client_secret":"YOUR_C…ET"}'
# -> { "token": "<jwt>" }   export TOKEN="<the token>"

# 2) Queueing runs against a scene YOU own — create one here
#    (POST /scenes returns its id) or reuse a scene id from the studio.
#    A key on someone else's id gets "Scene not found" (404).
curl -s -X POST "https://api.moosky.ai/scenes" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"my first api scene"}'
# -> { "id": 42 }   export SCENE_ID=42   # YOUR_SCENE_ID below

# 3) Quote the run before you spend (public endpoint, no auth)
curl -s -X POST "https://api.moosky.ai/executions/estimate-cost" \
  -H "Content-Type: application/json" \
  -d '{"sceneComposerSlug":"wan30-scene-composer","selections":[{"optionSlug":"prompt","value":{"value":"a drone shot over pine forest at sunrise"}}]}'
# -> { "credits": 87 }

# 4) Queue the generation and read it back
curl -s -X POST "https://api.moosky.ai/scenes/YOUR_SCENE_ID/executions" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"sceneComposerSlug":"wan30-scene-composer","selections":[{"optionSlug":"prompt","value":{"value":"a drone shot over pine forest at sunrise"}}]}'

curl -s "https://api.moosky.ai/executions" \
  -H "Authorization: Bearer $TOKEN"

Credit-based

Simple, honest pricing

API runs draw from the same credit balance as the studio — no separate tier, no subscription. Quote each run first, then pay credits per generation at 100 credits per dollar.

Pay as you goOnly pay when you generate.
No monthly feesNo subscriptions. No commitments.
Credits never expireUse your credits whenever you want.
Commercial useUse outputs for personal or commercial projects.
View credits & pricing

Frequently Asked Questions

How do I get an API key for Moosky?

Create a free account, open the /developer page, and create a key with a name. Copy the client secret immediately — it is shown once. Then POST it with the client id to the token endpoint and use the returned bearer token on every call.

Does the API use the same credits as the app?

Yes. One balance funds generations from the studio, the no-code tools, and the API. Runs bill per generation at the same rate, and the estimate endpoint quotes the exact cost before anything is queued.

Which models are available through the API?

Everything the live model registry exposes, and it is queryable: GET the scene-composer list and the response shows the current video, image, and upscaling engines with their slugs and capabilities. The lineup on this page reads from that same registry.

Can I generate video from a script or cron job?

That is the main use. Loop your prompt rows, POST one queue call per clip, and collect finished files from the status response or a webhook. Teams wire it into n8n, Make, and custom workers the same way.

Are there webhooks?

Yes. Register an endpoint URL against your key, and a status update is pushed to it when an execution's state changes, so your worker never has to poll for renders to finish.

Is there a rate limit?

Key creation is throttled as an abuse guard. For volume beyond normal API traffic — huge catalogs, sustained throughput — write support@moosky.ai and we look at your numbers before you build around a wall.

Where are the docs?

The Swagger UI lives at api.moosky.ai/docs with the OpenAPI spec beside it, generated from the routes the API actually serves — the quickest way to verify a parameter is to read it there.