openapi: 3.1.0 info: title: HookDeploy API version: '2026-10-18' description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-18: 25 operation(s) read from 6 public documentation page(s) (each operation names its page in x-source). This is not the provider''s published contract; HookDeploy has published no machine-readable contract that the pipeline could find. Engine: local.' x-evidence-tiers: code-example: 15 documentation: 10 pages-with-code: 6 pages-read: 6 x-generated-from: documentation x-provenance: generated x-authored-by: API Evangelist x-generated: '2026-10-18' x-generator: generate-contract-from-docs.py x-engine: local x-sources: - https://hookdeploy.dev/docs/api/usage - https://hookdeploy.dev/docs/api/replay - https://hookdeploy.dev/docs/api/members - https://hookdeploy.dev/docs/api/overview - https://hookdeploy.dev/docs/api/requests - https://hookdeploy.dev/docs/api/endpoints servers: - url: https://api.hookdeploy.dev paths: /v1/destinations: post: operationId: post_v1_destinations tags: - Destinations summary: Destinations API x-source: https://hookdeploy.dev/docs/api/overview responses: '201': description: Success (status as documented) x-evidence: kind: documentation /v1/destinations/{id}: get: operationId: get_v1_destinations_id tags: - Destinations summary: Destinations API x-source: https://hookdeploy.dev/docs/api/overview parameters: - name: id in: path required: true schema: type: string responses: '200': description: Success (status as documented) x-evidence: kind: documentation /v1/endpoints: delete: operationId: delete_v1_endpoints tags: - Endpoints summary: DELETE /v1/endpoints x-source: https://hookdeploy.dev/docs/api/endpoints responses: '200': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: "curl -s -X DELETE \"https://api.hookdeploy.dev/v1/endpoints/ $ENDPOINT_ID \" -H \"Authorization: Bearer hd_live_YOUR_KEY\"\ \ \n Next steps \n Requests API — List captured requests for an endpoint \n Endpoints concept — Slugs, pausing, forwarding \n Usage\ \ API — Check endpoint count against plan limits \n ← Previous API Overview Next → Requests API HookDeploy documentation Support Security\ \ Terms Cookie prefer" get: operationId: get_v1_endpoints tags: - Endpoints summary: GET /v1/endpoints x-source: https://hookdeploy.dev/docs/api/endpoints responses: '200': description: Success (shape read from the example response on the page) content: application/json: schema: $ref: '#/components/schemas/GetV1EndpointsResponse' x-evidence: kind: code-example language: curl snippet: "curl -s \"https://api.hookdeploy.dev/v1/endpoints\" -H \"Authorization: Bearer hd_live_YOUR_KEY\" \n Response: \n { \n \"data\"\ \ : [ \n { \n \"id\" : \"550e8400-e29b-41d4-a716-446655440000\" , \n \"organization_id\" : \"660e8400-e29b-41d4-a716-446655440001\"\ \ , \n \"created_by\" : null , \n \"slug\" : \"abc123def456gh78\" , \n \"name\" : \"Stripe webhooks\" , \n \"description\" : \"Production\ \ Stripe events\" , \n \"forward_url\" : \"https:" patch: operationId: patch_v1_endpoints tags: - Endpoints summary: PATCH /v1/endpoints x-source: https://hookdeploy.dev/docs/api/endpoints requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PatchV1EndpointsRequest' responses: '200': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: 'curl -s -X PATCH "https://api.hookdeploy.dev/v1/endpoints/ $ENDPOINT_ID " -H "Authorization: Bearer hd_live_YOUR_KEY" -H "Content-Type: application/json" -d ''{"paused": true}'' ' post: operationId: post_v1_endpoints tags: - Endpoints summary: Endpoints API x-source: https://hookdeploy.dev/docs/api/overview responses: '201': description: Success (status as documented) x-evidence: kind: documentation /v1/endpoints/{id}: delete: operationId: delete_v1_endpoints_id tags: - Endpoints summary: Endpoints API x-source: https://hookdeploy.dev/docs/api/overview parameters: - name: id in: path required: true schema: type: string responses: '200': description: Success (status as documented) x-evidence: kind: documentation get: operationId: get_v1_endpoints_id tags: - Endpoints summary: Get endpoint x-source: https://hookdeploy.dev/docs/api/endpoints parameters: - name: id in: path required: true schema: type: string responses: '200': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/GetV1EndpointsIdResponse' x-evidence: kind: documentation patch: operationId: patch_v1_endpoints_id tags: - Endpoints summary: Update endpoint x-source: https://hookdeploy.dev/docs/api/endpoints parameters: - name: id in: path required: true schema: type: string requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/PatchV1EndpointsIdRequest' responses: '200': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/PatchV1EndpointsIdResponse' x-evidence: kind: documentation /v1/endpoints/{id}/destinations: get: operationId: get_v1_endpoints_id_destinations tags: - Endpoints summary: Destinations API x-source: https://hookdeploy.dev/docs/api/overview parameters: - name: id in: path required: true schema: type: string responses: '200': description: Success (status as documented) x-evidence: kind: documentation /v1/health: get: operationId: get_v1_health tags: - Health summary: GET /v1/health x-source: https://hookdeploy.dev/docs/api/overview responses: '200': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: "curl -s \"https://api.hookdeploy.dev/v1/health\" -H \"Authorization: Bearer hd_live_YOUR_KEY\" \n { \n \"data\" : { \n \"status\"\ \ : \"ok\" , \n \"version\" : \"1\" \n } \n } \n Documented route directory \n Method Route Reference GET /v1/health Health check above\ \ GET, POST /v1/endpoints Endpoints API GET, PATCH, DELETE /v1/endpoints/:id Endpoints API GET /v1/endpoints/:id/requests Requests API\ \ GET /v1/endpoints/:id/re" /v1/incident-subscriptions: post: operationId: post_v1_incident_subscriptions tags: - Incident Subscriptions summary: Incident subscriptions x-source: https://hookdeploy.dev/docs/api/overview responses: '201': description: Success (status as documented) x-evidence: kind: documentation /v1/incident-subscriptions/{id}: delete: operationId: delete_v1_incident_subscriptions_id tags: - Incident Subscriptions summary: Incident subscriptions x-source: https://hookdeploy.dev/docs/api/overview parameters: - name: id in: path required: true schema: type: string responses: '200': description: Success (status as documented) x-evidence: kind: documentation /v1/incidents: get: operationId: get_v1_incidents tags: - Incidents summary: Incidents API x-source: https://hookdeploy.dev/docs/api/overview responses: '200': description: Success (status as documented) x-evidence: kind: documentation /v1/incidents/{id}: patch: operationId: patch_v1_incidents_id tags: - Incidents summary: Incidents API x-source: https://hookdeploy.dev/docs/api/overview parameters: - name: id in: path required: true schema: type: string responses: '200': description: Success (status as documented) x-evidence: kind: documentation /v1/incidents/{id}/replay: post: operationId: post_v1_incidents_id_replay tags: - Incidents summary: Incidents API x-source: https://hookdeploy.dev/docs/api/overview parameters: - name: id in: path required: true schema: type: string responses: '201': description: Success (status as documented) x-evidence: kind: documentation /v1/incidents/recent: get: operationId: get_v1_incidents_recent tags: - Incidents summary: Incident subscriptions x-source: https://hookdeploy.dev/docs/api/overview responses: '200': description: Success (status as documented) x-evidence: kind: documentation /v1/incidents/sample: get: operationId: get_v1_incidents_sample tags: - Incidents summary: Incidents API x-source: https://hookdeploy.dev/docs/api/overview responses: '200': description: Success (status as documented) x-evidence: kind: documentation /v1/members/deactivate: post: operationId: post_v1_members_deactivate tags: - Members summary: POST /v1/members/deactivate x-source: https://hookdeploy.dev/docs/api/members requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostV1MembersDeactivateRequest' responses: '201': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: "curl -X POST https://api.hookdeploy.dev/v1/members/deactivate -H \"Authorization: Bearer hd_live_xxxx\" -H \"Content-Type:\ \ application/json\" -d '{\"email\": \" [email protected] \"}' \n Access is revoked immediately. Their webhook history and audit log\ \ entries are preserved. The member can be reactivated at any time without a new invitation. \n Reactivating a returning employee \n\ \ When a team member retu" /v1/members/invite: post: operationId: post_v1_members_invite tags: - Members summary: POST /v1/members/invite x-source: https://hookdeploy.dev/docs/api/members requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostV1MembersInviteRequest' responses: '201': description: Success (shape read from the example response on the page) content: application/json: schema: $ref: '#/components/schemas/PostV1MembersInviteResponse' x-evidence: kind: code-example language: curl snippet: "curl -X POST https://api.hookdeploy.dev/v1/members/invite -H \"Authorization: Bearer hd_live_xxxx\" -H \"Content-Type: application/json\"\ \ -d '{ \n \"email\": \" [email protected] \", \n \"role\": \"developer\" \n }' \n Response: \n { \n \"data\" : { \n \"id\" : \"550e8400-e29b-41d4-a716-446655440000\"\ \ , \n \"email\" : \" [email protected] \" , \n \"role\" : \"developer\" , \n \"expires_at\" : \"2026-06-01T00:00:00Z\" , \n \"accept_url\"" /v1/members/reactivate: post: operationId: post_v1_members_reactivate tags: - Members summary: POST /v1/members/reactivate x-source: https://hookdeploy.dev/docs/api/members requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostV1MembersReactivateRequest' responses: '201': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: "curl -X POST https://api.hookdeploy.dev/v1/members/reactivate -H \"Authorization: Bearer hd_live_xxxx\" -H \"Content-Type:\ \ application/json\" -d '{\"email\": \" [email protected] \"}' \n They regain access immediately with their original role — no new\ \ invitation or email required. \n Error handling \n All errors follow this shape: \n { \n \"error\" : { \n \"code\" : \"error_code\"\ \ , \n \"message\" : \"Human-readable d" /v1/subscriptions: post: operationId: post_v1_subscriptions tags: - Subscriptions summary: Integration subscription routes x-source: https://hookdeploy.dev/docs/api/overview responses: '201': description: Success (status as documented) x-evidence: kind: documentation /v1/subscriptions/{id}: delete: operationId: delete_v1_subscriptions_id tags: - Subscriptions summary: Integration subscription routes x-source: https://hookdeploy.dev/docs/api/overview parameters: - name: id in: path required: true schema: type: string responses: '200': description: Success (status as documented) x-evidence: kind: documentation /v1/subscriptions/sample/{endpointid}: get: operationId: get_v1_subscriptions_sample_endpointid tags: - Subscriptions summary: Integration sample payload x-source: https://hookdeploy.dev/docs/api/overview parameters: - name: endpointid in: path required: true schema: type: string responses: '200': description: Success (status as documented) x-evidence: kind: documentation /v1/usage: get: operationId: get_v1_usage tags: - Usage summary: GET /v1/usage x-source: https://hookdeploy.dev/docs/api/usage responses: '200': description: Success (shape read from the example response on the page) content: application/json: schema: $ref: '#/components/schemas/GetV1UsageResponse' x-evidence: kind: code-example language: curl snippet: "curl -s \"https://api.hookdeploy.dev/v1/usage\" -H \"Authorization: Bearer hd_live_YOUR_KEY\" \n Response: \n { \n \"data\"\ \ : { \n \"data\" : { \n \"plan\" : \"starter\" , \n \"billing_interval\" : \"monthly\" , \n \"requests_this_month\" : 1250 , \n \"\ max_requests_per_month\" : 25000 , \n \"storage_bytes\" : 19251 , \n \"max_storage_bytes\" : 5368709120 , \n \"endpoint_count\" : 8\ \ , \n \"max_endpoints\" : 25 , \n \"member_count\" : 2 , \n" components: schemas: GetV1EndpointsResponse: type: object properties: data: type: array items: type: object properties: id: type: string organization_id: type: string created_by: type: - string - 'null' slug: type: string name: type: string description: type: string forward_url: type: string paused: type: boolean created_at: type: string format: date-time updated_at: type: string format: date-time PatchV1EndpointsRequest: type: object properties: paused: type: boolean GetV1EndpointsIdResponse: type: object properties: data: type: object description: Endpoint object PatchV1EndpointsIdRequest: type: object properties: name: type: string description: 1–100 characters description: type: string forward_url: type: string description: must start with https:// paused: type: boolean description: When true, rejects incoming webhooks with 423 PatchV1EndpointsIdResponse: type: object properties: data: type: object description: Updated endpoint object PostV1MembersDeactivateRequest: type: object properties: email: type: string PostV1MembersInviteRequest: type: object properties: email: type: string role: type: string PostV1MembersInviteResponse: type: object properties: data: type: object properties: id: type: string email: type: string role: type: string expires_at: type: string format: date-time accept_url: type: string PostV1MembersReactivateRequest: type: object properties: email: type: string GetV1UsageResponse: type: object properties: data: type: object properties: data: type: object properties: plan: type: string billing_interval: type: string requests_this_month: type: integer max_requests_per_month: type: integer storage_bytes: type: integer max_storage_bytes: type: integer endpoint_count: type: integer max_endpoints: type: integer member_count: type: integer max_users: type: integer destination_count: type: integer max_forward_destinations: type: integer custom_response: type: boolean response_delay: type: boolean securitySchemes: bearer: type: http scheme: bearer security: - bearer: [] tags: - name: Destinations - name: Endpoints - name: Health - name: Incident Subscriptions - name: Incidents - name: Members - name: Subscriptions - name: Usage