Google Veo 3.1 video generation with first/last frame control and audio.
Authenticate with the X-API-Key request header.
resolution — pass resolution in your request. Credit cost per second:| resolution | credits / sec | vs base |
|---|---|---|
| 480p | 37 | 0.7× |
| 720p | 52 | 1× |
| 1080p | 83 | 1.6× |
| 4k | 130 | 2.5× |
List price. Volume / bulk customers get a discounted rate — contact us for account pricing.
| Name | Type | Required | Description | Default / options |
|---|---|---|---|---|
| prompt | string | required | Text prompt describing the desired output. | — |
| image_url | string | optional | Optional start (first) frame image. | — |
| last_frame_url | string | optional | Optional end (last) frame image (Veo 3.1 interpolation). | — |
| duration | number | optional | Clip length in seconds (1-8). | default: 8 |
| aspect_ratio | string | optional | Output aspect ratio. | default: 16:9 |
| negative_prompt | string | optional | Things to avoid in the output. | — |
| seed | number | optional | RNG seed (0-4294967295) to bias toward deterministic video. | — |
| enhance_prompt | boolean | optional | Let Veo LLM-rewrite the prompt. | — |
| person_generation | string | optional | Allow people in output: dont_allow | allow_adult | allow_all. | default: allow_all |
| generate_audio | boolean | optional | Generate audio for the video (Veo 3 family only; ignored on veo-2). | — |
curl -X POST https://brahmand-api.bulletshorts.co/v1/video/veo-3.1 \
-H "X-API-Key: $TRINETRA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"A neon jellyfish drifting through deep water","duration":8}'{
"prompt": "A neon jellyfish drifting through deep water",
"duration": 8
}Submitting a job returns 202 Accepted with a job id. Poll GET /v1/jobs/{id} until the job reaches a terminal state, or register a webhook to be notified.
{
"job_id": "job_veo31_a1b2c3",
"status": "queued"
}{
"id": "job_veo31_a1b2c3",
"model": "veo-3.1",
"status": "succeeded",
"output": {
"outputs": [
{
"url": "https://cdn.trinetra.ai/out/veo-3.1/a1b2c3.mp4",
"type": "video"
}
]
},
"credits_charged": 10
}Webhook: set a webhook_url on your API key to receive a POST with the terminal job document instead of polling.