API reference
Webhooks
The Coresender API follows the basic REST style. All methods provided by the API are accessible from the same base endpoint. We require SSL encryption when using our API so no unencrypted endpoint is available.
https://api.coresender.com
The Coresender API follows the basic REST style. All methods provided by the API are accessible from the same base endpoint. We require SSL encryption when using our API so no unencrypted endpoint is available.
https://api.coresender.com
Coresender's public API provides methods with three different authentication levels:
The authentication method is always shown in the request example.
Coresender's public API provides methods with three different authentication levels:
The authentication method is always shown in the request example.
We use a set of HTTP response codes to let you know about the status of your API requests or the nature of an error. Below you'll find the list of codes as well as their general usage.
200 OK
– Used for letting you know that your request succeeded. For GET
requests it means that the response contains no errors and the data is being delivered. For PUT
and DELETE
requests it means that the operation succeeded.201 Created
– Used by POST
requests to let you know that the object was successfully created.207 Multi-Status
– Used by Send email to indicate that at least one of your emails was rejected.400 Bad Request
– Used when the JSON body of your request is invalid. See INVALID_JSON
error code.401 Unauthorized
– Used when API is called with proper authorization, eg. invalid login and password, invalid access token, invalid API key.403 Forbidden
– Used when the requested resource is not available because of permissions.404 Not Found
– We have reserved this code for one purpose only: letting you know that the API endpoint that you send a request to does not exist. If you see 404
, look for a typo. When an unexistent resource (eg. User, Domain) is requested, 409
will be returned.409 Conflict
– Used when a request fails because of business logic, including when some resources involved are not found.422 Unprocessable Entity
– Used for validation errors.429 Too Many Requests
– Used when the API requests-per-minute limit is reached. It's our way of telling you to slow down.500
– There is an internal issue with processing your request. If you sent an email, assume that it's lost and retry.We use a set of HTTP response codes to let you know about the status of your API requests or the nature of an error. Below you'll find the list of codes as well as their general usage.
200 OK
– Used for letting you know that your request succeeded. For GET
requests it means that the response contains no errors and the data is being delivered. For PUT
and DELETE
requests it means that the operation succeeded.201 Created
– Used by POST
requests to let you know that the object was successfully created.207 Multi-Status
– Used by Send email to indicate that at least one of your emails was rejected.400 Bad Request
– Used when the JSON body of your request is invalid. See INVALID_JSON
error code.401 Unauthorized
– Used when API is called with proper authorization, eg. invalid login and password, invalid access token, invalid API key.403 Forbidden
– Used when the requested resource is not available because of permissions.404 Not Found
– We have reserved this code for one purpose only: letting you know that the API endpoint that you send a request to does not exist. If you see 404
, look for a typo. When an unexistent resource (eg. User, Domain) is requested, 409
will be returned.409 Conflict
– Used when a request fails because of business logic, including when some resources involved are not found.422 Unprocessable Entity
– Used for validation errors.429 Too Many Requests
– Used when the API requests-per-minute limit is reached. It's our way of telling you to slow down.500
– There is an internal issue with processing your request. If you sent an email, assume that it's lost and retry.Email sending API uses an HTTP basic authentication, with account_id
as username and api_key
as password. You can add multiple API keys to your sending accounts.
Your sending account's account_id
and api_key
are required to authenticate. You will find them in your control panel.
Sender's email address.
Sender's name.
Recipient's email address. Only one recipient is supported. Array is here for future expansion.
Recipient's name.
Email subject.
HTML email body. Required if body.text
not present.
Text email body. Required if body.html
not present.
Custom ID for the message. This ID will be returned in API response, will be included in webhooks and you will be able to search by it with the Messages API. Additionally it will be added to your email as X-Message-Custom-Id
header.
When enabled, custom_id
will be required be unique within a period of the last 72 hours. This is handy for senders who want to repeat a certain batch of emails with a guarantee that no email will be sent more than once.
Enables tracking email opens whenever possible. Tracking pixel will be added to the HTML part of the message.
Enables tracking links clicks. URLs within the email will be replaced with tracking URLs and the recipient will be redirected to the original URL on every click.
An email distribution list identifier used by the email client built-in unsubscribe feature.
Either an email or URL which will receive an unsubscription request if the recipient decides to use email client's built-in unsubscribe feature. If email address is provided, then we will forward an original unsubscription message sent by the inbox provider. If URL is provided, we will redirect a recipient to this URL so they can continue the unsubscription procedure on your end.
An email address of an entry that will be added to email's Reply-To header.
A visible name of an entry that will be added to email's Reply-To header.
curl -X POST https://api.coresender.com/v1/send_email \
-u 'account_id:api_key' \
-d $'[
{
"from": {
"email": "jean.luc@example.com",
"name": "Jean-Luc Picard"
},
"to": [
{
"email": "geordi@example.com",
"name": "Geordi La Forge"
}
],
"subject": "I need engines",
"body": {
"html": "<p>Geordi, I need engines, <strong>now!</strong></p>",
"text": "Geordi, I need engines, now!"
},
"custom_id": "abcd-1234",
"custom_id_unique": false,
"track_opens": true,
"track_clicks": true,
"list_id": "crew-orders",
"list_unsubscribe": "https://example.com/unsubscribe/abcd-1234",
"reply_to": [
{
"email": "captain@example.com",
"name": "Captain"
}
]
}
]'
{
"data": [
{
"message_id": "5e3a03a0-befc-4924-9c38-673020c9d687",
"custom_id": "abcd-1234",
"status": "accepted",
"errors": []
},
],
"meta": {
}
}
Your sending account's account_id
and api_key
are required to authenticate. You will find them in your control panel.
curl -X POST https://api.coresender.com/v1/send_email \
-u 'account_id:api_key' \
-d $'[
{
"from": {
"email": "jean.luc@example.com",
"name": "Jean-Luc Picard"
},
"to": [
{
"email": "geordi@example.com",
"name": "Geordi La Forge"
}
],
"subject": "I need engines",
"body": {
"html": "<p>Geordi, I need engines, <strong>now!</strong></p>",
"text": "Geordi, I need engines, now!"
},
"custom_id": "abcd-1234",
"custom_id_unique": false,
"track_opens": true,
"track_clicks": true,
"list_id": "crew-orders",
"list_unsubscribe": "https://example.com/unsubscribe/abcd-1234",
"reply_to": [
{
"email": "captain@example.com",
"name": "Captain"
}
]
}
]'
Sender's email address.
Sender's name.
Recipient's email address. Only one recipient is supported. Array is here for future expansion.
Recipient's name.
Email subject.
HTML email body. Required if body.text
not present.
Text email body. Required if body.html
not present.
Custom ID for the message. This ID will be returned in API response, will be included in webhooks and you will be able to search by it with the Messages API. Additionally it will be added to your email as X-Message-Custom-Id
header.
When enabled, custom_id
will be required be unique within a period of the last 72 hours. This is handy for senders who want to repeat a certain batch of emails with a guarantee that no email will be sent more than once.
Enables tracking email opens whenever possible. Tracking pixel will be added to the HTML part of the message.
Enables tracking links clicks. URLs within the email will be replaced with tracking URLs and the recipient will be redirected to the original URL on every click.
An email distribution list identifier used by the email client built-in unsubscribe feature.
Either an email or URL which will receive an unsubscription request if the recipient decides to use email client's built-in unsubscribe feature. If email address is provided, then we will forward an original unsubscription message sent by the inbox provider. If URL is provided, we will redirect a recipient to this URL so they can continue the unsubscription procedure on your end.
An email address of an entry that will be added to email's Reply-To header.
A visible name of an entry that will be added to email's Reply-To header.
{
"data": [
{
"message_id": "5e3a03a0-befc-4924-9c38-673020c9d687",
"custom_id": "abcd-1234",
"status": "accepted",
"errors": []
},
],
"meta": {
}
}
As most of the API uses OAuth access token as an authentication method (the only exception being Send email), relevant endpoints are provided.
This is a standard OAuth login method. Will work out of the box with your favorite OAuth library or API tools like Postman or Paw.
Email address of the user logging in.
Password of the user logging in.
Always set to "password".
Returns an access_token
that can be used to authenticate API calls.
curl -X POST https://api.coresender.com/v1/login \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"email": "tasha@example.com",
"password": ".2H[xr{kd'-}pYw+.9gPG72ej%;u>Zn",
"grant_type": "password"
}'
{
"token_type": "Bearer",
"expires_in": 31536000,
"access_token": "eyJ1eXBiOiJK…",
"refresh_token": "cef502114b84…"
}
This is a standard OAuth login method. Will work out of the box with your favorite OAuth library or API tools like Postman or Paw.
curl -X POST https://api.coresender.com/v1/login \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"email": "tasha@example.com",
"password": ".2H[xr{kd'-}pYw+.9gPG72ej%;u>Zn",
"grant_type": "password"
}'
Email address of the user logging in.
Password of the user logging in.
Always set to "password".
{
"token_type": "Bearer",
"expires_in": 31536000,
"access_token": "eyJ1eXBiOiJK…",
"refresh_token": "cef502114b84…"
}
Returns an access_token
that can be used to authenticate API calls.
Log out a user session.
200 OK
Coresender provides aggregated statistics for all emailing activity. Use this API if you need to learn how is your emailing performing in terms of delivery and engagement.
The start of the date range for which the statistics are returned.
The end of the date range for which the statistics are returned.
Aggregated metrics for the selected date range.
The number of emails accepted for delivery.
The number of delivered emails.
The number of hard bounce events.
The number of soft bounce events.
The number of spam complaints.
The number of unsubscribes.
The number of email opens
The number of emails for which opens have been tracked.
The number of link clicks in emails.
The number of emails for which clicks have been tracked.
The number of unique emails that have been opened.
The number of unique emails that have been clicked.
Each item of this array contains statistic for a particular sending account or sending domain.
ID of the sending account that the breakdown covers.
Name of the sending account that the breakdown covers.
ID of the domain that the breakdown covers.
Name of the domain that the breakdown covers.
{
"period_from": "2022-03-07",
"period_to": "2022-03-14",
"stats_summary": {
"messages": "7415",
"delivery": "7385",
"hard_bounce": "0",
"soft_bounce": "29",
"spam_complaint": "0",
"unsubscribe": "0",
"open": "5681",
"track_opens": "7378",
"click": "5681",
"track_clicks": "7378",
"unique_opens": "5681",
"unique_clicks": "5681"
},
"breakdown": [
{
"messages": "21",
"delivery": "21",
"hard_bounce": "0",
"soft_bounce": "0",
"spam_complaint": "0",
"unsubscribe": "0",
"open": "0",
"track_opens": "0",
"click": "0",
"track_clicks": "0",
"unique_opens": "0",
"unique_clicks": "0",
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"account_name": "Starfleet Notifications"
},
{
"messages": "7415",
"delivery": "7385",
"hard_bounce": "0",
"soft_bounce": "29",
"spam_complaint": "0",
"unsubscribe": "0",
"open": "5681",
"track_opens": "7378",
"click": "5681",
"track_clicks": "7378",
"unique_opens": "5681",
"unique_clicks": "5681",
"domain_id": "a90409c1-3e2e-4ea5-c885-ba9554629e50",
"domain_name": "example.com"
}
]
}
{
"period_from": "2022-03-07",
"period_to": "2022-03-14",
"stats_summary": {
"messages": "7415",
"delivery": "7385",
"hard_bounce": "0",
"soft_bounce": "29",
"spam_complaint": "0",
"unsubscribe": "0",
"open": "5681",
"track_opens": "7378",
"click": "5681",
"track_clicks": "7378",
"unique_opens": "5681",
"unique_clicks": "5681"
},
"breakdown": [
{
"messages": "21",
"delivery": "21",
"hard_bounce": "0",
"soft_bounce": "0",
"spam_complaint": "0",
"unsubscribe": "0",
"open": "0",
"track_opens": "0",
"click": "0",
"track_clicks": "0",
"unique_opens": "0",
"unique_clicks": "0",
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"account_name": "Starfleet Notifications"
},
{
"messages": "7415",
"delivery": "7385",
"hard_bounce": "0",
"soft_bounce": "29",
"spam_complaint": "0",
"unsubscribe": "0",
"open": "5681",
"track_opens": "7378",
"click": "5681",
"track_clicks": "7378",
"unique_opens": "5681",
"unique_clicks": "5681",
"domain_id": "a90409c1-3e2e-4ea5-c885-ba9554629e50",
"domain_name": "example.com"
}
]
}
The start of the date range for which the statistics are returned.
The end of the date range for which the statistics are returned.
Aggregated metrics for the selected date range.
The number of emails accepted for delivery.
The number of delivered emails.
The number of hard bounce events.
The number of soft bounce events.
The number of spam complaints.
The number of unsubscribes.
The number of email opens
The number of emails for which opens have been tracked.
The number of link clicks in emails.
The number of emails for which clicks have been tracked.
The number of unique emails that have been opened.
The number of unique emails that have been clicked.
Each item of this array contains statistic for a particular sending account or sending domain.
ID of the sending account that the breakdown covers.
Name of the sending account that the breakdown covers.
ID of the domain that the breakdown covers.
Name of the domain that the breakdown covers.
Returns aggregated statistics for the requested time period.
The starting date of the period for which you want to retrieve the statistics.
The ending date of the period for which you want to retrieve the statistics.
Returns the statistics object if the request succeeds. stats_summary
is always returned. The breakdown
section is returned when breaking down by sending accounts or domains is requested. Returns an error if anything goes wrong.
curl https://api.coresender.com/v1/stats \
-H 'Authorization: Bearer oauth_access_token' \
-G \
-d 'period_from=2022-03-07' \
-d 'period_to=2022-03-14' \
-d 'all_accounts=0' \
-d 'all_domains=0' \
{
"data": {
"period_from": "2022-03-07",
"period_to": "2022-03-14",
"stats_summary": {
"messages": "7415",
"delivery": "7385",
"hard_bounce": "0",
"soft_bounce": "29",
"spam_complaint": "0",
"unsubscribe": "0",
"open": "5681",
"track_opens": "7378",
"click": "5681",
"track_clicks": "7378",
"unique_opens": "5681",
"unique_clicks": "5681"
}
},
"meta": {
"rq_time": "0.0005s"
}
}
Returns aggregated statistics for the requested time period.
curl https://api.coresender.com/v1/stats \
-H 'Authorization: Bearer oauth_access_token' \
-G \
-d 'period_from=2022-03-07' \
-d 'period_to=2022-03-14' \
-d 'all_accounts=0' \
-d 'all_domains=0' \
The starting date of the period for which you want to retrieve the statistics.
The ending date of the period for which you want to retrieve the statistics.
{
"data": {
"period_from": "2022-03-07",
"period_to": "2022-03-14",
"stats_summary": {
"messages": "7415",
"delivery": "7385",
"hard_bounce": "0",
"soft_bounce": "29",
"spam_complaint": "0",
"unsubscribe": "0",
"open": "5681",
"track_opens": "7378",
"click": "5681",
"track_clicks": "7378",
"unique_opens": "5681",
"unique_clicks": "5681"
}
},
"meta": {
"rq_time": "0.0005s"
}
}
Returns the statistics object if the request succeeds. stats_summary
is always returned. The breakdown
section is returned when breaking down by sending accounts or domains is requested. Returns an error if anything goes wrong.
In Coresender, you can organize your sending activity by using sending accounts. They have separate API keys, webhooks, and each sending account is gathering its activity logs and suppressions separately.
Sending accounts can either be transactional or marketing, depending on the emails you will send through them. Please note that Coresender requires that you always choose a proper sending account type.
You can create many sending accounts, depending on your needs. You can use them to separate your integrated applications, environments (like production or test), or your clients.
Unique identifier for the sending account.
Name of the sending account.
Type of the sending account. Can be either transactional
or marketing
. The type can not be changed.
The status of the sending account. Can be either active
or disabled
.
{
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications",
"status": "active",
"type": "transactional"
}
{
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications",
"status": "active",
"type": "transactional"
}
Unique identifier for the sending account.
Name of the sending account.
Type of the sending account. Can be either transactional
or marketing
. The type can not be changed.
The status of the sending account. Can be either active
or disabled
.
Creates a sending account that you will use to send your email.
Name of the sending account.
Type of the account. Can either be transactional
or marketing
.
Returns the sending account object if the request succeeds. Returns an error if anything goes wrong.
curl -X POST https://api.coresender.com/v1/accounts \
-H 'Authorization: Bearer oauth_access_token' \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"name": "Starfleet Notifications",
"type": "transactional"
}'
{
"data": {
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications",
"status": "active",
"type": "transactional"
},
"meta": {
"rq_time": "0.0008s"
}
}
Creates a sending account that you will use to send your email.
curl -X POST https://api.coresender.com/v1/accounts \
-H 'Authorization: Bearer oauth_access_token' \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"name": "Starfleet Notifications",
"type": "transactional"
}'
Name of the sending account.
Type of the account. Can either be transactional
or marketing
.
{
"data": {
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications",
"status": "active",
"type": "transactional"
},
"meta": {
"rq_time": "0.0008s"
}
}
Returns the sending account object if the request succeeds. Returns an error if anything goes wrong.
Retrieves the details of an existing sending account. You only need to supply a unique identifier.
Returns a sending account object if a valid identifier was provided.
curl https://api.coresender.com/v1/accounts/647d8122-e240-4993-995d-a629713678ce \
-H 'Authorization: Bearer oauth_access_token'
{
"data": {
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications",
"status": "active",
"type": "transactional"
},
"meta": {
"rq_time": "0.0043s"
}
}
Retrieves the details of an existing sending account. You only need to supply a unique identifier.
curl https://api.coresender.com/v1/accounts/647d8122-e240-4993-995d-a629713678ce \
-H 'Authorization: Bearer oauth_access_token'
{
"data": {
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications",
"status": "active",
"type": "transactional"
},
"meta": {
"rq_time": "0.0043s"
}
}
Returns a sending account object if a valid identifier was provided.
Updates the specified sending account. Note that the type of the sending account can not be updated.
Name of the sending account.
Returns the sending account object if the request succeeds. Returns an error if anything goes wrong.
curl -X PATCH https://api.coresender.com/v1/accounts/647d8122-e240-4993-995d-a629713678ce \
-H 'Authorization: Bearer oauth_access_token' \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"name": "Starfleet Alerts",
}'
{
"data": {
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Alerts",
"status": "active",
"type": "transactional"
},
"meta": {
"rq_time": "0.0008s"
}
}
Updates the specified sending account. Note that the type of the sending account can not be updated.
curl -X PATCH https://api.coresender.com/v1/accounts/647d8122-e240-4993-995d-a629713678ce \
-H 'Authorization: Bearer oauth_access_token' \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"name": "Starfleet Alerts",
}'
Name of the sending account.
{
"data": {
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Alerts",
"status": "active",
"type": "transactional"
},
"meta": {
"rq_time": "0.0008s"
}
}
Returns the sending account object if the request succeeds. Returns an error if anything goes wrong.
Permanently deletes a sending account. It cannot be undone.
Returns a deleted sending account object if the request succeeds. Returns an error if anything goes wrong.
curl -X DELETE https://api.coresender.com/v1/accounts/647d8122-e240-4993-995d-a629713678ce \
-H 'Authorization: Bearer oauth_access_token'
{
"data": {
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Alerts",
"status": "active",
"type": "transactional"
},
"meta": {
"rq_time": "0.0043s"
}
}
Permanently deletes a sending account. It cannot be undone.
curl -X DELETE https://api.coresender.com/v1/accounts/647d8122-e240-4993-995d-a629713678ce \
-H 'Authorization: Bearer oauth_access_token'
{
"data": {
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Alerts",
"status": "active",
"type": "transactional"
},
"meta": {
"rq_time": "0.0043s"
}
}
Returns a deleted sending account object if the request succeeds. Returns an error if anything goes wrong.
List all sending accounts with optional filters applied.
Filter by account name.
Filter by account type. It can be either transactional
or marketing
.
Limit the response to a specified number of objects.
Return objects starting from a specified offset. Counted from 0.
Returns the list of sending account objects if the request succeeds. Returns an error if anything goes wrong.
curl https://api.coresender.com/v1/accounts \
-H 'Authorization: Bearer oauth_access_token' \
-G \
-d 'name=Starfleet'
{
"data": [
{
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications",
"status": "active",
"type": "transactional"
},
{
"account_id": "04a96a81-41a9-4f6d-9dfc-ffe433a7fba0",
"name": "Starfleet Newsletters",
"status": "active",
"type": "marketing"
}
],
"meta": {
"limit": 30,
"offset": 0,
"total": 2,
"rq_time": "0.0043s"
}
}
List all sending accounts with optional filters applied.
curl https://api.coresender.com/v1/accounts \
-H 'Authorization: Bearer oauth_access_token' \
-G \
-d 'name=Starfleet'
Filter by account name.
Filter by account type. It can be either transactional
or marketing
.
Limit the response to a specified number of objects.
Return objects starting from a specified offset. Counted from 0.
{
"data": [
{
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications",
"status": "active",
"type": "transactional"
},
{
"account_id": "04a96a81-41a9-4f6d-9dfc-ffe433a7fba0",
"name": "Starfleet Newsletters",
"status": "active",
"type": "marketing"
}
],
"meta": {
"limit": 30,
"offset": 0,
"total": 2,
"rq_time": "0.0043s"
}
}
Returns the list of sending account objects if the request succeeds. Returns an error if anything goes wrong.
You will need to properly configure the first domain before you can send your first email. It includes adding DKIM and Return-Path DNS records and verifying them. We will only let you use a domain name in your email's From
header if its DNS settings are verified.
Unique identifier for the sending domain.
Name of the sending domain.
Unique identifier of the sending account that the domain is assigned to.
Name of the sending account that the domain is assigned to.
The date at which DKIM DNS records were successfully verified. null
if the verification failed.
The date at which Return-Path DNS record was successfully verified. null
if the verification failed.
The hostname for the Return-Path configuration.
The value of the Return-Path DNS record.
The hostname of the first DKIM DNS record.
The value of the first DKIM DNS record.
The hostname of the second DKIM DNS record.
The value of the second DKIM DNS record.
{
"domain_id": "a90409c1-3e2e-4ea5-c885-ba9554629e50",
"name": "example.com",
"accounts": [
{
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications"
}
],
"dkim_verified_at": "2020-07-08T17:05:48.826002+00:00",
"return_path_verified_at": "2020-07-03T11:17:04.812559+00:00",
"return_path_hostname": "cs-bounces",
"return_path_cname": "coresender.net",
"dkim_selector_1": "cs1",
"dkim_cname_1": "cs1.domainkey.coresender.net",
"dkim_selector_2": "cs2",
"dkim_cname_2": "cs2.domainkey.coresender.net",
}
{
"domain_id": "a90409c1-3e2e-4ea5-c885-ba9554629e50",
"name": "example.com",
"accounts": [
{
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications"
}
],
"dkim_verified_at": "2020-07-08T17:05:48.826002+00:00",
"return_path_verified_at": "2020-07-03T11:17:04.812559+00:00",
"return_path_hostname": "cs-bounces",
"return_path_cname": "coresender.net",
"dkim_selector_1": "cs1",
"dkim_cname_1": "cs1.domainkey.coresender.net",
"dkim_selector_2": "cs2",
"dkim_cname_2": "cs2.domainkey.coresender.net",
}
Unique identifier for the sending domain.
Name of the sending domain.
Unique identifier of the sending account that the domain is assigned to.
Name of the sending account that the domain is assigned to.
The date at which DKIM DNS records were successfully verified. null
if the verification failed.
The date at which Return-Path DNS record was successfully verified. null
if the verification failed.
The hostname for the Return-Path configuration.
The value of the Return-Path DNS record.
The hostname of the first DKIM DNS record.
The value of the first DKIM DNS record.
The hostname of the second DKIM DNS record.
The value of the second DKIM DNS record.
Creates a sending domain that you will use to send your email.
Name of the sending domain.
The hostname for the Return-Path configuration. You may want to change it if the default cs-bounces
hostname is already used in your domain.
A list of sending accounts IDs. The domain will get assigned to those accounts.
Returns the sending domain object if the request succeeds. Returns an error if anything goes wrong.
curl -X POST https://api.coresender.com/v1/domains \
-H 'Authorization: Bearer oauth_access_token' \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"name": "example.com",
"accounts": [
"647d8122-e240-4993-995d-a629713678ce"
]
}'
{
"data": {
"domain_id": "a90409c1-3e2e-4ea5-c885-ba9554629e50",
"name": "example.com",
"accounts": [
{
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications"
}
],
"dkim_verified_at": null,
"return_path_verified_at": null,
"return_path_hostname": "cs-bounces",
"return_path_cname": "coresender.net",
"dkim_selector_1": "cs1",
"dkim_cname_1": "cs1.domainkey.coresender.net",
"dkim_selector_2": "cs2",
"dkim_cname_2": "cs2.domainkey.coresender.net",
},
"meta": {
"rq_time": "0.0071s"
}
}
Creates a sending domain that you will use to send your email.
curl -X POST https://api.coresender.com/v1/domains \
-H 'Authorization: Bearer oauth_access_token' \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"name": "example.com",
"accounts": [
"647d8122-e240-4993-995d-a629713678ce"
]
}'
Name of the sending domain.
The hostname for the Return-Path configuration. You may want to change it if the default cs-bounces
hostname is already used in your domain.
A list of sending accounts IDs. The domain will get assigned to those accounts.
{
"data": {
"domain_id": "a90409c1-3e2e-4ea5-c885-ba9554629e50",
"name": "example.com",
"accounts": [
{
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications"
}
],
"dkim_verified_at": null,
"return_path_verified_at": null,
"return_path_hostname": "cs-bounces",
"return_path_cname": "coresender.net",
"dkim_selector_1": "cs1",
"dkim_cname_1": "cs1.domainkey.coresender.net",
"dkim_selector_2": "cs2",
"dkim_cname_2": "cs2.domainkey.coresender.net",
},
"meta": {
"rq_time": "0.0071s"
}
}
Returns the sending domain object if the request succeeds. Returns an error if anything goes wrong.
Retrieves the details of an existing sending domain. You only need to supply a unique identifier.
Returns a sending domain object if a valid identifier was provided.
curl https://api.coresender.com/v1/domains/a90409c1-3e2e-4ea5-c885-ba9554629e50 \
-H 'Authorization: Bearer oauth_access_token'
{
"data": {
"domain_id": "a90409c1-3e2e-4ea5-c885-ba9554629e50",
"name": "example.com",
"accounts": [
{
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications"
}
],
"dkim_verified_at": null,
"return_path_verified_at": null,
"return_path_hostname": "cs-bounces",
"return_path_cname": "coresender.net",
"dkim_selector_1": "cs1",
"dkim_cname_1": "cs1.domainkey.coresender.net",
"dkim_selector_2": "cs2",
"dkim_cname_2": "cs2.domainkey.coresender.net",
},
"meta": {
"rq_time": "0.0071s"
}
}
Retrieves the details of an existing sending domain. You only need to supply a unique identifier.
curl https://api.coresender.com/v1/domains/a90409c1-3e2e-4ea5-c885-ba9554629e50 \
-H 'Authorization: Bearer oauth_access_token'
{
"data": {
"domain_id": "a90409c1-3e2e-4ea5-c885-ba9554629e50",
"name": "example.com",
"accounts": [
{
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications"
}
],
"dkim_verified_at": null,
"return_path_verified_at": null,
"return_path_hostname": "cs-bounces",
"return_path_cname": "coresender.net",
"dkim_selector_1": "cs1",
"dkim_cname_1": "cs1.domainkey.coresender.net",
"dkim_selector_2": "cs2",
"dkim_cname_2": "cs2.domainkey.coresender.net",
},
"meta": {
"rq_time": "0.0071s"
}
}
Returns a sending domain object if a valid identifier was provided.
Updates the specified sending domain.
The hostname for the Return-Path configuration. You may want to change it if the default cs-bounces
hostname is already used in your domain.
A list of sending accounts IDs. The domain will get assigned to those accounts. All previously assigned sending accounts will be replaced.
Returns the sending domain object if the request succeeds. Returns an error if anything goes wrong.
curl -X PATCH https://api.coresender.com/v1/domains/a90409c1-3e2e-4ea5-c885-ba9554629e50 \
-H 'Authorization: Bearer oauth_access_token' \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"return_path_hostname": "mail",
"accounts": [
"647d8122-e240-4993-995d-a629713678ce",
"04a96a81-41a9-4f6d-9dfc-ffe433a7fba0"
]
}'
{
"data": {
"domain_id": "a90409c1-3e2e-4ea5-c885-ba9554629e50",
"name": "example.com",
"accounts": [
{
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications"
},
{
"account_id": "04a96a81-41a9-4f6d-9dfc-ffe433a7fba0",
"name": "Starfleet Newsletters",
}
],
"dkim_verified_at": null,
"return_path_verified_at": null,
"return_path_hostname": "mail",
"return_path_cname": "coresender.net",
"dkim_selector_1": "cs1",
"dkim_cname_1": "cs1.domainkey.coresender.net",
"dkim_selector_2": "cs2",
"dkim_cname_2": "cs2.domainkey.coresender.net",
},
"meta": {
"rq_time": "0.0071s"
}
}
Updates the specified sending domain.
curl -X PATCH https://api.coresender.com/v1/domains/a90409c1-3e2e-4ea5-c885-ba9554629e50 \
-H 'Authorization: Bearer oauth_access_token' \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"return_path_hostname": "mail",
"accounts": [
"647d8122-e240-4993-995d-a629713678ce",
"04a96a81-41a9-4f6d-9dfc-ffe433a7fba0"
]
}'
The hostname for the Return-Path configuration. You may want to change it if the default cs-bounces
hostname is already used in your domain.
A list of sending accounts IDs. The domain will get assigned to those accounts. All previously assigned sending accounts will be replaced.
{
"data": {
"domain_id": "a90409c1-3e2e-4ea5-c885-ba9554629e50",
"name": "example.com",
"accounts": [
{
"account_id": "647d8122-e240-4993-995d-a629713678ce",
"name": "Starfleet Notifications"
},
{
"account_id": "04a96a81-41a9-4f6d-9dfc-ffe433a7fba0",
"name": "Starfleet Newsletters",
}
],
"dkim_verified_at": null,
"return_path_verified_at": null,
"return_path_hostname": "mail",
"return_path_cname": "coresender.net",
"dkim_selector_1": "cs1",
"dkim_cname_1": "cs1.domainkey.coresender.net",
"dkim_selector_2": "cs2",
"dkim_cname_2": "cs2.domainkey.coresender.net",
},
"meta": {
"rq_time": "0.0071s"
}
}
Returns the sending domain object if the request succeeds. Returns an error if anything goes wrong.
Permanently deletes a sending domain. It cannot be undone.
Returns a deleted sending domain object if the request succeeds. Returns an error if anything goes wrong.
curl -X DELETE https://api.coresender.com/v1/domains/a90409c1-3e2e-4ea5-c885-ba9554629e50 \
-H 'Authorization: Bearer oauth_access_token'
{
"data": {
"domain_id": "a90409c1-3e2e-4ea5-c885-ba9554629e50",
"name": "example.com",
…
},
"meta": {
"rq_time": "0.0071s"
}
}
Permanently deletes a sending domain. It cannot be undone.
curl -X DELETE https://api.coresender.com/v1/domains/a90409c1-3e2e-4ea5-c885-ba9554629e50 \
-H 'Authorization: Bearer oauth_access_token'
{
"data": {
"domain_id": "a90409c1-3e2e-4ea5-c885-ba9554629e50",
"name": "example.com",
…
},
"meta": {
"rq_time": "0.0071s"
}
}
Returns a deleted sending domain object if the request succeeds. Returns an error if anything goes wrong.
List all domains with optional filters applied.
Filter by the domain name.
Limit the response to a specified number of objects.
Return objects starting from a specified offset. Counted from 0.
Returns the list of sending account objects if the request succeeds. Returns an error if anything goes wrong.
curl https://api.coresender.com/v1/domains \
-H 'Authorization: Bearer oauth_access_token' \
-G \
-d 'name=example'
{
"data": [
{
"domain_id": "a90409c1-3e2e-4ea5-c885-ba9554629e50",
"name": "example.com",
…
},
{
"domain_id": "fa8c1873-7e66-4712-9dd2-f7844d90448c",
"name": "example.net",
…
}
],
"meta": {
"limit": 30,
"offset": 0,
"total": 2,
"rq_time": "0.0043s"
}
}
List all domains with optional filters applied.
curl https://api.coresender.com/v1/domains \
-H 'Authorization: Bearer oauth_access_token' \
-G \
-d 'name=example'
Filter by the domain name.
Limit the response to a specified number of objects.
Return objects starting from a specified offset. Counted from 0.
{
"data": [
{
"domain_id": "a90409c1-3e2e-4ea5-c885-ba9554629e50",
"name": "example.com",
…
},
{
"domain_id": "fa8c1873-7e66-4712-9dd2-f7844d90448c",
"name": "example.net",
…
}
],
"meta": {
"limit": 30,
"offset": 0,
"total": 2,
"rq_time": "0.0043s"
}
}
Returns the list of sending account objects if the request succeeds. Returns an error if anything goes wrong.
Checks your domain's DNS and verifies if DKIM-related hosts are properly configured.
Returns 200 OK
if the verification succeeds. Returns an error if anything goes wrong.
Checks your domain's DNS and verifies if DKIM-related hosts are properly configured.
curl -X POST https://api.coresender.com/v1/domains/a90409c1-3e2e-4ea5-c885-ba9554629e50/verify_dkim \
-H 'Authorization: Bearer oauth_access_token'
{
"data": "OK",
"meta": {
"rq_time":"0.0003s"
}
}
Returns 200 OK
if the verification succeeds. Returns an error if anything goes wrong.
Checks your domain's DNS and verifies if Return-Path host is properly configured.
Returns 200 OK
if the verification succeeds. Returns an error if anything goes wrong.
Checks your domain's DNS and verifies if Return-Path host is properly configured.
curl -X POST https://api.coresender.com/v1/domains/a90409c1-3e2e-4ea5-c885-ba9554629e50/verify_return_path \
-H 'Authorization: Bearer oauth_access_token'
{
"data": "OK",
"meta": {
"rq_time":"0.0003s"
}
}
Returns 200 OK
if the verification succeeds. Returns an error if anything goes wrong.
Coresender keeps lists of recipients' email addresses it rejects to deliver to. Each sending account has its own suppression list. Email addresses are suppressed when the message hard‑bounces, when it's flagged as spam by the recipient, or when the recipient decided to use the list-unsubscribe feature. You can also manually add and delete suppressions using this Suppressions API.
Unique identifier for the suppression.
ID of the sending account the suppression belongs to.
Name of the sending account the suppression belongs to.
Time at which suppression was created.
Your custom ID for the Message the suppression is a result of. Will be empty if type
is manual
.
ID for the Message the suppression is a result of. Will be empty if type
is manual
.
The reason why the suppression was added. Only if type
is manual
.
The suppressed email address.
Suppression type. If the suppression was manually added (either via API or control panel) the value is manual
. If added automatically by the system, the value is one of hard_bounce
, spam_complaint
and unsubscribe
.
{
"suppression_id": "cdea3870-0d1b-4c10-983c-fb2719af9755",
"account_id": "a3c69540-3324-49a7-b595-5c310d9ca867",
"account_name": "My transactionals",
"created_at": "2020-03-22T17:19:03.000117+00:00",
"message_custom_id": "abcd-1234",
"message_id": "4808ce75-f745-4afd-ad23-200ee061215b",
"reason": "",
"recipient_email": "redshirt@example.com",
"type": "hard_bounce"
}
{
"suppression_id": "cdea3870-0d1b-4c10-983c-fb2719af9755",
"account_id": "a3c69540-3324-49a7-b595-5c310d9ca867",
"account_name": "My transactionals",
"created_at": "2020-03-22T17:19:03.000117+00:00",
"message_custom_id": "abcd-1234",
"message_id": "4808ce75-f745-4afd-ad23-200ee061215b",
"reason": "",
"recipient_email": "redshirt@example.com",
"type": "hard_bounce"
}
Unique identifier for the suppression.
ID of the sending account the suppression belongs to.
Name of the sending account the suppression belongs to.
Time at which suppression was created.
Your custom ID for the Message the suppression is a result of. Will be empty if type
is manual
.
ID for the Message the suppression is a result of. Will be empty if type
is manual
.
The reason why the suppression was added. Only if type
is manual
.
The suppressed email address.
Suppression type. If the suppression was manually added (either via API or control panel) the value is manual
. If added automatically by the system, the value is one of hard_bounce
, spam_complaint
and unsubscribe
.
Creating suppressions with the API is an equivalent of adding them in the control panel. The type is always set to manual
.
ID of the sending account the suppression is going to belong to.
The reason why you are suppressing this recipient.
The suppressed email address.
Returns the suppression object if the request succeeds. Returns an error if anything goes wrong.
curl -X POST https://api.coresender.com/v1/suppressions \
-H 'Authorization: Bearer oauth_access_token' \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"account_id": "a3c69540-3324-49a7-b595-5c310d9ca867",
"reason": "Imported from our internal system",
"recipient_email": "tasha@example.com"
}'
{
"data": {
"suppression_id": "b87aa3b3-8aa3-4fd2-8a50-0bdcb16a1e4f",
"account_id": "a3c69540-3324-49a7-b595-5c310d9ca867",
"account_name": "My transactionals",
"created_at": "2020-03-23T06:50:38.049041+00:00",
"recipient_email": "tasha@example.com",
"message_id": null,
"message_custom_id": null,
"type": "manual",
"reason": "Imported from our internal system"
},
"meta": {
"rq_time": "0.0043s"
}
}
Creating suppressions with the API is an equivalent of adding them in the control panel. The type is always set to manual
.
curl -X POST https://api.coresender.com/v1/suppressions \
-H 'Authorization: Bearer oauth_access_token' \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"account_id": "a3c69540-3324-49a7-b595-5c310d9ca867",
"reason": "Imported from our internal system",
"recipient_email": "tasha@example.com"
}'
ID of the sending account the suppression is going to belong to.
The reason why you are suppressing this recipient.
The suppressed email address.
{
"data": {
"suppression_id": "b87aa3b3-8aa3-4fd2-8a50-0bdcb16a1e4f",
"account_id": "a3c69540-3324-49a7-b595-5c310d9ca867",
"account_name": "My transactionals",
"created_at": "2020-03-23T06:50:38.049041+00:00",
"recipient_email": "tasha@example.com",
"message_id": null,
"message_custom_id": null,
"type": "manual",
"reason": "Imported from our internal system"
},
"meta": {
"rq_time": "0.0043s"
}
}
Returns the suppression object if the request succeeds. Returns an error if anything goes wrong.
Retrieves the details of an existing suppression. You only need to supply a unique suppression identifier.
Returns a suppression object if a valid identifier was provided.
curl https://api.coresender.com/v1/suppressions/b87aa3b3-8aa3-4fd2-8a50-0bdcb16a1e4f \
-H 'Authorization: Bearer oauth_access_token'
{
"data": {
"suppression_id": "b87aa3b3-8aa3-4fd2-8a50-0bdcb16a1e4f",
"account_id": "a3c69540-3324-49a7-b595-5c310d9ca867",
"account_name": "My transactionals",
"created_at": "2020-03-23T06:50:38.049041+00:00",
"recipient_email": "tasha@example.com",
"message_id": null,
"message_custom_id": null,
"type": "manual",
"reason": "Imported from our internal system"
},
"meta": {
"rq_time": "0.0043s"
}
}
Retrieves the details of an existing suppression. You only need to supply a unique suppression identifier.
curl https://api.coresender.com/v1/suppressions/b87aa3b3-8aa3-4fd2-8a50-0bdcb16a1e4f \
-H 'Authorization: Bearer oauth_access_token'
{
"data": {
"suppression_id": "b87aa3b3-8aa3-4fd2-8a50-0bdcb16a1e4f",
"account_id": "a3c69540-3324-49a7-b595-5c310d9ca867",
"account_name": "My transactionals",
"created_at": "2020-03-23T06:50:38.049041+00:00",
"recipient_email": "tasha@example.com",
"message_id": null,
"message_custom_id": null,
"type": "manual",
"reason": "Imported from our internal system"
},
"meta": {
"rq_time": "0.0043s"
}
}
Returns a suppression object if a valid identifier was provided.
Permanently deletes a suppression. It cannot be undone.
Returns a deleted suppression object on success.
curl -X DELETE https://api.coresender.com/v1/suppressions/b87aa3b3-8aa3-4fd2-8a50-0bdcb16a1e4f \
-H 'Authorization: Bearer oauth_access_token'
{
"data": {
"suppression_id": "b87aa3b3-8aa3-4fd2-8a50-0bdcb16a1e4f",
"account_id": "a3c69540-3324-49a7-b595-5c310d9ca867",
"account_name": "My transactionals",
"created_at": "2020-03-23T06:50:38.049041+00:00",
"recipient_email": "tasha@example.com",
"message_id": null,
"message_custom_id": null,
"type": "manual",
"reason": "Imported from our internal system"
},
"meta": {
"rq_time": "0.0043s"
}
}
Permanently deletes a suppression. It cannot be undone.
curl -X DELETE https://api.coresender.com/v1/suppressions/b87aa3b3-8aa3-4fd2-8a50-0bdcb16a1e4f \
-H 'Authorization: Bearer oauth_access_token'
{
"data": {
"suppression_id": "b87aa3b3-8aa3-4fd2-8a50-0bdcb16a1e4f",
"account_id": "a3c69540-3324-49a7-b595-5c310d9ca867",
"account_name": "My transactionals",
"created_at": "2020-03-23T06:50:38.049041+00:00",
"recipient_email": "tasha@example.com",
"message_id": null,
"message_custom_id": null,
"type": "manual",
"reason": "Imported from our internal system"
},
"meta": {
"rq_time": "0.0043s"
}
}
Returns a deleted suppression object on success.
Lists all suppressions with optional filters applied.
Filter by a sending account. If you'd like to filter by multiple sending accounts, you can use this parameter multiple times.
The starting date of the period you want to filter by.
The ending date of the period you want to filter by.
Filter by recipient email address. Note: one recipient can be suppressed in multiple sending accounts.
Filter by the ID of the message the suppression is a result of.
Filter by your custom ID of the message the suppression is a result of.
Filter by the suppression type. If you'd like to filter by more than one type, you can use this parameter multiple times.
Filter by the suppression reason provided when the suppression was created.
Limit the response to a specified number of objects.
Return objects starting from a specified offset. Counted from 0.
Returns the list of suppression objects if the request succeeds. Returns an error if filters are invalid (e.g. wong date format or nonexistent sending account).
curl https://api.coresender.com/v1/suppressions \
-H 'Authorization: Bearer oauth_access_token' \
-G \
-d 'period_from=2020-02-01' \
-d 'period_to=2020-02-29' \
-d 'account_ids[]=a3c69540-3324-49a7-b595-5c310d9ca867' \
-d 'account_ids[]=c6d49a5a-3513-4d20-8eac-d67396dbb2e9' \
-d 'types[]=manual'
{
"data": [
{
"suppression_id": "b87aa3b3-8aa3-4fd2-8a50-0bdcb16a1e4f",
"account_id": "a3c69540-3324-49a7-b595-5c310d9ca867",
"account_name": "My transactionals",
"created_at": "2020-03-23T06:50:38.049041+00:00",
"recipient_email": "tasha@example.com",
"message_id": null,
"message_custom_id": null,
"type": "manual",
"reason": "Imported from our internal system"
}
],
"meta": {
"limit": 30,
"offset": 0,
"total": 1,
"rq_time": "0.0043s"
}
}
Lists all suppressions with optional filters applied.
curl https://api.coresender.com/v1/suppressions \
-H 'Authorization: Bearer oauth_access_token' \
-G \
-d 'period_from=2020-02-01' \
-d 'period_to=2020-02-29' \
-d 'account_ids[]=a3c69540-3324-49a7-b595-5c310d9ca867' \
-d 'account_ids[]=c6d49a5a-3513-4d20-8eac-d67396dbb2e9' \
-d 'types[]=manual'
Filter by a sending account. If you'd like to filter by multiple sending accounts, you can use this parameter multiple times.
The starting date of the period you want to filter by.
The ending date of the period you want to filter by.
Filter by recipient email address. Note: one recipient can be suppressed in multiple sending accounts.
Filter by the ID of the message the suppression is a result of.
Filter by your custom ID of the message the suppression is a result of.
Filter by the suppression type. If you'd like to filter by more than one type, you can use this parameter multiple times.
Filter by the suppression reason provided when the suppression was created.
Limit the response to a specified number of objects.
Return objects starting from a specified offset. Counted from 0.
{
"data": [
{
"suppression_id": "b87aa3b3-8aa3-4fd2-8a50-0bdcb16a1e4f",
"account_id": "a3c69540-3324-49a7-b595-5c310d9ca867",
"account_name": "My transactionals",
"created_at": "2020-03-23T06:50:38.049041+00:00",
"recipient_email": "tasha@example.com",
"message_id": null,
"message_custom_id": null,
"type": "manual",
"reason": "Imported from our internal system"
}
],
"meta": {
"limit": 30,
"offset": 0,
"total": 1,
"rq_time": "0.0043s"
}
}
Returns the list of suppression objects if the request succeeds. Returns an error if filters are invalid (e.g. wong date format or nonexistent sending account).
Webhooks are requests made from Coresender back to your application whenever specific events occur.
You can use Webhooks.site for testing your webhooks.
You can use Webhooks.site for testing your webhooks.
This webhook is triggered whenever your message is successfully delivered to the receiving server.
To the right is the example of the JSON that would be sent to your Webhook URL. Bellow is a description of all the fields.
Identifier of the sending account that was used to send the email.
Custom ID that you have provided when you sent a message.
Type of the event that triggered the webhook.
Email address used in the From
header.
Unique identifier for the message.
Time at which the event happened.
Email address of the recipient.
{
"received_at": "2020-02-24T12:15:30.617352+00:00",
"message_id": "a3045f2b-ee5c-492e-a9b9-2017b5187b01",
"custom_id": "abcd-1234",
"recipient_email": "recipient@example.com",
"from_email": "from@example.com",
"account_id": "7b0ac663-d3f4-4d2d-9095-bc4cdd118287",
"event": "message.delivery"
}
To the right is the example of the JSON that would be sent to your Webhook URL. Bellow is a description of all the fields.
{
"received_at": "2020-02-24T12:15:30.617352+00:00",
"message_id": "a3045f2b-ee5c-492e-a9b9-2017b5187b01",
"custom_id": "abcd-1234",
"recipient_email": "recipient@example.com",
"from_email": "from@example.com",
"account_id": "7b0ac663-d3f4-4d2d-9095-bc4cdd118287",
"event": "message.delivery"
}
Identifier of the sending account that was used to send the email.
Custom ID that you have provided when you sent a message.
Type of the event that triggered the webhook.
Email address used in the From
header.
Unique identifier for the message.
Time at which the event happened.
Email address of the recipient.
This webhook is triggered whenever your message delivery attempt results in a hard bounce.
To the right is the example of the JSON that would be sent to your Webhook URL. Bellow is a description of all the fields.
Identifier of the sending account that was used to send the email.
Custom ID that you have provided when you sent a message.
Type of the event that triggered the webhook.
Email address used in the From
header.
Unique identifier for the message.
Time at which the event happened.
Email address of the recipient.
{
"received_at": "2020-02-24T12:15:30.617352+00:00",
"message_id": "a3045f2b-ee5c-492e-a9b9-2017b5187b01",
"custom_id": "abcd-1234",
"recipient_email": "nonexistent@example.com",
"from_email": "from@example.com",
"account_id": "7b0ac663-d3f4-4d2d-9095-bc4cdd118287",
"event": "message.hard_bounce"
}
To the right is the example of the JSON that would be sent to your Webhook URL. Bellow is a description of all the fields.
{
"received_at": "2020-02-24T12:15:30.617352+00:00",
"message_id": "a3045f2b-ee5c-492e-a9b9-2017b5187b01",
"custom_id": "abcd-1234",
"recipient_email": "nonexistent@example.com",
"from_email": "from@example.com",
"account_id": "7b0ac663-d3f4-4d2d-9095-bc4cdd118287",
"event": "message.hard_bounce"
}
Identifier of the sending account that was used to send the email.
Custom ID that you have provided when you sent a message.
Type of the event that triggered the webhook.
Email address used in the From
header.
Unique identifier for the message.
Time at which the event happened.
Email address of the recipient.
This webhook is triggered whenever your message delivery attempt results in a soft bounce.
To the right is the example of the JSON that would be sent to your Webhook URL. Bellow is a description of all the fields.
Identifier of the sending account that was used to send the email.
Custom ID that you have provided when you sent a message.
Type of the event that triggered the webhook.
Email address used in the From
header.
Unique identifier for the message.
Time at which the event happened.
Email address of the recipient.
{
"received_at": "2020-02-24T12:15:30.617352+00:00",
"message_id": "a3045f2b-ee5c-492e-a9b9-2017b5187b01",
"custom_id": "abcd-1234",
"recipient_email": "recipient@example.com",
"from_email": "from@example.com",
"account_id": "7b0ac663-d3f4-4d2d-9095-bc4cdd118287",
"event": "message.soft_bounce"
}
To the right is the example of the JSON that would be sent to your Webhook URL. Bellow is a description of all the fields.
{
"received_at": "2020-02-24T12:15:30.617352+00:00",
"message_id": "a3045f2b-ee5c-492e-a9b9-2017b5187b01",
"custom_id": "abcd-1234",
"recipient_email": "recipient@example.com",
"from_email": "from@example.com",
"account_id": "7b0ac663-d3f4-4d2d-9095-bc4cdd118287",
"event": "message.soft_bounce"
}
Identifier of the sending account that was used to send the email.
Custom ID that you have provided when you sent a message.
Type of the event that triggered the webhook.
Email address used in the From
header.
Unique identifier for the message.
Time at which the event happened.
Email address of the recipient.
This webhook is triggered whenever your message is marked as spam by the recipient.
To the right is the example of the JSON that would be sent to your Webhook URL. Bellow is a description of all the fields.
Identifier of the sending account that was used to send the email.
Custom ID that you have provided when you sent a message.
Type of the event that triggered the webhook.
Email address used in the From
header.
Unique identifier for the message.
Time at which the event happened.
Email address of the recipient.
{
"received_at": "2020-02-24T12:15:30.617352+00:00",
"message_id": "a3045f2b-ee5c-492e-a9b9-2017b5187b01",
"custom_id": "abcd-1234",
"recipient_email": "recipient@example.com",
"from_email": "from@example.com",
"account_id": "7b0ac663-d3f4-4d2d-9095-bc4cdd118287",
"event": "message.spam_complaint"
}
To the right is the example of the JSON that would be sent to your Webhook URL. Bellow is a description of all the fields.
{
"received_at": "2020-02-24T12:15:30.617352+00:00",
"message_id": "a3045f2b-ee5c-492e-a9b9-2017b5187b01",
"custom_id": "abcd-1234",
"recipient_email": "recipient@example.com",
"from_email": "from@example.com",
"account_id": "7b0ac663-d3f4-4d2d-9095-bc4cdd118287",
"event": "message.spam_complaint"
}
Identifier of the sending account that was used to send the email.
Custom ID that you have provided when you sent a message.
Type of the event that triggered the webhook.
Email address used in the From
header.
Unique identifier for the message.
Time at which the event happened.
Email address of the recipient.
This webhook is triggered whenever the recipient uses an unsubscribe feature built into the email client they are using, e.g., Gmail's "Unsubscribe" link at the top of the message.
To the right is the example of the JSON that would be sent to your Webhook URL. Bellow is a description of all the fields.
Identifier of the sending account that was used to send the email.
Custom ID that you have provided when you sent a message.
Type of the event that triggered the webhook.
Email address used in the From
header.
The list identifier, as specified in the List-Id header.
Unique identifier for the message.
Time at which the event happened.
Email address of the recipient.
{
"received_at": "2020-02-24T12:15:30.617352+00:00",
"message_id": "a3045f2b-ee5c-492e-a9b9-2017b5187b01",
"custom_id": "abcd-1234",
"recipient_email": "recipient@example.com",
"from_email": "from@example.com",
"account_id": "7b0ac663-d3f4-4d2d-9095-bc4cdd118287",
"list_id": "company_newsletters",
"event": "message.unsubscribe"
}
To the right is the example of the JSON that would be sent to your Webhook URL. Bellow is a description of all the fields.
{
"received_at": "2020-02-24T12:15:30.617352+00:00",
"message_id": "a3045f2b-ee5c-492e-a9b9-2017b5187b01",
"custom_id": "abcd-1234",
"recipient_email": "recipient@example.com",
"from_email": "from@example.com",
"account_id": "7b0ac663-d3f4-4d2d-9095-bc4cdd118287",
"list_id": "company_newsletters",
"event": "message.unsubscribe"
}
Identifier of the sending account that was used to send the email.
Custom ID that you have provided when you sent a message.
Type of the event that triggered the webhook.
Email address used in the From
header.
The list identifier, as specified in the List-Id header.
Unique identifier for the message.
Time at which the event happened.
Email address of the recipient.
This webhook is triggered whenever your message is opened by the recipient.
To the right is the example of the JSON that would be sent to your Webhook URL. Bellow is a description of all the fields.
Identifier of the sending account that was used to send the email.
Custom ID that you have provided when you sent a message.
Type of the event that triggered the webhook.
Email address used in the From
header.
Unique identifier for the message.
Time at which the event happened.
Email address of the recipient.
The User-Agent of the browser that was used to open the message.
The IP address of the device that was used to open the message.
{
"received_at": "2020-02-24T12:15:30.617352+00:00",
"message_id": "a3045f2b-ee5c-492e-a9b9-2017b5187b01",
"custom_id": "abcd-1234",
"recipient_email": "recipient@example.com",
"from_email": "from@example.com",
"account_id": "7b0ac663-d3f4-4d2d-9095-bc4cdd118287",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36",
"user_ip": "10.10.10.10",
"event": "message.open"
}
To the right is the example of the JSON that would be sent to your Webhook URL. Bellow is a description of all the fields.
{
"received_at": "2020-02-24T12:15:30.617352+00:00",
"message_id": "a3045f2b-ee5c-492e-a9b9-2017b5187b01",
"custom_id": "abcd-1234",
"recipient_email": "recipient@example.com",
"from_email": "from@example.com",
"account_id": "7b0ac663-d3f4-4d2d-9095-bc4cdd118287",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36",
"user_ip": "10.10.10.10",
"event": "message.open"
}
Identifier of the sending account that was used to send the email.
Custom ID that you have provided when you sent a message.
Type of the event that triggered the webhook.
Email address used in the From
header.
Unique identifier for the message.
Time at which the event happened.
Email address of the recipient.
The User-Agent of the browser that was used to open the message.
The IP address of the device that was used to open the message.
This webhook is triggered whenever the recipient clicks on links in your message.
To the right is the example of the JSON that would be sent to your Webhook URL. Bellow is a description of all the fields.
Identifier of the sending account that was used to send the email.
Custom ID that you have provided when you sent a message.
Type of the event that triggered the webhook.
Email address used in the From
header.
Unique identifier for the message.
Time at which the event happened.
Email address of the recipient.
The User-Agent of the browser that was used to click on the link.
The User-Agent of the browser that was used to click on the link.
The IP address of the device that was used to open the message.
The URL that the recipient got sent to.
{
"received_at": "2020-02-24T12:15:30.617352+00:00",
"message_id": "a3045f2b-ee5c-492e-a9b9-2017b5187b01",
"custom_id": "abcd-1234",
"recipient_email": "recipient@example.com",
"from_email": "from@example.com",
"account_id": "7b0ac663-d3f4-4d2d-9095-bc4cdd118287",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36",
"user_ip": "10.10.10.10",
"tracking_url_destination": "https://example.com",
"event": "message.click"
}
To the right is the example of the JSON that would be sent to your Webhook URL. Bellow is a description of all the fields.
{
"received_at": "2020-02-24T12:15:30.617352+00:00",
"message_id": "a3045f2b-ee5c-492e-a9b9-2017b5187b01",
"custom_id": "abcd-1234",
"recipient_email": "recipient@example.com",
"from_email": "from@example.com",
"account_id": "7b0ac663-d3f4-4d2d-9095-bc4cdd118287",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36",
"user_ip": "10.10.10.10",
"tracking_url_destination": "https://example.com",
"event": "message.click"
}
Identifier of the sending account that was used to send the email.
Custom ID that you have provided when you sent a message.
Type of the event that triggered the webhook.
Email address used in the From
header.
Unique identifier for the message.
Time at which the event happened.
Email address of the recipient.
The User-Agent of the browser that was used to click on the link.
The User-Agent of the browser that was used to click on the link.
The IP address of the device that was used to open the message.
The URL that the recipient got sent to.