@redwilly/whisk-api
v4.0.21
Published
Unofficial API for Whisk image generation.
Maintainers
Readme
whisk-api
Unofficial free reverse engineered API for Google's Whisk from labs.google.

Installation
npm i -g @rohitaryal/whisk-api
# or
bun i -g @rohitaryal/whisk-apiFeatures
- Text to Image using
IMAGEN_3_5 - Image to Video (Animation) using
VEO_3_1 - Image Refinement (Editing/Inpainting)
- Image to Text (Caption Generation)
- Project & Media Management
- Upload & Reference Images
- Command line support
Usage
whisk can be invoked through both command line and as a module.
Make sure you have:
Installed
whisk-apiglobally (How to install?)Obtained your google account cookies (How to get cookies?)
Set env variable
COOKIEcontaining your cookieBash:
export COOKIE="__YOUR__COOKIE__HERE__"Command Prompt:
set "COOKIE=__YOUR__COOKIE__HERE__"Powershell:
$COOKIE = "__YOUR__GOOGLE__COOKIE__HERE__"
Basic Usages
NOTE: If you are using environment variables, keep the quotes around cookie to avoid word-splitting and authentication errors.
- Linux/macOS:
"$COOKIE"- PowerShell:
"$env:COOKIE"- Command Prompt:
"%COOKIE%"
Creating a new project
whisk project --name "My Project" --cookie "$COOKIE"Generating image with prompt
# saves generated image at ./output/ by default whisk generate --prompt "A bad friend" --cookie "$COOKIE"Selecting a specific aspect ratio
# Available: SQUARE, PORTRAIT, LANDSCAPE (Default: LANDSCAPE) whisk generate --prompt "Reptillian CEO" --aspect "PORTRAIT" --cookie "$COOKIE"Animating an existing image (Image to Video)
# Requires the Media ID of a LANDSCAPE image whisk animate "__MEDIA__ID__HERE__" --script "Camera pans slowly to the left" --cookie "$COOKIE"Refining (Editing) an image
whisk refine "__MEDIA__ID__HERE__" --prompt "Add a red hat to the character" --cookie "$COOKIE"Generating caption from a local image file
whisk caption --file /path/to/img.webp --count 3 --cookie "$COOKIE"Fetching an existing media by ID
whisk fetch "__MEDIA__ID__HERE__" --cookie "$COOKIE"Uploading an image as reference
whisk upload /path/to/image.jpg --category SUBJECT --project "__PROJECT__ID__" --cookie "$COOKIE"Deleting media from the cloud
whisk delete "__MEDIA__ID__HERE__" --cookie "$COOKIE"
Full CLI commands help:
whisk <cmd> [args]
Commands:
whisk project Generate a new project
whisk generate Generate new images using a temporary project
whisk animate <mediaId> Animate an existing landscape image into a video
whisk refine <mediaId> Edit/Refine an existing image
whisk caption Generate captions for a local image file
whisk fetch <mediaId> Download an existing generated media by ID
whisk upload <file> Upload an image to be used as reference later
whisk delete <mediaId> Delete a generated media from the cloud
Options:
-c, --cookie Google account cookie [required]
-h, --help Show help
--version Show version numberwhisk project
Options:
--name Project name [default: "Whisk-CLI project"]
-c, --cookie Google account cookie [required]whisk generate
Options:
-p, --prompt Description of the image [required]
-m, --model Image generation model [default: "IMAGEN_3_5"]
-a, --aspect Aspect ratio (SQUARE, PORTRAIT, LANDSCAPE) [default: "LANDSCAPE"]
-s, --seed Seed value (0 for random) [default: 0]
-d, --dir Output directory [default: "./output"]
-c, --cookie Google account cookie [required]whisk animate <mediaId>
Positionals:
mediaId The ID of the image to animate [required]
Options:
-s, --script Prompt/Script for the video animation [required]
-m, --model Video generation model [default: "VEO_3_1"]
-d, --dir Output directory [default: "./output"]
-c, --cookie Google account cookie [required]whisk refine <mediaId>
Positionals:
mediaId The ID of the image to refine [required]
Options:
-p, --prompt Instruction for editing (e.g., 'Make it snowy') [required]
-d, --dir Output directory [default: "./output"]
-c, --cookie Google account cookie [required]whisk caption
Options:
-f, --file Path to local image file [required]
-n, --count Number of captions [default: 1]
-c, --cookie Google account cookie [required]whisk fetch <mediaId>
Positionals:
mediaId Unique ID of generated media [required]
Options:
-d, --dir Output directory [default: "./output"]
-c, --cookie Google account cookie [required]whisk upload <file>
Positionals:
file Path to local image file [required]
Options:
--category, -ca Category of reference [required]
Choices: SUBJECT, SCENE, STYLE
--project, -pr Project/Workflow ID [required]
-c, --cookie Google account cookie [required]whisk delete <mediaId>
Positionals:
mediaId Unique ID of generated media to delete [required]
Options:
-c, --cookie Google account cookie [required]Basic image generation
import { Whisk } from "@rohitaryal/whisk-api"; const whisk = new Whisk(process.env.COOKIE); // 1. Create a project context const project = await whisk.newProject("My Project"); // 2. Generate image const media = await project.generateImage("A big black cockroach"); // 3. Save to disk const savedPath = media.save("./output"); console.log("[+] Image saved at: " + savedPath);Advanced Workflow (Gen -> Refine -> Animate)
import { Whisk, ImageAspectRatio } from "@rohitaryal/whisk-api"; const whisk = new Whisk(process.env.COOKIE); const project = await whisk.newProject("Video Workflow"); // 1. Generate Base Image (Must be LANDSCAPE for video) const baseImage = await project.generateImage({ prompt: "A cybernetic city", aspectRatio: "IMAGE_ASPECT_RATIO_LANDSCAPE" }); // 2. Refine (Edit) const refinedImage = await baseImage.refine("Make it raining neon rain"); // 3. Animate (Video) const video = await refinedImage.animate("Camera flies through the streets", "VEO_3_1_I2V_12STEP"); video.save("./videos");
More examples are at: /examples
Help
Easy way
- Install Cookie Editor extension in your browser.
- Open labs.google, make sure you are logged in
- Click on Cookie Editor icon from Extensions section.
- Click on Export -> Header String
Manual way
- Open labs.google, make sure you are logged in
- Press CTRL + SHIFT + I to open console
- Click on Network tab at top of console
- Press CTRL + L to clear network logs
- Click CTRL + R to refresh page
- Click on
image-fxwhich should be at top - Goto Request Headers section and copy all the content of Cookie
- Install a free VPN (Windscribe, Proton, etc)
- Open labs.google and login
- From here follow the "How to extract cookie?" in HELP section (above).
- Once you have obtained this cookie, you don't need VPN anymore.
Create an issue here. Make sure the pasted logs don't contain cookie or tokens.
Contributions
Contribution are welcome but ensure to pass all test cases and follow existing coding standard.
Disclaimer
This project demonstrates usage of Google's private API but is not affiliated with Google. Use at your own risk.
