Particle Health · AsyncAPI Specification

Particle Health Webhooks

Version

View Spec View on GitHub ADTC-CDACare CoordinationCarequalityClinical DataCommonWellDeltaseHealth ExchangeEHRFHIRHealth DataHealth Information ExchangeHealthcareHIEHL7HL7v2InteroperabilityMedical RecordsPatientsPharmacyQHINSurescriptsTEFCAUSCDIAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-14'
method: searched
source:
  - https://docs.particlehealth.com/docs/webhook-event-notifications
  - https://raw.githubusercontent.com/ParticleHealth/particle-connect/main/agent-documentation/12-notification-data-contract.md
description: >-
  Particle Health does not publish a machine-readable AsyncAPI document (no asyncapi.yaml found on
  docs/API hosts or the ParticleHealth GitHub org). It does document a full webhook/notification
  catalog, and that catalog conforms to CloudEvents 1.0 — captured here as a structured Webhooks
  catalog rather than a fabricated AsyncAPI spec.
envelope:
  spec: CloudEvents 1.0
  transport: HTTP POST to a customer-configured callback URL
  content_type: application/cloudevents+json
  fields:
    specversion: "1.0 (constant)"
    id: UUID, unique per notification
    source: "api/notifications (constant)"
    type: notification type identifier, see events[] below
    subject: human-readable event description, varies by type
    time: ISO 8601 timestamp
    datacontenttype: application/json (constant)
    data: notification-specific payload object
  headers:
    Content-Type: application/cloudevents+json
    Accept: "*/*"
    X-Ph-Signature-256: "t={unix_timestamp},{hmac_sha256_signature} — HMAC over `{timestamp}.{raw_json_body}`"
  signature_verification:
    algorithm: HMAC-SHA256
    steps:
      - Extract timestamp and signature from X-Ph-Signature-256
      - "Construct the signed payload: {timestamp}.{raw_json_body}"
      - Generate HMAC SHA-256 using the customer's signature key
      - Compare generated signature to the received signature
  contract_version: '1.0 (2026-02-05, per provider doc)'
identifier_fields:
  particle_patient_id: Particle's internal patient identifier (UUID)
  external_patient_id: Customer's own patient identifier, as sent at registration
  person_id: Legacy identifier, query notifications only
  patient_id: May match person_id or particle_patient_id depending on context
events:
  - type: com.particlehealth.api.v2.transitionalerts
    name: Transition Alert
    subjects: [Admit Alert, Discharge Alert, Discharge Summary Available, Transfer Alert, Death Alert]
    fires_when: Patient care transition detected (admission/discharge/transfer/death)
    data_fields: [network_organization, particle_patient_id, external_patient_id, event_type,
      event_sequence, is_final_event, resources]
    gotchas: >-
      Payload does NOT include facility type (SNF/Hospital/ED) — must be looked up separately via the
      transition ID in resources[].resource_ids. file_id may be empty (esp. for admissions);
      non-empty only when a discharge summary is available.
  - type: com.particlehealth.api.v2.hl7v2
    name: HL7 ADT Alert
    subject: "HL7v2 {code} Message for {id}"
    fires_when: Raw HL7v2 ADT message received
  - type: com.particlehealth.api.v2.query
    name: Query Complete
    subject: "{format} Query Complete"
    fires_when: Patient data query finishes (alternative to polling getPatientQueryStatus)
  - type: com.particlehealth.api.v2.encounteralerts
    name: New Encounter Alert
    subject: New Encounter
    fires_when: New encounter data available
  - type: com.particlehealth.api.v2.aioutputs
    name: AI Outputs Complete
    subject: "AI Outputs completed ({n} completed, {m} failed)"
    fires_when: AI-generated outputs (Particle Snapshot) ready
  - type: com.particlehealth.api.v2.consent
    name: Patient Consent Updated
    subject: Patient Consent Updated
    fires_when: Patient consent status changes
  - type: com.particlehealth.api.v2.medicationfills
    name: Medication Fills Data Available
    subject: Medication Fills Data Available
    fires_when: New medication fill data ready (Surescripts)
sandbox_testing:
  trigger_endpoint: /api/v1/patients/{particle_patient_id}/subscriptions/trigger-sandbox-workflow
    (operationId triggerSandboxWorkflow, particle-health-subscriptions-api-openapi.yml)
  note: Synthetically fires a webhook notification for testing a receiver end-to-end without waiting
    on a real network event.
maintainers:
  - FN: Kin Lane
    email: kin@apievangelist.com

Work with this as data

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/particle-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.