generated: '2026-08-14'
method: searched
source: https://developers.hint.com/reference/webhooks
docs:
- https://developers.hint.com/reference/webhooks
- https://developers.hint.com/reference/webhookeventlistwebhookevents
- https://developers.hint.com/reference/webhookendpointcreatewebhookendpoint-1
name: Hint Health Webhook Catalog
description: >-
Hint's event surface is webhooks — signed HTTP POSTs to a partner-registered
URL, with a documented payload envelope, a published event registry, an
HMAC-SHA256 signature header, and a stated retry/muting policy. Hint publishes
NO AsyncAPI document; this catalog is the machine-readable record of what the
docs describe.
asyncapi_published: false
asyncapi_note: >-
Probed and searched — Hint ships no AsyncAPI, EventBridge schema, or
CloudEvents mapping. The webhook contract exists only as human documentation
plus a live registry endpoint (GET /partner/webhook_events).
transport:
protocol: https
method: POST
direction: hint-to-partner
content_type: application/json
ack: Respond 2XX to acknowledge. Any non-2XX triggers retry.
endpoint_types:
- name: Global webhook endpoint
scope: All integrations
use_case: A single endpoint receives events for every connected practice.
reference: https://developers.hint.com/reference/globalwebhookendpoint
api: /partner/webhook_endpoints
- name: Integration webhook endpoint
scope: Single integration
use_case: A separate endpoint per practice.
reference: https://developers.hint.com/reference/webhookendpoint
api: /partner/installations/{installation_id}/webhook_endpoints
subscription_model:
per_endpoint_filter: false
detail: >-
There is no per-endpoint event filter in the API. A registered endpoint
receives the FULL set of events emitted for the partner's connected
practices. Event selection is done in the Partner Portal UI, not through the
API. Implementations must ignore unknown event types — Hint adds new
resource.action pairs without a version bump.
portal:
sandbox: https://app.staging.hint.com/partner/account/webhooks
production: https://app.hint.com/partner/account/webhooks
signature:
header: X-Hint-Signature
format: 'sha256=<hmac>'
algorithm: HMAC-SHA256
signed_payload: the raw request body
key: >-
The partner's webhook signature key, found in the Partner Portal under
API Keys / Webhook Settings → Webhooks Signature Key. Mirrored to the
HINT_WEBHOOK_SECRET environment variable on Hosted Mode marketplace deploys.
verification: >-
Endpoints should compute the expected signature themselves and reject
requests whose signature does not match.
payload_envelope:
fields:
- {name: id, type: string, description: 'Event id, prefixed evt-'}
- {name: type, type: string, description: 'resource.action pair, e.g. patient.created'}
- {name: practice_id, type: string, description: 'Practice id, prefixed pra- / prc-'}
- {name: created_at, type: string, format: date-time}
- {name: object, type: object, description: 'Full resource snapshot, matching GET /api/provider/<resource>/{id}'}
expansion: >-
Webhook payloads always carry the UNEXPANDED resource — the ?expand=
parameter has no effect on delivery.
example: |
{
"id": "evt-jKi2jlalOJk3",
"created_at": "2015-02-19T10:49:21.419-08:00",
"type": "patient.created",
"practice_id": "pra-6BIBTelN3rM5",
"object": {
"id": "pat-eN9DgCQ9iQxL",
"first_name": "Jane",
"last_name": "Doe"
}
}
discovery:
live_registry: GET /partner/webhook_events
description: >-
Returns the canonical live list of resource.action strings, derived from the
platform's IntegrationEvent registry. This is the authoritative source; the
table below is the published snapshot.
events:
- resource: patient
types: [patient.created, patient.updated, patient.destroyed, patient.inactive]
- resource: membership
types: [membership.created, membership.updated, membership.destroyed]
- resource: practitioner
types: [practitioner.created, practitioner.updated, practitioner.destroyed]
- resource: company
types: [company.created, company.updated, company.destroyed]
- resource: employee_division
types: [employee_division.created, employee_division.updated, employee_division.destroyed]
- resource: customer_invoice
types:
- customer_invoice.created
- customer_invoice.updated
- customer_invoice.destroyed
- customer_invoice.draft
- customer_invoice.issued
- customer_invoice.paid
- customer_invoice.cancelled
- resource: invoice
types:
- invoice.created
- invoice.updated
- invoice.destroyed
- invoice.draft
- invoice.issued
- invoice.paid
- invoice.cancelled
- resource: signup_attempt
types: [signup_attempt.created, signup_attempt.updated]
- resource: integration
types: [integration.activated, integration.deactivated]
event_count: 32
resource_count: 9
delivery:
retry_schedule: Every hour for 72 hours
muting: After 100 consecutive failures the endpoint is muted for 1 hour
recovery: The next successful delivery re-enables the endpoint
alerting: Daily failure email to the technical contact on file
inspection: GET /partner/webhook_requests
activation_gating: >-
Only ACTIVE connections receive webhooks. A pending install (activation mode
practice_activate or partner_activate) completes the connect exchange but does
not receive events until activated.
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/hint-health-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no email required.
A second provider on the same verified email joins the account you already have.