Docs
API reference Endpoints Webhooks

Webhooks

6 endpoints Base URL · https://api.radarsend.com Auth · X-API-Key

List webhook event types

GET /t/{slug}/api/webhooks/event-types

Every event type a URL can be subscribed to. The list is fixed; it is not per account.

dataobject[]
descriptionstring
namestring
typeenum
One of: contact.created, contact.updated, contact.unsubscribed, form.submitted, segment.entered, segment.exited, sequence.completed, email.clicked, email.opened, webinar.registered, webinar.attended, webinar.missed, purchase.completed, purchase.refunded, subscription.renewed, subscription.payment_failed, subscription.cancel_pending, subscription.reactivated, subscription.canceled, subscription.trial_ending
has_moreboolean
next_cursorstring · nullable

Opaque. Pass back as cursor for the next page. Null when there is no continuation — which for most endpoints means the last page, and always means a collection that is not paginated. The account-wide event feed is the exception: it returns a resumable cursor even on its final page (see that endpoint).

200

The event catalog. Not paginated.

400

The request failed validation, or a referenced record was rejected.

404

The tenant slug, or the record the path names, does not exist.

Request
curl -X GET "https://api.radarsend.com/t/acme/api/webhooks/event-types" \
  -H "X-API-Key: $RADARSEND_API_KEY"
Response 200
{
  "data": [
    {
      "type": "contact.created",
      "name": "Acme onboarding",
      "description": "string"
    }
  ],
  "next_cursor": "eyJpZCI6IjljMjE4OTVkIn0",
  "has_more": true
}

Get a sample delivery for an event type

GET /t/{slug}/api/webhooks/event-types/{type}/sample

One example of the body a subscription to this event type receives, with invented values. Use it to map fields before a real event has arrived (Zapier calls this the "perform list").

type string Required

One type from the catalog.

dataobject[]
has_moreboolean
next_cursorstring · nullable

Opaque. Pass back as cursor for the next page. Null when there is no continuation — which for most endpoints means the last page, and always means a collection that is not paginated. The account-wide event feed is the exception: it returns a resumable cursor even on its final page (see that endpoint).

200

A one-item list holding the sample delivery.

400

The request failed validation, or a referenced record was rejected.

404

The tenant slug, or the record the path names, does not exist.

Request
curl -X GET "https://api.radarsend.com/t/acme/api/webhooks/event-types/{type}/sample" \
  -H "X-API-Key: $RADARSEND_API_KEY"
Response 200
{
  "data": [
    {}
  ],
  "next_cursor": "eyJpZCI6IjljMjE4OTVkIn0",
  "has_more": true
}

List webhook subscriptions

GET /t/{slug}/api/webhooks/subscriptions

Every subscription in the account, newest first, including ones switched off in the last 30 days.

event_type string

Only this event type.

dataobject[]
activeboolean

False once the subscription has been switched off; see disabled_reason.

created_atdate-time
created_by_api_key_iduuid · nullable
created_by_service_account_iduuid · nullable
created_by_user_iduuid · nullable
disabled_atdate-time · nullable
disabled_reasonenum · nullable

target_gone: your endpoint answered 410. delivery_failing: deliveries failed for a day. credential_revoked: the API key that created it no longer works (revoked, expired, or its connection disconnected) and its service account has no working key left.

One of: target_gone, delivery_failing, credential_revoked, null
event_typeenum
One of: contact.created, contact.updated, contact.unsubscribed, form.submitted, segment.entered, segment.exited, sequence.completed, email.clicked, email.opened, webinar.registered, webinar.attended, webinar.missed, purchase.completed, purchase.refunded, subscription.renewed, subscription.payment_failed, subscription.cancel_pending, subscription.reactivated, subscription.canceled, subscription.trial_ending
filterobject

What the subscription is narrowed to. Empty when it receives every event of its type.

filter_target_missingboolean

True when the form, list or sequence the filter names has been deleted. The subscription can never fire again; remove it.

has_hmac_secretboolean

Whether deliveries are signed. The secret itself is never returned.

iduuid

Keep this: it is what you pass to unsubscribe.

target_url_displaystring

Scheme and host of the subscribed URL. The path is never returned: it is usually a secret.

updated_atdate-time
has_moreboolean
next_cursorstring · nullable

Opaque. Pass back as cursor for the next page. Null when there is no continuation — which for most endpoints means the last page, and always means a collection that is not paginated. The account-wide event feed is the exception: it returns a resumable cursor even on its final page (see that endpoint).

200

Subscriptions. Not paginated (an account has at most 100).

400

The request failed validation, or a referenced record was rejected.

404

The tenant slug, or the record the path names, does not exist.

Request
curl -X GET "https://api.radarsend.com/t/acme/api/webhooks/subscriptions" \
  -H "X-API-Key: $RADARSEND_API_KEY"
Response 200
{
  "data": [
    {
      "id": "9c21895d-57f0-4a15-a1df-4dc6835d4f80",
      "event_type": "contact.created",
      "target_url_display": "string",
      "filter": {},
      "filter_target_missing": true,
      "has_hmac_secret": true
    }
  ],
  "next_cursor": "eyJpZCI6IjljMjE4OTVkIn0",
  "has_more": true
}

Subscribe a URL to an event type

POST /t/{slug}/api/webhooks/subscriptions

Every event of this type in the account is POSTed to target_url from now on. Subscribing the same URL to the same event type again returns the existing subscription (200) and switches it back on if it had been switched off.

event_typeenumRequired
One of: contact.created, contact.updated, contact.unsubscribed, form.submitted, segment.entered, segment.exited, sequence.completed, email.clicked, email.opened, webinar.registered, webinar.attended, webinar.missed, purchase.completed, purchase.refunded, subscription.renewed, subscription.payment_failed, subscription.cancel_pending, subscription.reactivated, subscription.canceled, subscription.trial_ending
target_urlstringRequired

An http(s) URL that answers a JSON POST with a 2xx.

filterobject · nullable

Optional. Narrows the subscription to one thing: form_id for form.submitted, segment_key (a list or segment key) for segment.entered and segment.exited, sequence_id for sequence.completed. Other event types take no filter.

form_idstring
segment_keystring
sequence_idstring
hmac_secretstring · nullable

Optional. When set, each delivery is signed with it. Write-only.

activeboolean

False once the subscription has been switched off; see disabled_reason.

created_atdate-time
created_by_api_key_iduuid · nullable
created_by_service_account_iduuid · nullable
created_by_user_iduuid · nullable
disabled_atdate-time · nullable
disabled_reasonenum · nullable

target_gone: your endpoint answered 410. delivery_failing: deliveries failed for a day. credential_revoked: the API key that created it no longer works (revoked, expired, or its connection disconnected) and its service account has no working key left.

One of: target_gone, delivery_failing, credential_revoked, null
event_typeenum
One of: contact.created, contact.updated, contact.unsubscribed, form.submitted, segment.entered, segment.exited, sequence.completed, email.clicked, email.opened, webinar.registered, webinar.attended, webinar.missed, purchase.completed, purchase.refunded, subscription.renewed, subscription.payment_failed, subscription.cancel_pending, subscription.reactivated, subscription.canceled, subscription.trial_ending
filterobject

What the subscription is narrowed to. Empty when it receives every event of its type.

form_iduuid
segment_iduuid
segment_keystring
sequence_iduuid
filter_target_missingboolean

True when the form, list or sequence the filter names has been deleted. The subscription can never fire again; remove it.

has_hmac_secretboolean

Whether deliveries are signed. The secret itself is never returned.

iduuid

Keep this: it is what you pass to unsubscribe.

target_url_displaystring

Scheme and host of the subscribed URL. The path is never returned: it is usually a secret.

updated_atdate-time
200

Default Response

201

Default Response

400

The request failed validation, or a referenced record was rejected.

404

The tenant slug, or the record the path names, does not exist.

Request
curl -X POST "https://api.radarsend.com/t/acme/api/webhooks/subscriptions" \
  -H "X-API-Key: $RADARSEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "event_type": "contact.created",
    "target_url": "https://example.com",
    "filter": {
      "form_id": "9c21895d-57f0-4a15-a1df-4dc6835d4f80",
      "segment_key": "welcome-series",
      "sequence_id": "9c21895d-57f0-4a15-a1df-4dc6835d4f80"
    },
    "hmac_secret": "string"
  }'
Response 200
{
  "id": "9c21895d-57f0-4a15-a1df-4dc6835d4f80",
  "event_type": "contact.created",
  "target_url_display": "string",
  "filter": {
    "form_id": "9c21895d-57f0-4a15-a1df-4dc6835d4f80",
    "segment_id": "9c21895d-57f0-4a15-a1df-4dc6835d4f80",
    "segment_key": "welcome-series",
    "sequence_id": "9c21895d-57f0-4a15-a1df-4dc6835d4f80"
  },
  "filter_target_missing": true,
  "has_hmac_secret": true
}

Get a webhook subscription

GET /t/{slug}/api/webhooks/subscriptions/{id}
id string Required
activeboolean

False once the subscription has been switched off; see disabled_reason.

created_atdate-time
created_by_api_key_iduuid · nullable
created_by_service_account_iduuid · nullable
created_by_user_iduuid · nullable
disabled_atdate-time · nullable
disabled_reasonenum · nullable

target_gone: your endpoint answered 410. delivery_failing: deliveries failed for a day. credential_revoked: the API key that created it no longer works (revoked, expired, or its connection disconnected) and its service account has no working key left.

One of: target_gone, delivery_failing, credential_revoked, null
event_typeenum
One of: contact.created, contact.updated, contact.unsubscribed, form.submitted, segment.entered, segment.exited, sequence.completed, email.clicked, email.opened, webinar.registered, webinar.attended, webinar.missed, purchase.completed, purchase.refunded, subscription.renewed, subscription.payment_failed, subscription.cancel_pending, subscription.reactivated, subscription.canceled, subscription.trial_ending
filterobject

What the subscription is narrowed to. Empty when it receives every event of its type.

form_iduuid
segment_iduuid
segment_keystring
sequence_iduuid
filter_target_missingboolean

True when the form, list or sequence the filter names has been deleted. The subscription can never fire again; remove it.

has_hmac_secretboolean

Whether deliveries are signed. The secret itself is never returned.

iduuid

Keep this: it is what you pass to unsubscribe.

target_url_displaystring

Scheme and host of the subscribed URL. The path is never returned: it is usually a secret.

updated_atdate-time
200

Default Response

400

The request failed validation, or a referenced record was rejected.

404

The tenant slug, or the record the path names, does not exist.

Request
curl -X GET "https://api.radarsend.com/t/acme/api/webhooks/subscriptions/9c21895d-57f0-4a15-a1df-4dc6835d4f80" \
  -H "X-API-Key: $RADARSEND_API_KEY"
Response 200
{
  "id": "9c21895d-57f0-4a15-a1df-4dc6835d4f80",
  "event_type": "contact.created",
  "target_url_display": "string",
  "filter": {
    "form_id": "9c21895d-57f0-4a15-a1df-4dc6835d4f80",
    "segment_id": "9c21895d-57f0-4a15-a1df-4dc6835d4f80",
    "segment_key": "welcome-series",
    "sequence_id": "9c21895d-57f0-4a15-a1df-4dc6835d4f80"
  },
  "filter_target_missing": true,
  "has_hmac_secret": true
}

Unsubscribe

DELETE /t/{slug}/api/webhooks/subscriptions/{id}

Removes the subscription. Deliveries already queued for it are dropped, not sent.

id string Required
200

Default Response

400

The request failed validation, or a referenced record was rejected.

404

The tenant slug, or the record the path names, does not exist.

Request
curl -X DELETE "https://api.radarsend.com/t/acme/api/webhooks/subscriptions/9c21895d-57f0-4a15-a1df-4dc6835d4f80" \
  -H "X-API-Key: $RADARSEND_API_KEY"