My App
GLabs SDK

Image Generation

Generate AI images with Google Labs Imagen

Image Generation

Generate AI images using Google's Imagen models through the client.images API.

Note: Image generation requires reCAPTCHA configuration. See reCAPTCHA Configuration for setup instructions.

Upload Image

Upload an image for use as a reference in generation:

const result = await client.images.upload({
  imageBase64: 'base64-encoded-image-data',
  sessionId: GLabsClient.generateSessionId(),
  aspectRatio: '16:9', // Optional: '16:9' | '9:16' | '1:1'
});

console.log(result.mediaId);           // Use this ID as a reference
console.log(result.mediaGenerationId); // Same as mediaId
console.log(result.width);             // Image width
console.log(result.height);            // Image height

Upload Options

OptionTypeRequiredDescription
imageBase64stringYesBase64-encoded image (with or without data URL prefix)
sessionIdstringYesUnique session identifier
aspectRatioAspectRatioNoTarget aspect ratio

Generate Images

Generate images from a text prompt:

const result = await client.images.generate({
  prompt: 'A majestic mountain landscape at sunset',
  sessionId: GLabsClient.generateSessionId(),
  aspectRatio: '16:9',
  count: 4,         // Generate 4 images
  model: 'nanobanana', // or 'nanobananapro'
});

for (const image of result.images) {
  console.log(image.encodedImage); // Base64 image data
  console.log(image.mediaId);      // Media ID for video generation
  console.log(image.fifeUrl);      // CDN URL if available
}

Generate Options

OptionTypeRequiredDescription
promptstringYesDescription of the image to generate
sessionIdstringYesUnique session identifier
aspectRatioAspectRatioYesImage aspect ratio
projectIdstringNo*Project ID (uses client default if not provided)
referencesImageReference[]NoReference images for style
seednumberNoRandom seed for reproducibility
countnumberNoNumber of images (1-4, default: 1)
modelImageModelNoModel to use
promptsstring[]NoDifferent prompts for each image

* Required if not set in client config

Using Reference Images

Generate images inspired by uploaded references:

// First, upload reference images
const ref1 = await client.images.upload({
  imageBase64: styleImage,
  sessionId: GLabsClient.generateSessionId(),
});

// Generate using reference
const result = await client.images.generate({
  prompt: 'A similar landscape in winter',
  sessionId: GLabsClient.generateSessionId(),
  aspectRatio: '16:9',
  references: [
    { mediaId: ref1.mediaId },
  ],
});

Multiple Different Prompts

Generate images with different prompts in a single request:

const result = await client.images.generate({
  prompt: 'fallback prompt', // Used if prompts array is short
  sessionId: GLabsClient.generateSessionId(),
  aspectRatio: '16:9',
  prompts: [
    'A cat sitting on a windowsill',
    'A dog playing in the park',
    'A bird flying over the ocean',
    'A fish swimming in a coral reef',
  ],
});

// result.images[0] -> cat
// result.images[1] -> dog
// result.images[2] -> bird
// result.images[3] -> fish

Check Credit Status

Check your account's credit balance:

const credits = await client.images.getCreditStatus();

console.log(credits.credits);                    // Remaining credits
console.log(credits.userPaygateTier);            // Payment tier
console.log(credits.g1MembershipState);          // Membership state
console.log(credits.isUserAnimateCountryEnabled); // Animate feature access

Image Models

ModelDescription
nanobananaStandard Imagen model (GEM_PIX)
nanobananaproEnhanced Imagen model (GEM_PIX_2)

Aspect Ratios

RatioDescription
16:9Landscape (default)
9:16Portrait
1:1Square

Error Handling

import { GLabsError } from '@vrex/glabs-sdk';

try {
  const result = await client.images.generate({
    prompt: 'test',
    sessionId: GLabsClient.generateSessionId(),
    aspectRatio: '16:9',
  });
} catch (error) {
  if (error instanceof GLabsError) {
    switch (error.code) {
      case 'INVALID_ARGUMENT':
        console.error('Content violates policy');
        break;
      case 'HIGH_TRAFFIC':
        console.error('Service busy, try again later');
        break;
      case 'RECAPTCHA_REQUIRED':
        console.error('Configure reCAPTCHA provider');
        break;
      case 'RECAPTCHA_EVAL_FAILED':
        console.error('reCAPTCHA evaluation failed after retries');
        break;
      default:
        console.error('Error:', error.message);
    }
  }
}

On this page