Webhooks
Register HTTP endpoints to receive real-time notifications for key events: rotations, budget alerts, user changes, and more.
Enterprise feature
Overview
Register webhook endpoints to receive HTTP POST notifications when events occur in your organization. Each webhook has an HMAC signing secret for payload verification and can subscribe to specific event types or all events.
Event Types
| Event | Description |
|---|---|
key.create | API key created |
key.revoke | API key revoked |
key.rotate | API key rotated |
user.invite | User invited to organization |
user.role_change | User role updated |
user.remove | User removed from organization |
budget.warning | Budget soft limit reached |
budget.exceeded | Budget hard limit exceeded |
app.create | Application created |
app.delete | Application deleted |
Register a Webhook
/api/v1/webhooksCreate a webhook endpoint. Requires admin role.
curl -X POST https://api.ingateai.com/api/v1/webhooks \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-app.com/webhooks/ingate",
"events": ["key.rotate", "budget.warning", "budget.exceeded"]
}'The response includes the HMAC signing secret. This is shown only at creation:
{
"id": "webhook-uuid",
"url": "https://your-app.com/webhooks/ingate",
"secret": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"events": ["key.rotate", "budget.warning", "budget.exceeded"],
"active": true,
"created_at": "2026-04-01T10:00:00Z"
}Save the secret
Webhook Payload
Events are delivered as JSON POST requests:
{
"id": "event-uuid",
"type": "key.rotate",
"org_id": "org-uuid",
"timestamp": "2026-04-01T10:30:00Z",
"data": {
"new_key_id": "new-key-uuid",
"overlap_hours": 24
}
}API Endpoints
/api/v1/webhooksList all webhooks for the current org.
/api/v1/webhooks/:idGet a specific webhook (secret is not shown).
/api/v1/webhooks/:idUpdate URL, events, or active status.
/api/v1/webhooks/:idDelete a webhook.
Subscribe to All Events
Omit the events field or pass an empty array to subscribe to all event types:
curl -X POST https://api.ingateai.com/api/v1/webhooks \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"url": "https://your-app.com/webhooks/ingate"}'