Skip to content

Read event attempts

GET/v1/webhook-events/{eventId}

Request example

curl -X GET 'https://api.affinityrx.com/v1/webhook-events/{eventId}' \
  -H "Authorization: Bearer $AFFINITY_API_KEY" \
  -H 'Affinity-Version: 2026-09-28'

Response example

These examples show the body structure. Values can differ. Select a status code to see its response.

{
  "apiVersion": "<string>",
  "createdAt": "<string>",
  "eventType": "<string>",
  "id": "evt_01j2y8m6jcc9tt24af5pw9x1bc",
  "livemode": false,
  "object": "webhook_event",
  "resourceId": "<string>",
  "resourceType": "<string>",
  "status": "delivered",
  "attempts": [
    {
      "deliveryId": "<string>",
      "endpointId": "<string>",
      "attemptNumber": "<string>",
      "completedAt": "<string>",
      "durationMs": 0,
      "errorCode": "<string>",
      "errorMessage": "<string>",
      "id": "wha_01j2y8m6jcc9tt24af5pw9x1bc",
      "requestedAt": "<string>",
      "responseStatus": 0,
      "trigger": "automatic"
    }
  ],
  "deliveries": [
    {
      "automaticAttemptCount": 0,
      "endpointId": "whe_01j2y8m6jcc9tt24af5pw9x1bc",
      "id": "whd_01j2y8m6jcc9tt24af5pw9x1bc",
      "lastErrorCode": "<string>",
      "lastErrorMessage": "<string>",
      "nextAttemptAt": "<string>",
      "status": "delivered"
    }
  ],
  "payload": "<string>"
}
{
  "code": "<string>",
  "data": "<string>",
  "detail": "<string>",
  "instance": "<string>",
  "requestId": "<string>",
  "status": 400,
  "title": "<string>",
  "traceId": "<string>",
  "type": "<string>"
}
{
  "code": "<string>",
  "data": "<string>",
  "detail": "<string>",
  "instance": "<string>",
  "requestId": "<string>",
  "status": 401,
  "title": "<string>",
  "traceId": "<string>",
  "type": "<string>"
}
{
  "code": "<string>",
  "data": "<string>",
  "detail": "<string>",
  "instance": "<string>",
  "requestId": "<string>",
  "status": 403,
  "title": "<string>",
  "traceId": "<string>",
  "type": "<string>"
}
{
  "code": "<string>",
  "data": "<string>",
  "detail": "<string>",
  "instance": "<string>",
  "requestId": "<string>",
  "status": 404,
  "title": "<string>",
  "traceId": "<string>",
  "type": "<string>"
}
{
  "code": "<string>",
  "data": "<string>",
  "detail": "<string>",
  "instance": "<string>",
  "requestId": "<string>",
  "status": 409,
  "title": "<string>",
  "traceId": "<string>",
  "type": "<string>"
}
{
  "code": "<string>",
  "data": "<string>",
  "detail": "<string>",
  "instance": "<string>",
  "requestId": "<string>",
  "status": 422,
  "title": "<string>",
  "traceId": "<string>",
  "type": "<string>"
}
{
  "code": "<string>",
  "data": "<string>",
  "detail": "<string>",
  "instance": "<string>",
  "requestId": "<string>",
  "status": 429,
  "title": "<string>",
  "traceId": "<string>",
  "type": "<string>"
}

Implementation specification

Use these field types and limits to build your integration. Download the OpenAPI document for the complete contract.

Path parameters

eventIdstringrequired

Pattern: ^evt_[0-7][0-9a-hjkmnp-tv-z]{25}$

Headers

Affinity-Versionstring

Selects the HTTP API contract for this request only. When omitted, API-key requests use their service account’s stored version. Does not change the stored default.

Pin requests to 2026-09-28.

X-Affinity-Organization-Idstring

Defaults to the API key organization. A platform may select a practice or pharmacy only with an explicit webhook grant in this mode. This changes the webhook owner, not the caller or event subscriptions.

Response specifications

200Successful response

application/json

apiVersionstringrequired
createdAtstringrequired
eventTypestringrequired
idstringrequired

Pattern: ^evt_[0-7][0-9a-hjkmnp-tv-z]{25}$

livemodebooleanrequired
objectstringrequired

Allowed: "webhook_event"

resourceIdstringrequired
resourceTypestringrequired
statusstringrequired

Allowed: "delivered", "failed", "pending"

attemptsobject[]required
Show attempts fields

Array items · object

deliveryIdstringrequired
endpointIdstringrequired
attemptNumberanyrequired
Show attemptNumber fields
All of · 1: any

any

Greater than: 0

completedAtstring | nullrequired
Show completedAt fields
Any of · 1: string

string

Any of · 2: null

null

durationMsnumber | string | nullrequired
Show durationMs fields
Any of · 1: number | string
Any of · 1: number

number

Any of · 2: string

string

Allowed: "Infinity", "-Infinity", "NaN"

Any of · 2: null

null

errorCodestring | nullrequired
Show errorCode fields
Any of · 1: string

string

Any of · 2: null

null

errorMessagestring | nullrequired
Show errorMessage fields
Any of · 1: string

string

Any of · 2: null

null

idanyrequired
Show id fields
All of · 1: any

any

Pattern: ^wha_[0-7][0-9a-hjkmnp-tv-z]{25}$

requestedAtstringrequired
responseStatusnumber | string | nullrequired
Show responseStatus fields
Any of · 1: number | string
Any of · 1: number

number

Any of · 2: string

string

Allowed: "Infinity", "-Infinity", "NaN"

Any of · 2: null

null

triggerstringrequired

Allowed: "automatic", "manual", "test"

deliveriesobject[]required
Show deliveries fields

Array items · object

automaticAttemptCountnumber | stringrequired
Show automaticAttemptCount fields
Any of · 1: number

number

Any of · 2: string

string

Allowed: "Infinity", "-Infinity", "NaN"

endpointIdanyrequired
Show endpointId fields
All of · 1: any

any

Pattern: ^whe_[0-7][0-9a-hjkmnp-tv-z]{25}$

idanyrequired
Show id fields
All of · 1: any

any

Pattern: ^whd_[0-7][0-9a-hjkmnp-tv-z]{25}$

lastErrorCodestring | nullrequired
Show lastErrorCode fields
Any of · 1: string

string

Any of · 2: null

null

lastErrorMessagestring | nullrequired
Show lastErrorMessage fields
Any of · 1: string

string

Any of · 2: null

null

nextAttemptAtstring | nullrequired
Show nextAttemptAt fields
Any of · 1: string

string

Any of · 2: null

null

statusstringrequired

Allowed: "delivered", "failed", "pending", "retrying"

payloadobjectrequired
400HTTP 400

application/json

codestringrequired
dataobject
detailstringrequired
instancestringrequired
requestIdstringrequired
statusintegerrequired

Minimum: 400

Maximum: 599

titlestringrequired
traceIdstring
typestringrequired

Format: uri

401Unauthorized

application/json

codestringrequired
dataobject
detailstringrequired
instancestringrequired
requestIdstringrequired
statusintegerrequired

Minimum: 400

Maximum: 599

titlestringrequired
traceIdstring
typestringrequired

Format: uri

403Forbidden

application/json

codestringrequired
dataobject
detailstringrequired
instancestringrequired
requestIdstringrequired
statusintegerrequired

Minimum: 400

Maximum: 599

titlestringrequired
traceIdstring
typestringrequired

Format: uri

404Not found

application/json

codestringrequired
dataobject
detailstringrequired
instancestringrequired
requestIdstringrequired
statusintegerrequired

Minimum: 400

Maximum: 599

titlestringrequired
traceIdstring
typestringrequired

Format: uri

409Conflict

application/json

codestringrequired
dataobject
detailstringrequired
instancestringrequired
requestIdstringrequired
statusintegerrequired

Minimum: 400

Maximum: 599

titlestringrequired
traceIdstring
typestringrequired

Format: uri

422Validation error

application/json

codestringrequired
dataobject
detailstringrequired
instancestringrequired
requestIdstringrequired
statusintegerrequired

Minimum: 400

Maximum: 599

titlestringrequired
traceIdstring
typestringrequired

Format: uri

429Too many requests

application/json

codestringrequired
dataobject
detailstringrequired
instancestringrequired
requestIdstringrequired
statusintegerrequired

Minimum: 400

Maximum: 599

titlestringrequired
traceIdstring
typestringrequired

Format: uri

Type to search…

↑↓ navigate↵ selectEsc close