JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 210
  • Score
    100M100P100Q103159F
  • License MIT

Unofficial API for Whisk image generation.

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@rohitaryal/whisk-api) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    whisk-api

    Unofficial free reverse engineered API for Google's Whisk from labs.google.

    Banner

    Installation

    npm i -g @rohitaryal/whisk-api
    # or
    bun i -g @rohitaryal/whisk-api

    Features

    1. Text to Image using IMAGEN_3_5
    2. Image to Video (Animation) using VEO
    3. Image Refinement (Editing/Inpainting using NanoBanana)
    4. Image to Text
    5. Project & Media Management
    6. Command line support

    Usage

    whisk can be invoked through both command line and as a module.

    Command Line

    Make sure you have:

    1. Installed whisk-api globally (How to install?)

    2. Obtained your google account cookies (How to get cookies?)

    3. Set env variable COOKIE containing your cookie

      Bash:

      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%"
    • 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"
    • Deleting media from the cloud

      whisk delete "__MEDIA__ID__HERE__" --cookie "$COOKIE"

    Full generation help:

    whisk generate <options>
    
    Options:
          --version     Show version number
      -h, --help        Show help
      -p, --prompt      Description of the image
      -m, --model       Image generation model (Default: IMAGEN_3_5)
      -a, --aspect      Aspect ratio (SQUARE, PORTRAIT, LANDSCAPE)
      -s, --seed        Seed value (0 for random)
      -d, --dir         Output directory
      -c, --cookie      Google account cookie

    Full animation help:

    whisk animate <mediaId>
    
    Positionals:
      mediaId  The ID of the image to animate
    
    Options:
      -s, --script    Prompt/Script for the video animation
      -m, --model     Video generation model (Default: VEO_FAST_3_1)
      -d, --dir       Output directory
      -c, --cookie    Google account cookie

    Full fetch help:

    whisk fetch <mediaId>
    
    Positionals:
      mediaId  Unique ID of generated media
    
    Options:
      -d, --dir      Output directory
      -c, --cookie   Google account cookie
    Importing as module
    • 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_FAST_3_1");
      
      video.save("./videos");

    More examples are at: /examples

    Help

    How to extract cookies?

    Easy way

    1. Install Cookie Editor extension in your browser.
    2. Open labs.google, make sure you are logged in
    3. Click on Cookie Editor icon from Extensions section.
    4. Click on Export -> Header String

    Manual way

    1. Open labs.google, make sure you are logged in
    2. Press CTRL + SHIFT + I to open console
    3. Click on Network tab at top of console
    4. Press CTRL + L to clear network logs
    5. Click CTRL + R to refresh page
    6. Click on image-fx which should be at top
    7. Goto Request Headers section and copy all the content of Cookie
    ImageFX not available in your country?
    1. Install a free VPN (Windscribe, Proton, etc)
    2. Open labs.google and login
    3. From here follow the "How to extract cookie?" in HELP section (above).
    4. Once you have obtained this cookie, you don't need VPN anymore.
    Not able to generate images?

    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.