Create endpoint
POST /v1/endpoints
Create a new webhook endpoint. The endpoint URL must be HTTPS and publicly accessible. A signing secret is automatically generated and returned only in this response.
Important: The signing_secret is only returned once. Store it securely
for verifying webhook signatures.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”object
HTTPS URL of the webhook endpoint. Must be publicly accessible. Internal/private IP addresses are blocked for security.
Example
https://customer.app/webhooksOptional description of the endpoint
Example
Main production webhookRate limit in requests per second (0 = no limit)
Example
10Maximum burst size for rate limiting
Example
20Custom headers to include in webhook requests
object
Example
{ "X-Custom-Header": "value"}Examples
Basic endpoint
{ "url": "https://customer.app/webhooks"}Endpoint with rate limiting
{ "url": "https://customer.app/webhooks", "description": "Main production webhook", "rate_limit_rps": 10, "burst": 20, "headers": { "X-Custom-Header": "value" }}Responses
Section titled “ Responses ”Endpoint created successfully
object
object
Unique endpoint identifier
Example
ep_550e8400e29b41d4a716446655440000Webhook delivery URL
Example
https://customer.app/webhooksOptional description
Example
Main production webhookInitial signing key identifier
Example
sk_550e8400e29b41d4a716446655440001The signing secret - shown only once! Store this securely for verifying webhook signatures.
Example
whsec_abcdefghijklmnopqrstuvwxyz123456Short identifier suffix for the initial signing key
Example
abcdWhen the endpoint was created
Example
2025-12-01T10:00:00Zobject
Unique identifier for this request (useful for support)
Example
req_xyz123Example
{ "data": { "id": "ep_550e8400e29b41d4a716446655440000", "url": "https://customer.app/webhooks", "description": "Main production webhook", "signing_key_id": "sk_550e8400e29b41d4a716446655440001", "signing_secret": "whsec_abcdefghijklmnopqrstuvwxyz123456", "key_hint": "abcd", "created_at": "2025-12-06T12:00:00Z" }, "meta": { "request_id": "req_xyz123" }}Invalid request
object
object
Machine-readable error code
Example
INVALID_REQUESTHuman-readable error message
Example
endpoint must be a valid HTTPS URLobject
Unique identifier for this request (useful for support)
Example
req_xyz123Examples
Endpoint not found
{ "error": { "code": "ENDPOINT_NOT_FOUND", "message": "endpoint not found" }, "meta": { "request_id": "req_xyz123" }}Invalid endpoint ID format
{ "error": { "code": "INVALID_REQUEST", "message": "endpoint_id must be in format ep_xxx" }, "meta": { "request_id": "req_xyz123" }}Invalid payload
{ "error": { "code": "INVALID_REQUEST", "message": "payload must be valid JSON" }, "meta": { "request_id": "req_xyz123" }}Invalid headers
{ "error": { "code": "INVALID_HEADERS", "message": "header 'Host' is forbidden and cannot be overridden" }, "meta": { "request_id": "req_xyz123" }}Unauthorized - Invalid or missing API key
object
object
Machine-readable error code
Example
INVALID_REQUESTHuman-readable error message
Example
endpoint must be a valid HTTPS URLobject
Unique identifier for this request (useful for support)
Example
req_xyz123Example
{ "error": { "code": "UNAUTHORIZED", "message": "Invalid or missing API key" }, "meta": { "request_id": "req_xyz123" }}Enter your credentials to populate code examples throughout the docs.