Add an endpoint
Registers a delivery URL. The response contains the signing secret exactly once - store it immediately. URLs must be public https://; private/internal addresses are rejected. Max 10 endpoints. Requires webhooks:manage.
POST
/webhook-endpointsAuthorization
AuthorizationBearer token (tp_live_...) · headerrequiredA TipPage API key, created in Dashboard → Settings → Developer.
Request body
requiredapplication/jsonurlstring<uri>requiredPublic https:// URL.
descriptionstringmax length 200
eventsstring[]requiredEvent types to receive, or `["*"]` for everything.
Responses
201Created. `secret` is shown only here (and on rotation).
endpointWebhookEndpointShow propertiesHide properties
idstringurlstring<uri>descriptionstring | nulleventsstring[]Subscribed event types, or `["*"]` for everything.
is_activebooleandisabled_reasonstring | nullSet when the endpoint was auto-disabled after repeated failures.
consecutive_failuresintegerDeliveries that exhausted every retry since the last success.
last_success_atstring<date-time> | nulllast_failure_atstring<date-time> | nullcreated_atstring<date-time>secretstring400Invalid URL, events, or endpoint limit reached.
errorstringrequiredHuman-readable message.
codestringMachine-readable code (e.g. `missing_scope`, `not_in_queue`).
401Missing or invalid API key (`missing_api_key` / `invalid_api_key`).
errorstringrequiredHuman-readable message.
codestringMachine-readable code (e.g. `missing_scope`, `not_in_queue`).
403The key lacks the required scope (`missing_scope`).
errorstringrequiredHuman-readable message.
codestringMachine-readable code (e.g. `missing_scope`, `not_in_queue`).
required_scopestring429Rate limit exceeded - check the `RateLimit-*` headers.
errorstringRequest
curl -X POST "https://api.tippage.com/v1/webhook-endpoints" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "http://example.com",
"description": "string",
"events": [
"string"
]
}'const response = await fetch("https://api.tippage.com/v1/webhook-endpoints", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "http://example.com",
"description": "string",
"events": [
"string"
]
})
});import requests
response = requests.post(
"https://api.tippage.com/v1/webhook-endpoints",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
json={
"url": "http://example.com",
"description": "string",
"events": [
"string"
]
},
)Response
{
"endpoint": {
"id": "we_1a2b3c4d5e6f",
"url": "http://example.com",
"description": "string",
"events": [
"string"
],
"is_active": true,
"disabled_reason": "string",
"consecutive_failures": 0,
"last_success_at": "2019-08-24T14:15:22Z",
"last_failure_at": "2019-08-24T14:15:22Z",
"created_at": "2019-08-24T14:15:22Z"
},
"secret": "whsec_9f8e7d..."
}{
"error": "string",
"code": "string"
}{
"error": "string",
"code": "string"
}{
"error": "string",
"code": "string",
"required_scope": "string"
}{
"error": "string"
}