Skip to main content
This guide covers how to send Google AI usage data to Fenra.

Gemini API

import { GoogleGenerativeAI } from '@google/generative-ai';

const genAI = new GoogleGenerativeAI(process.env.GOOGLE_API_KEY);

async function chat(prompt) {
  const model = genAI.getGenerativeModel({ model: 'gemini-1.5-pro' });
  const result = await model.generateContent(prompt);
  const usage = result.response.usageMetadata;

  // Send to Fenra
  await fetch('https://api.fenra.io/ingest/usage', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-Api-Key': process.env.FENRA_API_KEY
    },
    body: JSON.stringify({
      provider: 'gemini',
      model: 'gemini-1.5-pro',
      usage: [{
        type: 'tokens',
        metrics: {
          input_tokens: usage.promptTokenCount,
          output_tokens: usage.candidatesTokenCount,
          total_tokens: usage.totalTokenCount
        }
      }],
      context: {
        billable_customer_id: process.env.BILLABLE_CUSTOMER_ID
      }
    })
  });

  return result.response;
}

Context Caching

When using context caching, include cached tokens:
usage: [{
  type: 'tokens',
  metrics: {
    input_tokens: usage.promptTokenCount,
    output_tokens: usage.candidatesTokenCount,
    total_tokens: usage.totalTokenCount,
    cached_tokens: usage.cachedContentTokenCount || 0
  }
}]

Multimodal Inputs

Gemini handles images, video, and audio natively. Token counts include all modalities, so no separate tracking is needed.

Supported Models

Fenra supports all Google Gemini models. Common models include:
ModelContext Window
gemini-2.0-flash1M tokens
gemini-1.5-pro2M tokens
gemini-1.5-flash1M tokens
gemini-1.5-flash-8b1M tokens

Next Steps