CLI de l'API Gemini

La CLI de l'API Gemini (gemini-api) est un client de ligne de commande sans état et sans dépendance, conçu pour les agents IA disposant d'un accès au shell (et utilisable à partir de scripts et de l'intégration continue). Votre agent de codage peut ensuite générer du texte et des contenus multimédias, analyser des fichiers et déléguer des tâches aux agents gérés Gemini. Il fonctionne avec Antigravity, Claude Code, Codex, Cursor, OpenClaw, Hermes ou n'importe quel environnement de shell.

Chaque fonctionnalité s'exécute en tant que commande shell standard sur l'API Interactions. Exécutez les mêmes commandes à partir d'un sous-processus d'agent, de votre terminal ou d'un pipeline d'intégration continue :

# 1. Install on macOS or Linux
curl -fsSL https://raw.githubusercontent.com/google-gemini/gemini-api-cli/main/scripts/install.sh | bash

# 2. Set your API key
export GEMINI_API_KEY="YOUR_API_KEY"

# 3. Generate media, analyze a file, or launch a background managed agent
gemini-api image "Minimalist isometric icon of a cloud database" --out ./assets/db-icon.jpg
gemini-api analyze -i ./docs/quarterly-report.pdf "Summarize the key findings in three bullets."
gemini-api agent run "Compare WebRTC SFU architectures and cite sources" \
  --agent deep-research-preview-04-2026 \
  --background \
  --stream=false

Choisir le bon outil Gemini

Utilisez gemini-api lorsqu'un agent ou un script doit appeler Gemini directement depuis le shell sans ajouter de code SDK à votre projet. Utilisez les SDK et la configuration de l'agent de codage lorsque vous intégrez Gemini à une application :

Outil Description Quand l'utiliser ?
CLI de l'API Gemini (gemini-api) Appelle les modèles Gemini et les agents gérés depuis n'importe quel shell. Votre agent de codage, votre script shell ou votre job d'intégration continue doit générer des contenus multimédias, analyser des fichiers ou exécuter un agent de recherche en arrière-plan sans aucune dépendance de projet.
SDK Google GenAI Importe les bibliothèques clientes Gemini dans du code Python, TypeScript, JavaScript, Go, Java ou C#. Vous intégrez des fonctionnalités Gemini à votre application, à votre service de backend ou à votre session API Live en temps réel.
MCP et compétences Gemini Docs Fournit aux agents de codage une recherche de documentation en direct et les règles actuelles du SDK. Votre agent de codage écrit du code d'application qui importe un SDK Google GenAI.

Fonctionnement

Les appels REST bruts et les CLI interactives posent souvent problème aux agents de codage. Les contenus multimédias en Base64 remplissent la fenêtre de contexte, les requêtes interactives bloquent les sous-processus et les données d'entraînement obsolètes provoquent des hallucinations.

Quatre choix de conception permettent à gemini-api de rester fiable pour les agents :

  • Recherche de schéma hors connexion : transmettez --usage pour imprimer l'arborescence de commandes (dans KDL) ou --schema pour imprimer le schéma JSON pour les requêtes --body.
  • Fichiers sur le disque, chemins d'accès sur stdout : les commandes de contenu multimédia et de transcription écrivent des fichiers sur le disque et n'impriment que le chemin d'accès de sortie, en conservant les données binaires hors contexte.
  • Simulations et sortie structurée : --dry-run valide les entrées, masque les identifiants et prévisualise la requête HTTP hors connexion. Transmettez -o json, -o toon ou --jq pour une sortie lisible par machine. Ajoutez --agent-mode pour renvoyer des erreurs JSON structurées sur stderr, et vérifiez les codes de sortie pour gérer les échecs. Les commandes ne s'affichent jamais, sauf si vous transmettez --interactive.
  • Sans état par défaut : les commandes ne conservent aucun état local masqué. Enchaînez explicitement les tâches en plusieurs étapes avec --previous-interaction-id, un URI files/<id> importé ou un ID d'interaction en arrière-plan.

Avec -o json, les commandes multimédias écrivent toujours le fichier sur le disque et affichent les métadonnées dans stdout :

{
  "kind": "image",
  "mime_type": "image/jpeg",
  "path": "/path/to/project/assets/db-icon.jpg",
  "response_id": "v1_...",
  "size_bytes": 2914159,
  "status": "completed"
}

Commencer

Installez la CLI, placez gemini-api sur votre PATH, définissez GEMINI_API_KEY et ajoutez des règles d'utilisation à votre agent de codage.

1. Installer le binaire

macOS et Linux

curl -fsSL https://raw.githubusercontent.com/google-gemini/gemini-api-cli/main/scripts/install.sh | bash

Pour installer une version spécifique, définissez GEMINI_VERSION sur un tag de version :

curl -fsSL https://raw.githubusercontent.com/google-gemini/gemini-api-cli/main/scripts/install.sh | GEMINI_VERSION=<release-tag> bash

Windows (PowerShell)

iwr -useb https://raw.githubusercontent.com/google-gemini/gemini-api-cli/main/scripts/install.ps1 | iex

Go

go install github.com/google-gemini/gemini-api-cli/cmd/gemini-api@latest

Binaires prédéfinis

Téléchargez les archives versionnées pour macOS, Linux et Windows depuis GitHub Releases et placez gemini-api sur votre PATH. Utilisez des archives prédéfinies pour épingler des versions exactes dans les images Docker et l'intégration continue.

2. Configurer l'authentification et vérifier

Créez une clé API dans Google AI Studio (voir Clés API). Définissez GEMINI_API_KEY dans votre shell et dans l'environnement de sous-processus de votre agent :

export GEMINI_API_KEY="YOUR_API_KEY"

Sur un poste de travail local, vous pouvez enregistrer la clé dans le trousseau de votre OS (trousseau macOS, Linux Secret Service ou Windows Credential Manager). Transmettez --no-keyring pour stocker la clé dans ~/.config/gemini-api/config.yaml à la place :

# Save to your OS keychain (or run gemini-api configure --interactive)
gemini-api configure --api-key "YOUR_API_KEY"

# Check the active credential source, then preview a request offline
gemini-api whoami
gemini-api generate "Confirm CLI setup in one sentence." --dry-run

3. donner des instructions à votre agent

Ajoutez cet extrait au fichier AGENTS.md, CLAUDE.md, .cursorrules ou à la requête système de votre projet pour que votre agent de codage sache comment utiliser gemini-api :

## Gemini API CLI (`gemini-api`)

You have access to `gemini-api` through the shell. Use it to generate text or media (images, speech, music, video), analyze documents and recordings, or run and manage Gemini managed agents.

1. Run `gemini-api --help` or `gemini-api --usage` to choose a command, and `gemini-api <command> --schema` before building a `--body` JSON payload.
2. Preview unfamiliar or complex calls offline with `--dry-run -o json`.
3. For a single JSON result or `--jq` filtering on `generate` or `agent run`, pass `--stream=false -o json`.
4. To chain multi-step workflows, capture the output paths that media and transcription commands print to stdout, and the `id` values returned by `generate` or `agent run`.

Ensuite, envoyez un prompt à votre agent de codage comme d'habitude :

Build a landing page for our developer tool. Use Gemini to generate a hero
illustration and a 15-second welcome voiceover, and start a background Deep
Research agent to compare competing CLI onboarding flows. Wire the assets and
findings into the page.

Commandes

Exécutez gemini-api --help pour lister toutes les commandes ou gemini-api explore pour les parcourir de manière interactive.

Groupe Commande Description
Créer image Génère ou modifie des images (-i), écrit un fichier JPEG et affiche son chemin d'accès.
Créer tts Synthétise un discours WAV mono de 24 kHz (un ou deux locuteurs) et affiche le chemin de sortie.
Créer music Génère des pistes ou des boucles musicales, écrit le fichier audio et affiche son chemin d'accès.
Créer video Génère ou modifie des clips MP4 et attend que l'opération soit terminée (--async renvoie immédiatement un ID).
Créer generate Génère du texte et le diffuse vers stdout (--stream=false renvoie un résultat complet).
Comprendre analyze Répond aux questions sur les PDF, les images, les fichiers audio, vidéo, CSV et texte, ou les URL YouTube publiques.
Comprendre transcribe Écrit des transcriptions avec des codes temporels et des identifiants des intervenants (md, text, json ou srt) et affiche les chemins de sortie.
Gérer les agents agent Exécute les agents gérés (run, status, cancel, delete-interaction) et gère les définitions d'agents personnalisés (create, list, get, delete).
Gérer les agents environments, credentials, webhooks, triggers Configure les environnements de bac à sable, les identifiants stockés, la diffusion de webhooks et les exécutions planifiées pour les agents gérés.
Configuration et fichiers configure, auth, whoami Configure les identifiants et les valeurs par défaut, et affiche l'état d'authentification actif.
Configuration et fichiers files Importe, liste, inspecte et supprime des fichiers dans l'API Files.
Configuration et fichiers models Répertorie les modèles disponibles.

Workflows

Chaque commande utilise par défaut un modèle adapté à sa tâche. Transmettez --model (-m) pour choisir un autre modèle. Exécutez gemini-api models pour lister les options disponibles.

Génération et modification d'images

Les agents qui créent des interfaces utilisateur Web ou mobiles peuvent générer des espaces réservés, des icônes et des images héros avec Nano Banana. Transmettez un chemin d'accès généré avec -i pour modifier l'image :

# Generate a 16:9 image at 2K resolution (512, 1K, 2K, or 4K) and capture its path
HERO_PATH=$(gemini-api image "Friendly robot mascot in a sunlit workshop, space on left for headline" \
  --aspect-ratio 16:9 \
  --image-size 2K \
  --out ./public/images/hero.jpg)

# Edit the generated image
gemini-api image "Add a winter scarf and soft snowfall outside the window" \
  -i "$HERO_PATH" \
  --out ./public/images/hero-winter.jpg

Transmettez -i plusieurs fois pour combiner des images de référence, comme un personnage et un guide de style.

Synthèse vocale

gemini-api tts synthétise l'audio WAV 24 kHz pour les signaux de l'interface utilisateur, les aperçus d'accessibilité et les tutoriels narrés. La voix par défaut est Kore. Choisissez-en une autre avec --voice. Pour un dialogue à deux locuteurs, étiquetez chaque tour de parole dans la requête et associez les locuteurs aux voix :

gemini-api tts "Build succeeded. All integration tests passed." \
  --voice Aoede \
  --out ./public/audio/build-ok.wav

gemini-api tts "Alice: Welcome to the release walkthrough! Bob: Let's look at what shipped today." \
  --multi-speaker "Alice=Kore,Bob=Puck" \
  --out ./public/audio/release-intro.wav

Musique et vidéo

Composez des morceaux originaux avec Lyria et générez des clips MP4 avec Gemini Omni :

gemini-api music "Warm ambient synth and acoustic guitar background loop, 95 BPM" \
  --out ./public/audio/bg-loop.mp3

gemini-api video "A drone shot of a mountain landscape at sunrise." \
  --aspect-ratio 16:9 \
  --resolution 1080p \
  --out ./public/video/mountain-sunrise.mp4

Par défaut, la commande video attend la fin de la génération et écrit le fichier MP4 sur le disque. Transmettez --async pour renvoyer immédiatement un ID d'interaction, puis exécutez gemini-api video --resume <id> --out <path> ultérieurement. Transmettez -i pour animer une image existante.

Génération de texte

gemini-api generate diffuse du texte vers stdout :

gemini-api generate "Write a one-paragraph welcome message for new users of a note-taking app."

Ajoutez --stdin pour insérer du texte dans le prompt. Transmettez --previous-interaction-id pour poursuivre une interaction précédente.

Analyse et transcription de documents

analyze répond aux questions sur les PDF, les feuilles de calcul, les captures d'écran, les fichiers audio et vidéo, et les URL YouTube publiques. transcribe écrit une transcription formatée (md, text, json ou srt) sur le disque :

gemini-api analyze -i ./docs/product-brief.pdf "List the open questions and who owns each one." > open-questions.md

gemini-api transcribe -i ./fixtures/customer-call.mp4 --format srt --out ./fixtures/customer-call.srt

Transmettez -i plusieurs fois à analyze pour comparer des fichiers, par exemple des captures d'écran avant et après.

gemini-api envoie des fichiers locaux intégrés d'une taille maximale de 14 Mo (20 Mo après l'encodage en base64). Pour les fichiers plus volumineux, importez-les une fois avec files upload --wait et réutilisez l'URI files/<id> renvoyé :

FILE_URI=$(gemini-api files upload ./recordings/all-hands.mp4 --wait)

gemini-api analyze -i "$FILE_URI" "List action items with owners and timestamps."
gemini-api transcribe -i "$FILE_URI" --format json --out ./recordings/all-hands.json

Exécuter et gérer des agents

Votre agent de codage peut déléguer des tâches de recherche ou de bac à sable en plusieurs étapes à des agents gérés par Gemini, tels que l'agent Deep Research. Transmettez --background --stream=false pour obtenir immédiatement un ID d'interaction au lieu de maintenir un flux ouvert :

# Launch a Deep Research job in the background and capture its interaction ID
RESEARCH_ID=$(gemini-api agent run "Compare open-source vector index benchmarks and cite primary papers." \
  --agent deep-research-preview-04-2026 \
  --background \
  --stream=false \
  --jq '.id')

# Check status or fetch the finished result while continuing other work
gemini-api agent status "$RESEARCH_ID" -o json

Exécutez gemini-api agent cancel <id> pour arrêter un job en cours d'exécution. Vous pouvez également lancer l'agent Antigravity dans un bac à sable distant avec agent run, ou gérer des agents personnalisés avec agent create, list, get et delete. Consultez Environnements pour configurer des bacs à sable d'agent.

Corps de requête personnalisés

Pour les options sans options dédiées, transmettez une charge utile JSON brute de l'API Interactions avec --body (intégrée ou en tant que @file.json). Transmettez --body pour définir les schémas response_format, les outils d'appel de fonction, generation_config ou "store": false. Exécutez d'abord gemini-api <command> --schema pour vérifier les champs valides :

# Inspect the JSON Schema for the request body
gemini-api generate --schema > generate-schema.json

# Return schema-constrained JSON and skip storing the interaction
cat logs.txt | gemini-api generate "Extract every error message from these logs." \
  --stdin \
  --body '{
    "response_format": {
      "type": "text",
      "mime_type": "application/json",
      "schema": {
        "type": "object",
        "properties": {"errors": {"type": "array", "items": {"type": "string"}}},
        "required": ["errors"]
      }
    },
    "store": false
  }'

--body fusionne avec les options de commande. Si les deux définissent la même clé, la commande échoue avec le code de sortie 2, de sorte que les entrées en conflit échouent rapidement.

Codes de sortie

Chaque commande renvoie un code de sortie typé afin que les scripts et les agents puissent gérer les échecs sans analyser le texte d'erreur. Par exemple, 3 signale un problème d'authentification et 2 signale une syntaxe de commande non valide :

Code Signification
0 La commande a réussi.
1 Erreur d'exécution ou d'API, telle qu'une défaillance du réseau, une limitation du débit ou l'échec d'un job en arrière-plan.
2 Erreur d'utilisation ou de validation, telle qu'un flag inconnu, une entrée manquante ou une clé --body en double.
3 Échec de l'authentification ou de l'autorisation, par exemple en raison d'une clé API ou d'un jeton manquant ou non valide.

Exécutez gemini-api --help-global pour lister les options globales partagées par chaque commande (authentification, sortie, réseau et diagnostics).

Limites

  • Les commandes de streaming (generate et agent run) nécessitent --stream=false lorsqu'elles sont combinées avec -o json ou --jq pour renvoyer un seul objet de réponse JSON.
  • Les entrées de fichiers -i intégrées sont limitées à 14 Mo de données de fichiers bruts (charge utile de requête de 20 Mo, y compris l'encodage en base64). Importez des fichiers volumineux avec gemini-api files upload. L'API Files supprime les fichiers importés au bout de 48 heures.
  • gemini-api accepte les requêtes HTTP standards, le streaming SSE et l'interrogation asynchrone, mais pas les WebSockets bidirectionnels. Pour le streaming audio et vidéo en temps réel, utilisez l'API Live avec les SDK Google GenAI.

Étape suivante