[{"data":1,"prerenderedAt":207},["ShallowReactive",2],{"doc:\u002Freference\u002Fmanagement\u002Fwebhooks":3},{"page":4,"toc":197,"updated":206},{"path":5,"title":6,"seoTitle":7,"description":8,"blocks":9,"examples":183},"\u002Freference\u002Fmanagement\u002Fwebhooks","Webhook endpoints","Management API: Webhook Endpoints","Create, update, pause and delete webhook endpoints, rotate their signing secrets, send test events and redeliveries, and read delivery attempts.",[10,13,22,27,32,78,81,83,94,96,99,102,115,117,120,122,124,127,129,135,137,140,142,144,147,149,154,156,159,161,174],{"type":11,"text":12},"p","Register the endpoints Fingerly sends [webhooks](\u002Fdocs\u002Fwebhooks) to. Admin and developer management keys can do all of this. An organization can have up to 10 endpoints.",{"type":14,"title":15,"fields":16},"fields","Path parameter",[17],{"name":18,"type":19,"text":20,"required":21},"organization_id","string","Your organization, from [Describe the key](\u002Freference\u002Fmanagement\u002Foverview#describe-the-key). A path naming any other organization answers `404`.",true,{"type":23,"level":24,"text":25,"id":26},"heading",2,"List endpoints","list-endpoints",{"type":28,"method":29,"path":30,"auth":31},"endpoint","GET","\u002Fapi\u002Fv1\u002Fmanagement\u002Forganizations\u002F{organization_id}\u002Fwebhooks","management",{"type":14,"title":33,"fields":34},"Response",[35],{"name":36,"type":37,"text":38,"children":39},"endpoints","WebhookEndpoint[]","Every endpoint, newest first.",[40,43,46,49,52,56,59,62,65,69,72,75],{"name":41,"type":19,"text":42},"id","The endpoint's ID.",{"name":44,"type":19,"text":45},"url","Where deliveries are sent.",{"name":47,"type":19,"text":48},"description","Your description.",{"name":50,"type":19,"text":51},"environment","`live` for production traffic, `test` for staging and development.",{"name":53,"type":54,"text":55},"events","string[]","The event types the endpoint receives.",{"name":57,"type":19,"text":58},"status","`active`, `paused` or `failing`.",{"name":60,"type":19,"text":61},"secret_last4","The last four characters of the signing secret.",{"name":63,"type":19,"text":64},"previous_secret_expires_at","During a rotation, when the previous secret stops signing.",{"name":66,"type":67,"text":68},"delivered_24h","integer","Deliveries that succeeded in the last 24 hours.",{"name":70,"type":67,"text":71},"failed_24h","Deliveries that failed in the last 24 hours.",{"name":73,"type":19,"text":74},"last_delivery_at","When the endpoint last received a delivery.",{"name":76,"type":19,"text":77},"created_at","When the endpoint was created.",{"type":23,"level":24,"text":79,"id":80},"Create an endpoint","create-an-endpoint",{"type":28,"method":82,"path":30,"auth":31},"POST",{"type":14,"title":84,"fields":85},"Body",[86,88,90,92],{"name":44,"type":19,"text":87,"required":21},"An `https:\u002F\u002F` URL that resolves to a public address. Redirects are not followed.",{"name":50,"type":19,"text":89,"required":21},"`live` or `test`.",{"name":53,"type":54,"text":91,"required":21},"Event types, such as `identification.completed`. `billing.status_changed` needs `live`.",{"name":47,"type":19,"text":93,"required":21},"To tell endpoints apart. May be empty.",{"type":11,"text":95},"Answers `201` with `endpoint` and `secret`, the signing secret, shown once. A request past the limit of 10 endpoints answers `409` with `webhook_limit`.",{"type":23,"level":24,"text":97,"id":98},"Update an endpoint","update-an-endpoint",{"type":28,"method":100,"path":101,"auth":31},"PATCH","\u002Fapi\u002Fv1\u002Fmanagement\u002Forganizations\u002F{organization_id}\u002Fwebhooks\u002F{webhook_id}",{"type":14,"title":84,"fields":103},[104,106,108,109,111],{"name":44,"type":19,"text":105},"A new URL.",{"name":47,"type":19,"text":107},"A new description.",{"name":50,"type":19,"text":89},{"name":53,"type":54,"text":110},"The complete new list of event types.",{"name":112,"type":113,"text":114},"paused","boolean","`true` pauses the endpoint; `false` resumes it.",{"type":11,"text":116},"Send only the fields to change. Answers with the endpoint.",{"type":23,"level":24,"text":118,"id":119},"Delete an endpoint","delete-an-endpoint",{"type":28,"method":121,"path":101,"auth":31},"DELETE",{"type":11,"text":123},"Removes the endpoint and answers `204`. Deliveries stop at once.",{"type":23,"level":24,"text":125,"id":126},"Rotate the signing secret","rotate-the-signing-secret",{"type":28,"method":82,"path":128,"auth":31},"\u002Fapi\u002Fv1\u002Fmanagement\u002Forganizations\u002F{organization_id}\u002Fwebhooks\u002F{webhook_id}\u002Frotate-secret",{"type":14,"title":84,"fields":130},[131],{"name":132,"type":67,"text":133,"default":134},"previous_secret_valid_hours","How long the previous secret keeps signing deliveries, from `0` to `168`.","24",{"type":11,"text":136},"Answers with `endpoint` and the new `secret`, shown once. See [rotate a secret](\u002Fdocs\u002Fwebhooks#rotate-a-secret).",{"type":23,"level":24,"text":138,"id":139},"Send a test event","send-a-test-event",{"type":28,"method":82,"path":141,"auth":31},"\u002Fapi\u002Fv1\u002Fmanagement\u002Forganizations\u002F{organization_id}\u002Fwebhooks\u002F{webhook_id}\u002Ftest",{"type":11,"text":143},"Queues one signed `webhook.test` delivery and answers `202` with its `event_id`. A test or redelivery already queued for the endpoint answers `409` with `webhook_busy`.",{"type":23,"level":24,"text":145,"id":146},"Redeliver an event","redeliver-an-event",{"type":28,"method":82,"path":148,"auth":31},"\u002Fapi\u002Fv1\u002Fmanagement\u002Forganizations\u002F{organization_id}\u002Fwebhooks\u002F{webhook_id}\u002Fredeliver",{"type":14,"title":84,"fields":150},[151],{"name":152,"type":19,"text":153,"required":21},"event_id","The ID of an event this endpoint received in the last 30 days.",{"type":11,"text":155},"Queues one more delivery of the event, with the same `id`, and answers `202`.",{"type":23,"level":24,"text":157,"id":158},"List delivery attempts","list-delivery-attempts",{"type":28,"method":29,"path":160,"auth":31},"\u002Fapi\u002Fv1\u002Fmanagement\u002Forganizations\u002F{organization_id}\u002Fwebhook-deliveries",{"type":14,"title":162,"fields":163},"Query parameters",[164,167,171],{"name":50,"type":19,"text":165,"default":166},"`live`, `test` or `all`.","'all'",{"name":168,"type":67,"text":169,"default":170},"limit","Attempts per page.","50",{"name":172,"type":19,"text":173},"cursor","The `next_cursor` of the previous page.",{"type":14,"title":33,"fields":175},[176,180],{"name":177,"type":178,"text":179},"deliveries","Delivery[]","Attempts from the last 30 days, newest first: `id`, `endpoint_id`, `endpoint_url`, `event_id`, `event`, `environment`, `status` (`delivered`, `retrying` or `failed`), `response_code`, `duration_ms`, `attempt`, `error` and `occurred_at`.",{"name":181,"type":19,"text":182},"next_cursor","Pass it as `cursor` for the next page. Omitted on the last page.",{"request":184,"response":189},[185],{"label":186,"lang":187,"code":188},"cURL","bash","curl -X POST \"https:\u002F\u002Fus.api.fingerly.io\u002Fapi\u002Fv1\u002Fmanagement\u002Forganizations\u002F01a0a7f2-3c18-7b40-8d2e-5f6a9b1c0d37\u002Fwebhooks\" \\\n  -H \"x-api-key: $FINGERLY_MANAGEMENT_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"url\": \"https:\u002F\u002Frisk.example.com\u002Fwebhooks\u002Ffingerly\",\n    \"description\": \"Risk review queue\",\n    \"environment\": \"live\",\n    \"events\": [\n      \"identification.completed\",\n      \"visitor.suspect\"\n    ]\n  }'",[190,194],{"label":191,"lang":192,"code":193},"201","json","{\n  \"endpoint\": {\n    \"id\": \"01a0a860-2b7d-7c4e-9f13-8a5b6c7d8e9f\",\n    \"url\": \"https:\u002F\u002Frisk.example.com\u002Fwebhooks\u002Ffingerly\",\n    \"description\": \"Risk review queue\",\n    \"environment\": \"live\",\n    \"events\": [\n      \"identification.completed\",\n      \"visitor.suspect\"\n    ],\n    \"status\": \"active\",\n    \"secret_last4\": \"a91F\",\n    \"delivered_24h\": 0,\n    \"failed_24h\": 0,\n    \"created_at\": \"2026-09-16T09:31:55Z\"\n  },\n  \"secret\": \"whsec_…\"\n}",{"label":195,"lang":192,"code":196},"409","{\n  \"error\": {\n    \"code\": \"webhook_limit\",\n    \"message\": \"an organization may have at most 10 webhook endpoints\",\n    \"status\": 409\n  },\n  \"request_id\": \"01a0a84c-0f11-7a3e-9c2d-4b5e6f708192\"\n}",[198,199,200,201,202,203,204,205],{"id":26,"text":25,"level":24},{"id":80,"text":79,"level":24},{"id":98,"text":97,"level":24},{"id":119,"text":118,"level":24},{"id":126,"text":125,"level":24},{"id":139,"text":138,"level":24},{"id":146,"text":145,"level":24},{"id":158,"text":157,"level":24},"2026-09-17T16:56:08.000Z",1789667797869]