Does Veo 3 Have a Public API? What Developers Need to Know (2026)
If you've been trying to find a straightforward way to call Veo 3 or Veo 3.1 programmatically — generating video from text or images in your application — this article gives you a direct answer and a working integration path.
The short answer: Veo 3.1 is accessible via API through GenRelay, which provides a unified REST endpoint covering text-to-video, image-to-video, and reference-video generation. There is no requirement to join a separate waitlist or apply for custom access before you can start building.
What Is Veo 3, and Why Do Developers Want API Access?
Veo 3 is a video generation model developed by Google DeepMind. As of 2026, Veo 3.1 is the production version available via API. It supports three generation modes:
- Text-to-video (t2v): Generate video clips from a text prompt.
- Image-to-video (i2v): Animate a still image using a motion prompt.
- Reference video (ref2v): Generate video that matches the style or motion of a reference clip.
Developers want API access to build features like AI-generated social content, product demo animations, educational explainer videos, or user-facing creative tools — without rendering video in-house.
Is There a Direct Veo 3 API from Google?
Google has made Veo models available through its own platforms (Vertex AI, AI Studio), but access through those channels typically requires a Google Cloud project, IAM configuration, and in some cases specific project-level quota approval. For developers who want a simpler integration path — one API key, one endpoint, no Google Cloud setup — that process adds friction.
GenRelay provides Veo 3.1 access through a unified generative media API at https://genrelay.ai/v1/videos/generations. You authenticate with a single Bearer token and use a consistent schema regardless of which video model you're targeting.
How Do I Get API Access to Veo 3.1?
Sign up at genrelay.ai to get an API key. Free credits are included on signup, so you can make your first Veo 3.1 calls before committing to a paid plan. Paid plans start at $14/month, with pay-as-you-go billing for usage above the plan limit.
Once you have a key, you're ready to call the API.
How Do I Make My First Veo 3.1 API Call?
Veo 3.1 video generation is asynchronous — you submit a job and poll for the result. Here's the full flow in Python:
import requests
import time
API_KEY = "gr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # your GenRelay key
BASE_URL = "https://genrelay.ai/v1"
def generate_video(prompt: str, duration: int = 8, resolution: str = "720p") -> str:
"""Submit a Veo 3.1 t2v job and return the video URL when ready."""
resp = requests.post(
f"{BASE_URL}/videos/generations",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"model": "veo-3.1",
"prompt": prompt,
"duration": duration, # seconds, 5–30
"resolution": resolution, # "720p" | "1080p"
},
timeout=30,
)
resp.raise_for_status()
job_id = resp.json()["id"]
print(f"Job submitted: {job_id}")
# Poll until complete
while True:
status_resp = requests.get(
f"{BASE_URL}/videos/generations/{job_id}",
headers={"Authorization": f"Bearer {API_KEY}"},
timeout=15,
)
status_resp.raise_for_status()
job = status_resp.json()
if job["status"] == "succeeded":
return job["output"]["url"]
elif job["status"] == "failed":
raise RuntimeError(f"Video generation failed: {job.get('error')}")
print(f"Status: {job['status']} — waiting 10s…")
time.sleep(10)
if __name__ == "__main__":
url = generate_video(
prompt="A drone shot flying low over a misty mountain forest at sunrise, cinematic",
duration=8,
resolution="720p",
)
print(f"Video ready: {url}")
The same pattern works for a curl one-liner to verify your key:
# Step 1: Submit the job
curl -s -X POST https://genrelay.ai/v1/videos/generations \
-H "Authorization: Bearer $GENRELAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1",
"prompt": "A calm ocean wave at golden hour, slow motion",
"duration": 5,
"resolution": "720p"
}' | tee /tmp/veo_job.json
# Step 2: Poll by job ID
JOB_ID=$(cat /tmp/veo_job.json | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
curl -s "https://genrelay.ai/v1/videos/generations/$JOB_ID" \
-H "Authorization: Bearer $GENRELAY_API_KEY" | python3 -m json.tool
What Resolution and Duration Options Does Veo 3.1 Support?
As of August 2026, the Veo 3.1 endpoint via GenRelay supports:
| Parameter | Options |
|---|---|
resolution |
720p, 1080p |
duration |
5–30 seconds |
mode |
t2v (default), i2v (image-to-video), ref2v (reference video) |
aspect_ratio |
16:9 (default), 9:16, 1:1 |
For image-to-video, pass an image_url field alongside the prompt. For details on the i2v parameters, see the Veo 3.1 image-to-video API guide.
What Does Veo 3.1 API Access Cost?
Veo 3.1 Lite is billed per second of video generated, at the output resolution:
| Resolution | Cost per second |
|---|---|
| 720p | $0.060/s |
| 1080p | $0.120/s |
Example workload costs:
| Clip length | Resolution | Cost per clip |
|---|---|---|
| 5s | 720p | $0.30 |
| 8s | 720p | $0.48 |
| 8s | 1080p | $0.96 |
| 15s | 720p | $0.90 |
| 30s | 1080p | $3.60 |
If your app generates 100 × 8-second 720p clips per day, daily API cost is approximately $48 ($1,440/month). For a detailed cost comparison against other video APIs, see Veo 3 API pricing.
How Does This Compare to Other Video APIs?
GenRelay gives you access to multiple video models under the same endpoint and key, so you can switch models without re-architecting your integration:
| Model | Billing | 8s 720p cost | Best for |
|---|---|---|---|
| Veo 3.1 Lite | Per second | $0.48 | Highest quality t2v |
| Grok Imagine 1.5 | Per second | $0.176 | Image-to-video |
| Grok Imagine 1.0 | Per second | $0.08 | Fast, affordable t2v |
| Omni Flash | Per generation | $0.10 (720p) | Fixed-cost short clips |
Switching from Veo 3.1 to Grok 1.0 in your code is a one-line model name change — the job submission and polling pattern stay identical.
Frequently Asked Questions
Do I need a Google Cloud account to use the Veo 3.1 API via GenRelay?
No. GenRelay handles upstream provisioning. You only need a GenRelay account and API key — no Google Cloud project, service account, or IAM setup required.
What is the typical generation time for a Veo 3.1 clip?
Generation time varies by duration and resolution. A 5-second 720p clip typically completes in 60–120 seconds. An 8-second 1080p clip can take 3–5 minutes. Build your integration with polling intervals of 10–15 seconds and a timeout of at least 10 minutes for longer clips.
Does Veo 3.1 support audio generation alongside video?
Veo 3.1 can generate ambient audio synchronized with the video. To enable it, pass "audio": true in your request body. Note that audio-enabled generation adds to total cost proportional to output length.
Is there a rate limit on Veo 3.1 jobs?
Yes. Default concurrent job limits apply per API key. If you need higher throughput for batch workloads, contact GenRelay support or upgrade your plan.
Can I use the same code to call other GenRelay video models?
Yes — change the model field from "veo-3.1" to "grok-imagine-1.0", "grok-imagine-1.5", or "omni-flash". The submission and polling endpoints are identical across all video models. This is one of the core design goals of the unified API.
What's the Fastest Way to Start Building?
- Sign up at genrelay.ai and copy your API key from the dashboard.
- Run the curl snippet above with your key — you'll have a Veo 3.1 job submitted in under a minute.
- When the job succeeds, the response includes a
urlfield pointing to the generated video file (MP4).
For a complete tutorial covering all three Veo 3.1 generation modes with error handling, see Veo 3.1 API tutorial for developers.