🎉 LTX 2.5 IS LIVE! 🎉 | The wait is over. We’ve just pushed LTX 2.5 to production, and it’s our best update yet.

⚡️ GPT-OSS-120b is now live | Blazing fast - better than TogetherAI

👉 Get $5 welcome credit | One API for every frontier model | Ends soon.

Gemini 3.1 Pro Preview API

Run google/gemini-3.1-pro-preview through FastInfra's API. Pay per token. Video is billed as 1,000 output tokens per second of generated video.

Pricing

Gemini 3.1 Pro Preview pricing

Billed per token. 1,000 output tokens = 1 second of video ($0.01/s at this list price).

Direction Price per 1M tokens
Input$2.10
Output$12.60
Per second of video$0.01 (1,000 output tokens)
Availability

Served by 1 provider

Requests route to OpenRouter by default (cheapest). Pin a specific provider with the :provider suffix.

Provider Upstream model ID
openrouter google/gemini-3.1-pro-preview
Quickstart

Call Gemini 3.1 Pro Preview in 30 seconds

Same FastInfra API key and base URL. POST /videos/generations (HTTP 202), then poll GET /videos/jobs/{id} — not chat completions.

Python

import base64, json, time, urllib.request

headers = {"Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json"}
req = urllib.request.Request(
    "https://api.fastinfra.ai/v1/videos/generations",
    data=json.dumps({
        "model": "google/gemini-3.1-pro-preview",
        "prompt": "A woman looks at the camera and says, welcome to FastInfra.",
        "seconds": 5,
        "size": "1280x704"
    }).encode(),
    headers=headers,
    method="POST",
)
with urllib.request.urlopen(req, timeout=60) as resp:
    job = json.load(resp)

while True:
    time.sleep(2)
    poll = urllib.request.Request(
        f"https://api.fastinfra.ai/v1/videos/jobs/{job['id']}",
        headers={"Authorization": "Bearer YOUR_API_KEY"},
    )
    with urllib.request.urlopen(poll, timeout=60) as resp:
        payload = json.load(resp)
    if payload["status"] == "completed":
        break
    if payload["status"] == "failed":
        raise SystemExit(payload.get("error") or "video job failed")

open("clip.mp4", "wb").write(base64.b64decode(payload["data"][0]["b64_json"]))

curl

curl https://api.fastinfra.ai/v1/videos/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemini-3.1-pro-preview",
    "prompt": "A woman looks at the camera and says, welcome to FastInfra.",
    "seconds": 5,
    "size": "1280x704"
  }'
# HTTP 202 — copy "id", then poll:
curl https://api.fastinfra.ai/v1/videos/jobs/JOB_ID \
  -H "Authorization: Bearer YOUR_API_KEY"
FAQ

Gemini 3.1 Pro Preview — common questions

How much does the google/gemini-3.1-pro-preview API cost?

On FastInfra, google/gemini-3.1-pro-preview costs $2.1/1M input, $12.6/1M output tokens ($0.01 per second of video). Billing is per token used, with no subscription.

Is google/gemini-3.1-pro-preview compatible with the OpenAI SDK?

Video models use the same FastInfra API key and base URL (https://api.fastinfra.ai/v1). POST https://api.fastinfra.ai/v1/videos/generations returns HTTP 202 with a job id; poll GET https://api.fastinfra.ai/v1/videos/jobs/{id} until status is completed.

Which providers serve google/gemini-3.1-pro-preview?

google/gemini-3.1-pro-preview is available from 1 provider(s): openrouter. Requests route to OpenRouter by default (cheapest); append ":provider" to the model ID to pin one.