my-platform

One key,
17 models

Pay-per-use API for AI images and video. Nano Banana, GPT Image, Kling, Veo and more behind one endpoint.

See all models
veo-3-1

Every picture on this page was generated through this API.

One prompt, eight models

Switch the model and see what it made from the same prompt, and what it charged.

Made by nano-banana-pro from the prompt

“A small red rowing boat on a still, deep blue lake at first light, seen from directly above. One person rows; long ripples trail behind the boat across the glassy water. Photographic, natural colour.”

Resolution
OutputOne image
Aspect ratio1:1
Statuscompleted
Credits charged1
{"model":"nano-banana-pro","resolution":"1K"}Credits for every model

Send it yourself with one call to POST /v1/generations and your key.

Every model, one price list

Credits are charged when a request is accepted and refunded in full if it fails. Video is charged per second.

Image modelResolutionsCredits an image
nano-banana-pro11 aspect ratios1K · 2K · 4K1–2
nano-banana-215 aspect ratios0.5K · 1K · 2K · 4K1–2
nano-banana-2-lite11 aspect ratios1K1
nano-banana8 aspect ratios1K1
gpt-image-214 aspect ratios1K · 2K · 4K1–2
gpt-image-2-5-flare11 aspect ratios1K · 2K · 4K1–2
gpt-image-2-5-sunburst11 aspect ratios1K · 2K · 4K1–2
seedream-5-pro8 aspect ratios1K · 2K1
Video modelResolutionsCredits a second
kling-3Clips of 3–15 s720p · 1080p1–2
seedance-2Clips of 5–15 s480p · 720p · 1080p · 4k1–4
seedance-2-5Clips of 4–30 s480p · 720p · 1080p1–2
gemini-omniClips of 4–10 s720p1
gemini-omni-flash-1-1Clips of 4–10 s720p · 1080p · 4k1–4
veo-3-1Clips of 8 s720p · 1080p · 4k1–4
grok-imagineClips of 6–15 s480p · 720p · 1080p1–2
wan-3Clips of 2–30 s480p · 720p · 1080p1–2
wan-3-primeClips of 2–30 s480p · 720p · 1080p1–2

How it works

  1. Pick

    17 image and video models, most served by two upstream providers.

  2. Send

    One key, one endpoint. POST the model and prompt and get an id back at once.

  3. Collect

    GET the generation for its outputUrl, a file copied to our storage that doesn't expire.

When things fail

  • A second provider takes over

    15 of 17 models are served by two upstream providers. When the first errors, the request moves to the next without a new call from you.

  • Failed means free

    When every route fails, the generation is marked failed with the provider's reason, and its credits go straight back to your balance.

  • Retries charge once

    Send an Idempotency-Key header and a repeated POST returns the generation it already made instead of charging for a second one.

  • Renders survive our deploys

    Jobs wait in a queue that outlives the workers, so a release mid-render hands the job to the next worker instead of dropping it.

Credits cost
$X.XX each

Prepaid, no subscription. One credit buys a 1K image from any image model, and video starts at one credit a second. Failed generations are refunded.

Questions

Do I need a subscription?

No. You buy credits up front and each generation spends them. There is no monthly fee and no minimum per request.

What happens when a generation fails?

First it moves to the backup provider, if the model has one. If every route fails, the generation is marked failed, you get the provider's reason, and the credits go back to your balance.

Can I retry a request safely?

Yes. Send an Idempotency-Key header. Repeating a POST with the same key and body returns the generation it already made, and charges nothing again.

How do I get the result?

Poll GET /v1/generations/{id} until its status is completed, then download from outputUrl. We copy every output to our own storage, so the link doesn't expire with the provider's.

Can I send reference images?

Yes. The image models take up to 10–16 reference images depending on the model, and most video models take reference images, clips or audio as well as a prompt.

How do I check my balance?

On the dashboard, or from code with GET /v1/balance. Every request that would overspend is refused before anything is charged.

Your first render in a few minutes

Sign in with Google, create a key and send your first request.