curl --request GET \
--url https://api.sendpost.io/api/v1/account/webhook \
--header 'X-Account-ApiKey: <api-key>'import requests
url = "https://api.sendpost.io/api/v1/account/webhook"
headers = {"X-Account-ApiKey": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Account-ApiKey': '<api-key>'}};
fetch('https://api.sendpost.io/api/v1/account/webhook', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sendpost.io/api/v1/account/webhook",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Account-ApiKey: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sendpost.io/api/v1/account/webhook"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Account-ApiKey", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sendpost.io/api/v1/account/webhook")
.header("X-Account-ApiKey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sendpost.io/api/v1/account/webhook")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Account-ApiKey"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"id": 117,
"enabled": true,
"url": "https://app.hooli.com/api/webhooks/sendpost",
"processed": false,
"sent": false,
"dropped": true,
"smtpDropped": false,
"delivered": true,
"softBounced": true,
"hardBounced": true,
"opened": true,
"clicked": true,
"unsubscribed": true,
"spam": true,
"uniqueOpen": false,
"uniqueClick": false,
"created": 1704067200000000000,
"status": "active",
"disabledAt": 0,
"disabledReason": "",
"successRate": 99.5
}
]List Webhooks
Retrieve all configured webhooks for your account. Webhooks enable real-time notifications when email events occur, allowing you to build reactive applications.
Supported Events:
| Event | Description |
|---|---|
processed | Email accepted and queued for delivery |
dropped | Email blocked (suppressed, invalid, policy) |
delivered | Email successfully delivered to recipient |
hardBounced | Permanent delivery failure |
softBounced | Temporary delivery failure |
opened | Recipient opened the email (all opens) |
uniqueOpened | First open per recipient only |
clicked | Recipient clicked a link (all clicks) |
uniqueClicked | First click per recipient only |
unsubscribed | Recipient unsubscribed |
spam | Recipient marked email as spam |
Use Cases:
- Audit configured webhook endpoints
- Verify webhook URLs are correct
- Review enabled events per webhook
- Debug webhook delivery issues
curl --request GET \
--url https://api.sendpost.io/api/v1/account/webhook \
--header 'X-Account-ApiKey: <api-key>'import requests
url = "https://api.sendpost.io/api/v1/account/webhook"
headers = {"X-Account-ApiKey": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Account-ApiKey': '<api-key>'}};
fetch('https://api.sendpost.io/api/v1/account/webhook', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sendpost.io/api/v1/account/webhook",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Account-ApiKey: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sendpost.io/api/v1/account/webhook"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Account-ApiKey", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sendpost.io/api/v1/account/webhook")
.header("X-Account-ApiKey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sendpost.io/api/v1/account/webhook")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Account-ApiKey"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"id": 117,
"enabled": true,
"url": "https://app.hooli.com/api/webhooks/sendpost",
"processed": false,
"sent": false,
"dropped": true,
"smtpDropped": false,
"delivered": true,
"softBounced": true,
"hardBounced": true,
"opened": true,
"clicked": true,
"unsubscribed": true,
"spam": true,
"uniqueOpen": false,
"uniqueClick": false,
"created": 1704067200000000000,
"status": "active",
"disabledAt": 0,
"disabledReason": "",
"successRate": 99.5
}
]Authorizations
This api key can be used for all account level operations
Query Parameters
Number of records to return per request. Default 20.
10
Number of initial records to skip for pagination.
0
Case insensitive search against webhook URLs.
"api.yoursite.com"
Response
List of configured webhooks, each with its delivery success rate.
Unique identifier for the webhook configuration
117
Whether the webhook is active. When false, no events will be sent to this webhook. Useful for temporarily pausing notifications during maintenance.
true
HTTPS endpoint URL to receive webhook POST requests. Must be publicly accessible and return 2xx status code.
"https://app.hooli.com/api/webhooks/sendpost"
Trigger webhook when an email is accepted for processing. Fires immediately when API call is successful.
true
Trigger webhook when an email is sent to the recipient's mail server. Indicates the email left SendPost's infrastructure.
true
Trigger webhook when an email is dropped before sending. Common reasons: suppressed address, invalid email, unverified domain.
true
Trigger webhook when an email is dropped at SMTP level. Usually due to policy rejection by receiving server.
false
Trigger webhook when an email is successfully delivered. Note: "Delivered" means accepted by mail server, not inbox placement.
true
Trigger webhook on temporary delivery failure (soft bounce). SendPost will retry delivery automatically.
true
Trigger webhook on permanent delivery failure (hard bounce). The recipient is automatically added to suppression list.
true
Trigger webhook when recipient opens the email. Fires on every open (can fire multiple times per email).
true
Trigger webhook when recipient clicks a link. Fires on every click (can fire multiple times per email).
true
Trigger webhook when recipient clicks the unsubscribe link. The recipient is automatically added to suppression list.
true
Trigger webhook when recipient marks email as spam. The recipient is automatically added to suppression list. Monitor this closely - high spam rates damage sender reputation.
true
Trigger webhook only on the first open of an email (unique opens). Use this instead of 'opened' if you only care about unique engagement.
false
Trigger webhook only on the first click of an email (unique clicks). Use this instead of 'clicked' if you only care about unique engagement.
false
Health status of the webhook (read-only):
active- delivering normallydegraded- recent delivery failuresdisabled- auto-disabled after repeated consecutive failures
active, degraded, disabled "active"
UNIX epoch timestamp in nanoseconds when the webhook was auto-disabled (0 if never). Read-only.
0
Human-readable reason the webhook was auto-disabled (empty if active). Read-only.
""
UNIX epoch timestamp in nanoseconds when the webhook was created
1704067200000000000
Percentage of webhook deliveries that succeeded (2xx responses) over the recent measurement window. Ranges from 0 to 100.
99.5
Was this page helpful?