Stedi publishes NO AsyncAPI document of its own. This document was assembled by API Evangelist from Stedi's own published sources: the V1EventPayload schema in Stedi's OpenAPI for the Events API, the destination management operations in the Event Destinations API, and the documented event-type catalog and delivery/retry rules. Every event name, field, header and retry interval below is Stedi's; nothing is invented. Stedi delivers thin events over HTTPS POST to a customer-configured destination URL and follows the Standard Webhooks signing spec.
View SpecView on GitHubEDIElectronic Data InterchangeHealthcareClearinghouseX12ClaimsEligibilityHIPAARevenue Cycle ManagementB2B IntegrationAsyncAPIEventsWebhooks
Channels
webhookDelivery
A single HTTPS POST carrying one thin event envelope. Stedi treats ONLY 2xx as success; 3xx, 4xx, 5xx and network failures all trigger a retry.
Messages
✉
enrollmentActivated
Transaction enrollment activated
A transaction enrollment request reached LIVE status.
✉
enrollmentRejected
Transaction enrollment rejected
A payer rejected a transaction enrollment request.
✉
enrollmentUpdated
Transaction enrollment updated
An enrollment changed — status, payer, contacts or tasks.
✉
enrollmentTaskAssigned
Enrollment task assigned
A new provider-action task was created on an enrollment.
✉
enrollmentTaskCompleted
Enrollment task completed
The provider completed an assigned enrollment task.
✉
enrollmentTaskDeleted
Enrollment task deleted
An enrollment task was superseded or removed.
✉
eventPing
Ping
A validation test event used to confirm a destination is reachable.
Servers
https
events-api
Stedi's Event Destinations / Events API. Used to register a destination, read events, and retry deliveries. Not the transport for the events themselves.
https
customer-destination
The customer-owned HTTPS endpoint Stedi POSTs event payloads to. Registered with EventDestinationsCreateDestination; must match ^https://.+$.
asyncapi: 3.0.0
info:
title: Stedi Event Destinations (webhooks)
version: '2026-02-01'
description: >
Stedi publishes NO AsyncAPI document of its own. This document was assembled by API
Evangelist from Stedi's own published sources: the V1EventPayload schema in Stedi's
OpenAPI for the Events API, the destination management operations in the Event
Destinations API, and the documented event-type catalog and delivery/retry rules. Every
event name, field, header and retry interval below is Stedi's; nothing is invented. Stedi
delivers thin events over HTTPS POST to a customer-configured destination URL and follows
the Standard Webhooks signing spec.
contact:
name: Stedi Support
url: https://www.stedi.com/support
email: support@stedi.com
externalDocs:
url: https://www.stedi.com/docs/healthcare/event-destinations-event-types
x-provenance:
generated: '2026-08-15'
method: derived
provider_publishes_asyncapi: false
source:
- openapi/stedi-events-api-openapi.yml
- openapi/stedi-event-destinations-api-openapi.yml
- https://www.stedi.com/docs/healthcare/event-destinations-event-types
- https://www.stedi.com/docs/healthcare/event-destinations-message-handling
- https://www.stedi.com/docs/healthcare/event-destinations-configure
servers:
events-api:
host: events.us.stedi.com
protocol: https
pathname: /2026-02-01
description: >
Stedi's Event Destinations / Events API. Used to register a destination, read events, and
retry deliveries. Not the transport for the events themselves.
customer-destination:
host: '{destinationUrl}'
protocol: https
description: >
The customer-owned HTTPS endpoint Stedi POSTs event payloads to. Registered with
EventDestinationsCreateDestination; must match ^https://.+$.
variables:
destinationUrl:
description: The customer's own webhook receiver host and path.
default: example.com/stedi-webhooks
defaultContentType: application/json
channels:
webhookDelivery:
address: '{destinationUrl}'
title: Event destination delivery
description: >
A single HTTPS POST carrying one thin event envelope. Stedi treats ONLY 2xx as success;
3xx, 4xx, 5xx and network failures all trigger a retry.
servers:
- $ref: '#/servers/customer-destination'
messages:
enrollmentActivated:
$ref: '#/components/messages/enrollmentActivated'
enrollmentRejected:
$ref: '#/components/messages/enrollmentRejected'
enrollmentUpdated:
$ref: '#/components/messages/enrollmentUpdated'
enrollmentTaskAssigned:
$ref: '#/components/messages/enrollmentTaskAssigned'
enrollmentTaskCompleted:
$ref: '#/components/messages/enrollmentTaskCompleted'
enrollmentTaskDeleted:
$ref: '#/components/messages/enrollmentTaskDeleted'
eventPing:
$ref: '#/components/messages/eventPing'
operations:
receiveEvent:
action: receive
channel:
$ref: '#/channels/webhookDelivery'
title: Receive a Stedi event
summary: >
Stedi POSTs the event envelope to the destination URL. The consumer verifies the
webhook-signature header, deduplicates on webhook-id, and then fetches current resource
state from the REST API using resource.id — the payload is deliberately thin.
messages:
- $ref: '#/channels/webhookDelivery/messages/enrollmentActivated'
- $ref: '#/channels/webhookDelivery/messages/enrollmentRejected'
- $ref: '#/channels/webhookDelivery/messages/enrollmentUpdated'
- $ref: '#/channels/webhookDelivery/messages/enrollmentTaskAssigned'
- $ref: '#/channels/webhookDelivery/messages/enrollmentTaskCompleted'
- $ref: '#/channels/webhookDelivery/messages/enrollmentTaskDeleted'
- $ref: '#/channels/webhookDelivery/messages/eventPing'
components:
messages:
enrollmentActivated:
name: enrollment.activated
title: Transaction enrollment activated
summary: A transaction enrollment request reached LIVE status.
contentType: application/json
headers:
$ref: '#/components/schemas/DeliveryHeaders'
payload:
$ref: '#/components/schemas/V1EventPayload'
enrollmentRejected:
name: enrollment.rejected
title: Transaction enrollment rejected
summary: A payer rejected a transaction enrollment request.
contentType: application/json
headers:
$ref: '#/components/schemas/DeliveryHeaders'
payload:
$ref: '#/components/schemas/V1EventPayload'
enrollmentUpdated:
name: enrollment.updated
title: Transaction enrollment updated
summary: An enrollment changed — status, payer, contacts or tasks.
contentType: application/json
headers:
$ref: '#/components/schemas/DeliveryHeaders'
payload:
$ref: '#/components/schemas/V1EventPayload'
enrollmentTaskAssigned:
name: enrollment.task.assigned
title: Enrollment task assigned
summary: A new provider-action task was created on an enrollment.
contentType: application/json
headers:
$ref: '#/components/schemas/DeliveryHeaders'
payload:
$ref: '#/components/schemas/V1EventPayload'
enrollmentTaskCompleted:
name: enrollment.task.completed
title: Enrollment task completed
summary: The provider completed an assigned enrollment task.
contentType: application/json
headers:
$ref: '#/components/schemas/DeliveryHeaders'
payload:
$ref: '#/components/schemas/V1EventPayload'
enrollmentTaskDeleted:
name: enrollment.task.deleted
title: Enrollment task deleted
summary: An enrollment task was superseded or removed.
contentType: application/json
headers:
$ref: '#/components/schemas/DeliveryHeaders'
payload:
$ref: '#/components/schemas/V1EventPayload'
eventPing:
name: event.ping
title: Ping
summary: A validation test event used to confirm a destination is reachable.
contentType: application/json
headers:
$ref: '#/components/schemas/DeliveryHeaders'
payload:
$ref: '#/components/schemas/V1EventPayload'
schemas:
DeliveryHeaders:
type: object
description: Headers Stedi sends on every delivery attempt.
properties:
webhook-id:
type: string
description: Unique message identifier, formatted msg_{UUID}. Deduplicate on this.
pattern: ^msg_
webhook-signature:
type: string
description: >
Standard Webhooks signature, formatted v1,{signature}. HMAC-SHA256 over
"{webhook-timestamp}.{raw body}" keyed with the destination signing secret
(whsec_...). Compare in constant time.
webhook-timestamp:
type: string
description: Unix timestamp of event creation. Validate against a tolerance window.
event-id:
type: string
description: The event identifier, evt_{UUID}.
destination-id:
type: string
description: The event destination identifier, dst_{UUID}.
attempt-number:
type: integer
description: Delivery attempt count, starting at 1.
attempt-type:
type: string
enum: [AUTOMATIC, MANUAL]
description: Whether this attempt is an automatic retry or an operator-triggered one.
required: [webhook-id, webhook-signature, webhook-timestamp]
V1EventPayload:
type: object
description: >
Stedi's v1 THIN event envelope, copied from the V1EventPayload schema in
openapi/stedi-events-api-openapi.yml. It signals a state change only; consumers fetch
current state from the REST API using resource.id.
properties:
account:
type: string
description: Stedi account identifier (UUID).
created:
type: string
format: date-time
description: ISO 8601 timestamp of event creation.
environment:
type: string
enum: [TEST, PRODUCTION]
description: The environment in which the event was produced.
id:
type: string
description: Event identifier, formatted evt_{UUID}.
object:
type: string
enum: [v1.event]
description: Object-type discriminator identifying the payload schema version.
resource:
$ref: '#/components/schemas/EventPayloadResourceRef'
relatedResources:
type: array
description: Other related resources. Only present when there are related resources.
items:
$ref: '#/components/schemas/EventPayloadResourceRef'
type:
type: string
description: The event type name, such as enrollment.activated.
required: [account, created, environment, id, object, resource, type]
EventPayloadResourceRef:
type: object
description: A reference to a resource affected by an event.
properties:
id:
type: string
description: The resource identifier.
type:
type: string
description: >
The resource type, dot-notated for nesting — e.g. enrollment.document indicates a
document associated with a transaction enrollment request.
required: [id, type]
x-delivery:
transport: https-post
success_criteria: 2xx only
retry_intervals: [5m, 30m, 2h, 8h, 24h, 48h]
retry_exhaustion: Stedi disables the event destination after 48 hours of failed attempts.
failure_notifications: Notifications are sent after 2 hours and after 24 hours of repeated failures.
deduplication: Track the webhook-id (msg_{UUID}); manual and automatic retries can redeliver.
ordering: Not guaranteed. Stedi's guidance is to re-read resource state rather than assume order.
signing:
spec: https://www.standardwebhooks.com/
algorithm: HMAC-SHA256
signed_content: '{webhook-timestamp}.{raw request body}'
secret_format: ^whsec_[A-Za-z0-9+/=]+$
secret_operations: [EventDestinationsGetDestinationSecret, EventDestinationsRotateDestinationSecret]
concurrency:
default_per_destination: 5
account_maximum: 20
note: Exceeding the account maximum on create/update returns 400. Contact Stedi to change limits.
retention: 30 days by default
x-management-api:
spec: openapi/stedi-event-destinations-api-openapi.yml
operations:
- EventDestinationsCreateDestination
- EventDestinationsListDestinations
- EventDestinationsGetDestination
- EventDestinationsUpdateDestination
- EventDestinationsDeleteDestination
- EventDestinationsGetDestinationSecret
- EventDestinationsRotateDestinationSecret
events_spec: openapi/stedi-events-api-openapi.yml
events_operations: [ListEvents, GetEvent, RetryEvent]
x-coverage-note: >
The published event catalog covers transaction ENROLLMENT only, plus a ping. Claims,
eligibility, remittance and claim-status results are NOT delivered as events on this surface;
integrators poll the REST APIs (or the EDI-platform transaction.processed.v2 EventBridge
events on the core platform) for those. That is the gap an agent needs to know about.
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.