# google/veo-3.1/text-to-video > Google Veo 3.1 produces high-quality, native 1080p videos with synchronized audio from text prompts. The service delivers best performance and affordable pricing without the delay of coldstarts. ## Overview - **Endpoint**: `https://api.shortapi.ai/api/v1/job/create` - **Model ID**: `google/veo-3.1/text-to-video` - **Category**: text-to-video - **Kind**: inference ## Pricing The pricing for this model is structured as follows: in Quality mode, the rate for 720p and 1080p is $0.16/sec without audio and $0.32/sec with audio, while 4K is priced at $0.32/sec without audio and $0.48/sec with audio; meanwhile, in Fast mode, the rate for 720p and 1080p is $0.08/sec without audio and $0.12/sec with audio, whereas 4K costs $0.24/secwithout audio and $0.28/sec with audio. For more details, please check our pricing page. ## API Information This model can be used via our HTTP API or more conveniently via our client libraries. See the input and output schema below, as well as the usage examples. ### Input Schema The API accepts the following input parameters: - **`mode`** (`string`, _required_): Video generation mode - Default: `fast` - Options: "quality", "fast" - **`prompt`** (`string`, _required_): Positive text prompt - Examples: "An action shot of a black lab swimming..." - **`negative_prompt`** (`string`, _optional_): Negative text prompt - **`duration`** (`string`, _optional_): Video Length, unit: s (seconds) - Default: `8` - Options: "4", "6", "8" - **`aspect_ratio`** (`string`, _optional_): The aspect ratio of the generated video frame (width:height) - Default: `16:9` - Options: "16:9", "9:16" - **`resolution`** (`string`, _optional_): Output video resolution - Default: `720p` - Options: "720p", "1080p", "4k" - **`generate_audio`** (`bool`, _optional_): Whether to generate original audio for the video - Default: `false` - Options: "true", "false" - **`expand_prompt`** (`bool`, _optional_): Whether to automatically expand and enrich the input prompt to generate more detailed and expressive video content - Default: `false` - Options: "true", "false" ### Output Schema The API returns a JSON response with a `job_id` for tracking the request status. **Create Job Response:** ```json { "code": 0, "data": { "amount": "0.02", "job_id": "" } } ``` **Query Job Result (when status is 2, meaning succeeded):** ```json { "code": 0, "data": { "status": 2, "result": { "videos": [{ "url": "https://..." }] } } } ``` ## Use Example To use this model, make an HTTP POST request to the API endpoint, then poll for results using the returned `job_id`. ### Bash (cURL) ```bash # Step 1: Create a job response=$(curl --request POST \ --url https://api.shortapi.ai/api/v1/job/create \ --header "Authorization: Bearer $SHORTAPI_KEY" \ --header "Content-Type: application/json" \ --data '{ "model": "google/veo-3.1/text-to-video", "args": { "mode": "quality", "prompt": "A fluffy dog sitting on a desk next to a softly glowing computer monitor, looking directly at the camera. The dog speaks naturally with realistic mouth movement, subtle jaw motion, and accurate lip sync. The mouth opens and closes smoothly, matching the voice timing without exaggeration.A humorous voice-over says: “Woof… wait. Did Veo 3.1 just make me talk?! Thanks, shortapi, I sound absolutely adorable!”Whimsical and playful tone, soft ambient indoor lighting, cozy atmosphere. Smooth and natural motion, stable camera. Shallow depth of field, high realism, cinematic quality, realistic animal anatomy, natural facial expressions, cheerful background music." }, "callback_url": "CALLBACK_URL" }') JOB_ID=$(echo "$response" | grep -o '"job_id": *"[^"]*"' | sed 's/"job_id": *//; s/"//g') # Step 2: Poll for results curl --request GET \ --url "https://api.shortapi.ai/api/v1/job/query?id=$JOB_ID" \ --header "Authorization: Bearer $SHORTAPI_KEY" ``` ### JavaScript (Fetch API) ```javascript // Step 1: Create a job const response = await fetch(`https://api.shortapi.ai/api/v1/job/create`, { method: "POST", headers: { "Authorization": `Bearer ${SHORTAPI_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ "model": "google/veo-3.1/text-to-video", "args": { "mode": "quality", "prompt": "A fluffy dog sitting on a desk next to a softly glowing computer monitor, looking directly at the camera. The dog speaks naturally with realistic mouth movement, subtle jaw motion, and accurate lip sync. The mouth opens and closes smoothly, matching the voice timing without exaggeration.A humorous voice-over says: “Woof… wait. Did Veo 3.1 just make me talk?! Thanks, shortapi, I sound absolutely adorable!”Whimsical and playful tone, soft ambient indoor lighting, cozy atmosphere. Smooth and natural motion, stable camera. Shallow depth of field, high realism, cinematic quality, realistic animal anatomy, natural facial expressions, cheerful background music." }, "callback_url": "CALLBACK_URL" }) }); const data = await response.json(); const JOB_ID = data.job_id; // Step 2: Poll for results const result = await fetch(`https://api.shortapi.ai/api/v1/job/query?id=${JOB_ID}`, { method: "GET", headers: { "Authorization": `Bearer ${SHORTAPI_KEY}` } }); const resultData = await result.json(); console.log(resultData); ``` ### Python (Requests) ```python import requests # Step 1: Create a job url = "https://api.shortapi.ai/api/v1/job/create" payload = { "model": "google/veo-3.1/text-to-video", "args": { "mode": "quality", "prompt": "A fluffy dog sitting on a desk next to a softly glowing computer monitor, looking directly at the camera. The dog speaks naturally with realistic mouth movement, subtle jaw motion, and accurate lip sync. The mouth opens and closes smoothly, matching the voice timing without exaggeration.A humorous voice-over says: “Woof… wait. Did Veo 3.1 just make me talk?! Thanks, shortapi, I sound absolutely adorable!”Whimsical and playful tone, soft ambient indoor lighting, cozy atmosphere. Smooth and natural motion, stable camera. Shallow depth of field, high realism, cinematic quality, realistic animal anatomy, natural facial expressions, cheerful background music." }, "callback_url": "CALLBACK_URL" } headers = { "Authorization": f"Bearer {SHORTAPI_KEY}", "Content-Type": "application/json" } response = requests.post(url, headers=headers, json=payload) data = response.json() JOB_ID = data.get("job_id") # Step 2: Poll for results result_url = f"https://api.shortapi.ai/api/v1/job/query?id={JOB_ID}" result = requests.get(result_url, headers={"Authorization": f"Bearer {SHORTAPI_KEY}"}) print(result.json()) ```