Create a webhook for the authenticated tenant
POST
/v1/webhooks
Tenant-scoped webhook creation. The subscription is automatically scoped to the authenticated tenant. Tenants can only subscribe to tenant-accessible event types: budget., reservation., tenant.* (26 of 40 types).
api_key., policy., and system.* events require admin access.
PERMISSIONS: - Requires webhooks:write permission on the API key.
Authorizations
ApiKeyAuth
Tenant-scoped API key for runtime operations (consistent with Cycles Protocol)
Type
API Key (header: X-Cycles-API-Key)
Request Body
application/json
JSON "name": "string", "description": "string", "url": "string", "event_types": [ "string" ], "event_categories": [ "string" ], "scope_filter": "string", "thresholds": { "budget_utilization": [ 0 ], "burn_rate_multiplier": 3, "burn_rate_window_seconds": 300, "denial_rate_threshold": 0.1, "expiry_rate_threshold": 0.05, "auth_failure_rate_threshold": 0.1, "rate_window_seconds": 300 }, "signing_secret": "string", "headers": { "additionalProperties": "string" }, "retry_policy": { "max_retries": 5, "initial_delay_ms": 1000, "backoff_multiplier": 2, "max_delay_ms": 60000 }, "disable_after_failures": 10, "metadata": { "additionalProperties": "string" }
{
}
Responses
Subscription created
application/json
JSON "subscription": { "subscription_id": "string", "tenant_id": "string", "name": "string", "description": "string", "url": "string", "event_types": [ "string" ], "event_categories": [ "string" ], "scope_filter": "string", "thresholds": { "budget_utilization": [ 0 ], "burn_rate_multiplier": 3, "burn_rate_window_seconds": 300, "denial_rate_threshold": 0.1, "expiry_rate_threshold": 0.05, "auth_failure_rate_threshold": 0.1, "rate_window_seconds": 300 }, "signing_secret": "string", "headers": { "additionalProperties": "string" }, "status": "string", "retry_policy": { "max_retries": 5, "initial_delay_ms": 1000, "backoff_multiplier": 2, "max_delay_ms": 60000 }, "disable_after_failures": 10, "consecutive_failures": 0, "created_at": "string", "updated_at": "string", "last_triggered_at": "string", "last_success_at": "string", "last_failure_at": "string", "metadata": { "additionalProperties": "string" } }, "signing_secret": "string"
{
}