Every API here is available over the APIs.io API and to AI agents over MCP.
{
"info": {
"_postman_id": "320f5a30-935d-49cf-80da-062badff57eb",
"name": "Google Vids API v1 by useapi.net",
"description": "## [Google Vids API v1](https://useapi.net/docs/api-google-vids-v1)\n\nGoogle Vids API by useapi.net: Gemini Omni 1.1 Flash video (text, start image, up to 3 image and avatar references, 3-10 s, 720p or 1080p), extend, upscale to 1080p, edit, images in 7 styles, uploads, downloads, jobs, voiced avatars and the voice list. Runs on your own Google AI plan accounts, no captcha. Set the `api-token` collection variable (see https://useapi.net/docs/start-here/setup-useapi). POST accounts sends form-data, the other POST bodies send JSON (the API accepts JSON or form-data for every body). POST assets sends the file itself as the body. Ids contain `:` and `@`: URL-encode them when you put them in a path variable.\n\n---\n**Updated:** October 7, 2026",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
"updated": "2026-10-07",
"_exporter_id": "29112081"
},
"item": [
{
"name": "POST accounts",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/accounts",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"accounts"
]
},
"description": "## [Add or update an account](https://useapi.net/docs/api-google-vids-v1/post-google-vids-accounts)",
"body": {
"mode": "formdata",
"formdata": [
{
"key": "cookies",
"value": "",
"description": "Required to add/re-add. The cookie table of https://docs.google.com copied from DevTools (Application → Cookies), pasted as copied (min 20 chars). Must contain SID, HSID, SSID, APISID, SAPISID, __Secure-1PSIDTS and OSID. The account email is read from Google. Free Google accounts (0 video, 0 images) are refused. See Setup Google Vids: https://useapi.net/docs/start-here/setup-google-vids",
"type": "text"
},
{
"key": "email",
"value": "user@example.com",
"description": "Update mode only: a connected account email, sent with maxJobs and without cookies. Not accepted together with cookies.",
"type": "text",
"disabled": true
},
{
"key": "maxJobs",
"value": "",
"description": "Optional when adding (default 3). Required in update mode. Max concurrent jobs for this account, 1-10.",
"type": "text",
"disabled": true
}
]
}
},
"response": []
},
{
"name": "GET accounts",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/accounts",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"accounts"
]
},
"description": "## [List accounts](https://useapi.net/docs/api-google-vids-v1/get-google-vids-accounts)"
},
"response": []
},
{
"name": "GET accounts/{email}",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/accounts/{{email}}",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"accounts",
"{{email}}"
]
},
"description": "## [Check one account live (session + quota)](https://useapi.net/docs/api-google-vids-v1/get-google-vids-accounts-email)"
},
"response": []
},
{
"name": "DELETE accounts/{email}",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/accounts/{{email}}",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"accounts",
"{{email}}"
]
},
"description": "## [Remove an account](https://useapi.net/docs/api-google-vids-v1/delete-google-vids-accounts-email)"
},
"response": []
},
{
"name": "POST videos",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/videos",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"videos"
]
},
"description": "## [Generate a video](https://useapi.net/docs/api-google-vids-v1/post-google-vids-videos)\n\n**Body (JSON).** `prompt` is required (up to 5000 chars, may use `@referenceImage_1..3` / `@avatar_1..3` markers).\n\n- `duration`: 3-10 seconds, default 8\n- `aspectRatio`: `landscape` (default) or `portrait`\n- `resolution`: `720p` (default) or `1080p`, same cost\n- `startImage`: assetId from POST /assets, or an image mediaId from POST images (uploaded for you). Not with references.\n- `referenceImage_1`..`referenceImage_3`: assetIds from POST /assets or image mediaIds from POST images\n- `avatar_1`..`avatar_3`: avatarIds from POST /avatars or GET /avatars. At most 3 references and avatars together.\n- `email`: account to run on. Default: the account holding the inputs, or a load-balanced one.\n- `async`: `true` answers 202 at once (default `false`: waits up to 100 s for the finished job, then answers 202 with the job still running). `replyUrl`: webhook URL, receives one POST of the job record when the job ends, sync or async. `replyRef`: up to 1024 chars.",
"body": {
"mode": "raw",
"raw": "{\n \"prompt\": \"A paper boat drifting down a rain gutter, close up\",\n \"duration\": 8,\n \"aspectRatio\": \"landscape\",\n \"resolution\": \"720p\",\n \"async\": false\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"response": []
},
{
"name": "POST videos/extend",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/videos/extend",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"videos",
"extend"
]
},
"description": "## [Extend a video](https://useapi.net/docs/api-google-vids-v1/post-google-vids-videos-extend)\n\n**Body (JSON).** `mediaId` (a video mediaId from a finished job) and `prompt` are required.\n\n- `duration`: seconds to add, 3-10, default 8. Charged only these seconds. The whole clip is returned, up to about 41 s.\n- `aspectRatio`: `landscape` or `portrait`. Default: the source's.\n- `resolution`: `720p` or `1080p`. Default: the source's.\n- `async`: `true` answers 202 at once (default `false`: waits up to 100 s for the finished job, then answers 202 with the job still running). `replyUrl`: webhook URL, receives one POST of the job record when the job ends, sync or async. `replyRef`: up to 1024 chars.",
"body": {
"mode": "raw",
"raw": "{\n \"mediaId\": \"{{mediaId}}\",\n \"prompt\": \"The paper boat spins and sails into a puddle\",\n \"duration\": 8,\n \"async\": true\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"response": []
},
{
"name": "POST videos/upscale",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/videos/upscale",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"videos",
"upscale"
]
},
"description": "## [Upscale a video to 1080p](https://useapi.net/docs/api-google-vids-v1/post-google-vids-videos-upscale)\n\n**Body (JSON).** `mediaId` of a 720p clip of up to 20 seconds is required. A 1080p clip or one longer than 20 seconds is refused with 400. Charged the clip's seconds again.\n\n- `async`: `true` answers 202 at once (default `false`: waits up to 100 s for the finished job, then answers 202 with the job still running). `replyUrl`: webhook URL, receives one POST of the job record when the job ends, sync or async. `replyRef`: up to 1024 chars.",
"body": {
"mode": "raw",
"raw": "{\n \"mediaId\": \"{{mediaId}}\",\n \"async\": false\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"response": []
},
{
"name": "POST videos/edit",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/videos/edit",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"videos",
"edit"
]
},
"description": "## [Edit a video](https://useapi.net/docs/api-google-vids-v1/post-google-vids-videos-edit)\n\n**Body (JSON).** `video` (a video mediaId from a finished job) and `prompt` are required. An uploaded video (assetId) is accepted, but Google refuses it with 422.\n\n- `duration`: 3-10. Default: the clip's length, up to 10 (an edit works on 10 seconds). Required with an assetId.\n- `aspectRatio`, `resolution`: default the source's.\n- `async`: `true` answers 202 at once (default `false`: waits up to 100 s for the finished job, then answers 202 with the job still running). `replyUrl`: webhook URL, receives one POST of the job record when the job ends, sync or async. `replyRef`: up to 1024 chars.",
"body": {
"mode": "raw",
"raw": "{\n \"video\": \"{{mediaId}}\",\n \"prompt\": \"Make the paper boat bright yellow\",\n \"async\": false\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"response": []
},
{
"name": "POST images",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/images",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"images"
]
},
"description": "## [Generate an image](https://useapi.net/docs/api-google-vids-v1/post-google-vids-images)\n\n**Body (JSON).** `prompt` is required (up to 5000 chars). One JPEG of a fixed size.\n\n- `aspectRatio`: `16:9` (default, 1376×768), `1:1` (1024×1024), `9:16` (768×1376)\n- `style`: `none` (default), `photography`, `sketch`, `background`, `watercolor`, `vector-art`, `cyberpunk`\n- `email`: account to run on. Default: a load-balanced one.\n- `async`: `true` answers 202 at once (default `false`: waits up to 100 s for the finished job, then answers 202 with the job still running). `replyUrl`: webhook URL, receives one POST of the job record when the job ends, sync or async. `replyRef`: up to 1024 chars.",
"body": {
"mode": "raw",
"raw": "{\n \"prompt\": \"A red vintage bicycle leaning on a sunny brick wall\",\n \"aspectRatio\": \"16:9\",\n \"style\": \"none\",\n \"async\": false\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"response": []
},
{
"name": "POST assets",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "image/jpeg",
"description": "The file's MIME type: image/jpeg, image/png, image/webp or video/mp4."
}
],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/assets",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"assets"
],
"query": [
{
"key": "email",
"value": "{{email}}",
"description": "Optional. The account to upload to. Default: a random healthy account.",
"disabled": true
}
]
},
"description": "## [Upload an asset](https://useapi.net/docs/api-google-vids-v1/post-google-vids-assets)\n\nThe file is the raw request body (no multipart, no JSON), 1 byte to 50 MB. Returns the assetId used as startImage / referenceImage_N of POST videos (an image made with POST images needs no upload: pass its mediaId there).",
"body": {
"mode": "file",
"file": {
"src": "/path/to/image.jpg"
}
}
},
"response": []
},
{
"name": "GET media/{mediaId}",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/media/{{mediaId}}",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"media",
"{{mediaId}}"
]
},
"description": "## [Download a video or image](https://useapi.net/docs/api-google-vids-v1/get-google-vids-media-mediaId)\n\nStreams the MP4 or JPEG from Google. A Range header is passed through (206)."
},
"response": []
},
{
"name": "GET jobs",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/jobs",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"jobs"
]
},
"description": "## [List running jobs](https://useapi.net/docs/api-google-vids-v1/get-google-vids-jobs)"
},
"response": []
},
{
"name": "GET jobs/{jobid}",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/jobs/{{jobid}}",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"jobs",
"{{jobid}}"
]
},
"description": "## [Poll a job](https://useapi.net/docs/api-google-vids-v1/get-google-vids-jobs-jobid)"
},
"response": []
},
{
"name": "POST avatars",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/avatars",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"avatars"
]
},
"description": "## [Create an avatar](https://useapi.net/docs/api-google-vids-v1/post-google-vids-avatars)\n\n**Body (JSON).** `name` (1-40 chars) and `voice` (a name or voice id from GET voices) are required, plus either `image` or `appearance`.\n\n- `image`: an image mediaId from POST images (an uploaded photo is refused: Google's likeness check)\n- `appearance`: the person to draw, up to 500 chars (uses 1 image of the monthly allowance)\n- `outfit` (300), `shot` (`close-up` default, `upper-body`, `full-body`), `expression` (200), `details` (1000): with appearance only\n- `email`: account to save it on",
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Marco\",\n \"voice\": \"Holt\",\n \"appearance\": \"a middle-aged man with a short grey beard\",\n \"outfit\": \"navy blazer over a white shirt\",\n \"shot\": \"upper-body\"\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"response": []
},
{
"name": "GET avatars",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/avatars",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"avatars"
],
"query": [
{
"key": "email",
"value": "{{email}}",
"description": "Optional. Read one account only.",
"disabled": true
}
]
},
"description": "## [List avatars](https://useapi.net/docs/api-google-vids-v1/get-google-vids-avatars)"
},
"response": []
},
{
"name": "DELETE avatars/{avatarId}",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/avatars/{{avatarId}}",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"avatars",
"{{avatarId}}"
]
},
"description": "## [Delete an avatar](https://useapi.net/docs/api-google-vids-v1/delete-google-vids-avatars-avatarId)"
},
"response": []
},
{
"name": "GET voices",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "https://api.useapi.net/v1/google-vids/voices",
"protocol": "https",
"host": [
"api",
"useapi",
"net"
],
"path": [
"v1",
"google-vids",
"voices"
]
},
"description": "## [List voices](https://useapi.net/docs/api-google-vids-v1/get-google-vids-voices)\n\nPublic: no API token needed.",
"auth": {
"type": "noauth"
}
},
"response": []
}
],
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{api-token}}",
"type": "string"
}
]
},
"event": [
{
"listen": "prerequest",
"script": {
"type": "text/javascript",
"packages": {},
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"type": "text/javascript",
"packages": {},
"exec": [
""
]
}
}
],
"variable": [
{
"key": "api-token",
"value": "Please refer to https://useapi.net/docs/start-here/setup-useapi",
"type": "string"
},
{
"key": "email",
"value": "",
"type": "string"
},
{
"key": "mediaId",
"value": "",
"type": "string"
},
{
"key": "jobid",
"value": "",
"type": "string"
},
{
"key": "avatarId",
"value": "",
"type": "string"
}
]
}