Veo 3.1
Live on the APIveo-3-1$0.156/s$0.20-22%
- Input → output
- Text promptImageStart and end framesVideo
- Lengths
- 4–8 s
- Quality
- 720p · 1080p · 4K
Veo 3.1 API prices
Every tier we sell, next to the model maker's official price.
| Tier | Opennan | Official |
|---|---|---|
| 720p, Standard | $0.156/s$1.248 for 8 s | $0.20/s22% below |
| 1080p, Standard | $0.156/s$1.248 for 8 s | $0.20/s22% below |
| 4K, Standard | $0.312/s$2.496 for 8 s | $0.40/s22% below |
| 720p, Standard, with audio | $0.312/s$2.496 for 8 s | $0.40/s22% below |
| 1080p, Standard, with audio | $0.312/s$2.496 for 8 s | $0.40/s22% below |
| 4K, Standard, with audio | $0.468/s$3.744 for 8 s | $0.60/s22% below |
Official is the model maker's own list price for the same tier. Where the maker publishes a price, we never sell above it, most tiers at least 10% below.
Call Veo 3.1 from your code
Everything for your first call is on this page: the endpoint, a key, the request and every parameter.
https:/ / api.opennan.com/ v1/ videos/ generationsGet an API key
Create a key in the console. It uses the same balance as the playground.
Create a keySend your first request
The same request the playground sends. Set OPENNAN_KEY to your key.
curl https://api.opennan.com/v1/videos/generations \ -H "Authorization: Bearer $OPENNAN_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"veo-3-1","prompt":"Rain on a neon street at night, slow push-in","duration":4,"quality":"720p","aspect_ratio":"16:9"}' # Then poll until "status" is "succeeded" or "failed": curl https://api.opennan.com/v1/tasks/<task id> -H "Authorization: Bearer $OPENNAN_KEY"Poll the task
The call answers right away with a task id. Ask for the task until it finishes:
GEThttps:// api.opennan.com/ v1/ tasks/ {id} - queued
- Waiting for a worker
- running
- Being made
- succeeded
- Done: outputs[].url holds the files
- failed
- Failed: you are not charged
Parameters
Built from the live catalog: every value listed here is one the API accepts.
Errors and how to fix them
401Missing or wrong key
Send the header Authorization: Bearer with a key from the console.
402Balance too low
Add credit in Billing, then send the same call again.
400A value is not accepted
Read error.message: it names the field. Use a value from the parameter table.
429Too many requests
Wait a few seconds and try again, waiting longer after each 429.
Add Opennan to your AI app
One install gives your AI every Opennan tool: video, images, chat, voice, music, sound effects, 3D, captions and dubbing. Pick your app and follow the steps.
https:/ / api.opennan.com/ v1/ mcpWorks in the Codex CLI, the Codex app and the Codex IDE extension: they share ~/.codex/config.toml. If the app or IDE does not see OPENNAN_KEY, use the config.toml option with your key in it. Codex asks before each tool call: approve it to go on.
Get an API key
Create a key in the console. It starts with sk- and uses the same balance as the website.
Create a keySave your key as OPENNAN_KEY
# macOS / Linux (zsh shown; bash: ~/.bashrc) echo 'export OPENNAN_KEY="sk-..."' >> ~/.zshrc source ~/.zshrc # Windows (PowerShell), then open a new terminal setx OPENNAN_KEY "sk-..."Install the Opennan plugin: the server plus a skill that teaches your AI to pick models, confirm prices and wait for results
codex plugin marketplace add Opennan/opennan-ai-plugin codex plugin add opennan@opennanOr add only the server
codex mcp add opennan --url https://api.opennan.com/v1/mcp --bearer-token-env-var OPENNAN_KEYOr add this to ~/.codex/config.toml
[mcp_servers.opennan] url = "https://api.opennan.com/v1/mcp" http_headers = { Authorization = "Bearer sk-..." }Check that opennan is listed
codex mcp listRestart Codex, then ask for anything
“Make a 5 second video of rain on a neon street, a song to go with it and a poster image.”
Replace sk-... with your own key and keep it private: anyone who has it can spend your balance. Your app can list the tools before you add a key; making anything needs one.
This tool from your AI
Once Opennan is added, your AI calls this tool with arguments like these.
- Tool
- generate_video
- Example arguments
{ "model": "veo-3-1", "prompt": "Rain on a neon street at night, slow push-in", "duration": 4 }
Veo 3.1 API questions
How much does the Veo 3.1 API cost?
Veo 3.1 API on Opennan: $0.156/s at 720p, 22% below Google's official $0.20/s. Prices are in US dollars per call, shown before you run, and every tier is in the price table.
How does that compare with the official price?
Google lists $0.20/s; Opennan charges $0.156/s, 22% below. We only sell a tier below the maker's official price, most tiers at least 10% below.
What inputs does Veo 3.1 take?
Text prompt, Image, Start and end frames.
Which options can a call set?
Lengths: 4, 6, 8 seconds. Resolutions: 720p, 1080p, 4K. Aspect ratios: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 9:21.
How is it billed?
Per video: the price depends on resolution, length and sound, and is shown before the call.
What happens if a generation fails?
A failed task is refunded in full. You pay only for results.
How do I call Veo 3.1 from an AI agent?
Add the MCP server https://api.opennan.com/v1/mcp with your API key as a bearer token, then call the generate_video tool with model "veo-3-1". Or send a POST to https://api.opennan.com/v1/videos/generations.
Similar models
Video models you can call with the same key.











