# Veo 3.1 on Eden Gen > Top realism with native dialogue and sound. - Model id: `veo-3.1` - Kind: video - Maker: Google - Best for: dialogue, sound, realism - Use for: Spoken dialogue, foley and ambience, the most realistic look Google ships. - Speed: slow - Features: Text to video, First and last frame, Native audio, Dialogue ## Pricing - 720p: $0.432 per second - 1080p: $0.432 per second - 4K: $0.648 per second Example: one 8 s take at 1080p costs $3.46; four of them cost $13.82. Prices are for the Solo plan on the best connected route today. POST /v1/estimate returns the exact price for your workspace before a take; that is the price charged. Failed or blocked takes are refunded automatically. Prepaid credit expires 6 months after purchase and is not refundable. ## Parameters - `resolution`: "720p", "1080p", "4K" (default "1080p") - `duration` (seconds): 4, 6, 8 (default 8) - `aspect_ratio`: "16:9", "9:16", "21:9", "1:1" - `count`: 1, 2 or 4 takes per run - `references`: 3 reference images, a first frame, a last frame. Each item is `{ "asset_id" | "url" | "take_id" | "element_id", "role": "reference" | "first_frame" | "last_frame" }`. - `project_id`: the project the cost lands on (defaults to the key's project, then the newest one). - `webhook_url`, `metadata`: optional. - `tags`: up to 10 labels for usage reports, e.g. `{ "client": "acme", "campaign": "q4" }` (or header `X-Takes-Tags: client=acme,campaign=q4`). Unsupported values return HTTP 400 with `param` and `supported` in the error, so you can correct and resend. ## Call it ```bash curl -X POST https://edengen.ai/v1/takes \ -H "Authorization: Bearer $TAKES_API_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Prefer: wait=60" \ -d '{"model":"veo-3.1","prompt":"Slow dolly in on a rain-soaked neon street at night, handheld feel, no music, no cut","resolution":"1080p","duration":8,"aspect_ratio":"16:9"}' ``` Check the price first with `POST https://edengen.ai/v1/estimate` (same body). Poll `GET https://edengen.ai/v1/takes/{id}` or pass `webhook_url`. Never resend a create to check progress: a new request is a new paid take unless it carries the same Idempotency-Key. ## More - All models: https://edengen.ai/llms.txt - OpenAPI: https://edengen.ai/v1/openapi.json - MCP server (OAuth, no key needed): https://edengen.ai/mcp