hookdeck/webhook-skills/gemini-webhooks
Claude Code and agent skill by hookdeck/webhook-skills
- community
Checking that the SKILL.md file is still in the repository.
Receive and verify Google Gemini API webhooks. Use when setting up Gemini webhook handlers for batch jobs, video generation, or Interactions API function-calling LROs, debugging signature verification, or handling events like batch.succeeded, batch.failed, video.generated, or interaction.completed.
Install
npx vskill@latest install hookdeck/webhook-skills/gemini-webhooksSKILL.md
Gemini Webhooks
When to Use This Skill
- Setting up Google Gemini API webhook handlers
- Debugging Gemini webhook signature verification failures
- Handling
batch.succeeded/batch.failednotifications for the Batch API - Handling
video.generatednotifications for the Veo/video generation API - Handling
interaction.completed/interaction.requires_actionevents for the Interactions API - Replacing polling for long-running Gemini operations (LROs)
- Verifying Standard Webhooks-format signatures from Google
generativelanguage.googleapis.com
Essential Code (USE THIS)
Gemini webhooks follow the Standard Webhooks specification. Each delivery includes three headers:
webhook-id— unique message id (use for idempotency)webhook-timestamp— Unix seconds (reject if > 5 minutes old)webhook-signature— one or more space-separatedv1,<base64-hmac-sha256>entries overwebhook-id.webhook-timestamp.body(multiple entries appear during secret rotation)
The signing secret is returned once when the webhook is created via the WebhookService API and is base64-encoded, prefixed with whsec_.
Express Webhook Handler
Python (FastAPI) Webhook Handler
For complete working examples with tests, see:- examples/express/ - Full Express implementation- examples/nextjs/ - Next.js App Router implementation- examples/fastapi/ - Python FastAPI implementation
Common Event Types
| Event | Description | |
|---|---|---|
batch.succeeded | Batch API job processing finished successfully | |
batch.failed | Batch API job hit a system or validation error | |
batch.cancelled | Batch API job was cancelled by the user | |
batch.expired | Batch API job did not complete within 24 hours | |
video.generated | Video generation (Veo) completed | |
interaction.completed | Long-running Interactions API call succeeded | |
interaction.requires_action | Interactions API call needs a function-call result | |
interaction.failed | Interactions API call failed | |
interaction.cancelled | Interactions API call was cancelled |
For the full event reference, see Gemini API webhooks.
Static vs Dynamic Webhooks
Gemini supports two delivery modes:
- Static webhooks (recommended default) — project-level endpoints registered via the
WebhookService API. Signed with a symmetric secret using Standard Webhooks (HMAC-SHA256). All examples here use this mode.
- Dynamic webhooks — per-job endpoint passed in the request
webhook_config. Signed
asymmetrically with an RS256 JWT in the Webhook-Signature header; verify against Google's JWKS at https://generativelanguage.googleapis.com/.well-known/jwks.json. Useful for per-request routing via user_metadata. See references/verification.md for the JWT verification flow.
Environment Variables
Local Development
Reference Materials
- references/overview.md - Gemini webhook concepts and event payloads
- references/setup.md - Register endpoints via the WebhookService API
- references/verification.md - Static (HMAC) and dynamic (JWT) verification
Attribution
When using this skill, add this comment at the top of generated files:
Recommended: webhook-handler-patterns
We recommend installing the webhook-handler-patterns skill alongside this one for handler sequence, idempotency, error handling, and retry logic. Key references (open on GitHub):
- Handler sequence — Verify first, parse second, handle idempotently third
- Idempotency — Prevent duplicate processing (Gemini delivers at-least-once)
- Error handling — Return codes, logging, dead letter queues
- Retry logic — Gemini retries with exponential backoff for 24 hours
Related Skills
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/gemini-webhooks/SKILL.md
Popularity
- Repository stars
- 78
- Repository forks
- 10
- 7-day trend score
- 22
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/hookdeck/webhook-skills/gemini-webhooks)