Get sending health and deliverability limits
/v1/email/healthconst health = await bird.email.health({ from: "2026-05-01", to: "2026-05-31" });
console.log(health.status);
for (const signal of health.signals) {
console.log(signal.metric, signal.value, signal.status);
}health = client.email.health(from_="2026-05-01", to="2026-05-31")
print(health.status)
for signal in health.signals:
print(signal.metric, signal.value, signal.status)health, err := client.Email.Health(context.Background(), bird.EmailHealthParams{
From: time.Now().AddDate(0, 0, -30),
To: time.Now(),
})
if err != nil {
log.Fatal(err)
}
fmt.Println(*health.Status)
for _, signal := range *health.Signals {
fmt.Println(*signal.Metric, *signal.Status)
}$health = $bird->email->health(['from' => '2026-05-01', 'to' => '2026-05-31']);
echo $health->getStatus(), "\n";
foreach ($health->getSignals() ?? [] as $signal) {
echo $signal->getMetric(), ' ', $signal->getValue(), ' ', $signal->getStatus(), "\n";
}bird email healthcurl -X GET "https://us1.platform.bird.com/v1/email/health" \
-H "Authorization: Bearer $TOKEN"{
"period": {
"data_as_of": null,
"from": "2026-05-25",
"to": "2026-06-01"
},
"status": "watching",
"signals": [
{
"metric": "delivery_rate",
"value": 0.995,
"limit": null,
"status": "healthy",
"thresholds": {
"direction": "below",
"throttled": 0.984,
"watching": 0.99
}
},
{
"metric": "open_rate",
"value": 0.20100503,
"limit": null,
"status": "healthy"
},
{
"metric": "bounce_rate",
"value": 0.005,
"limit": 0.005,
"status": "watching",
"thresholds": {
"direction": "above",
"throttled": 0.006,
"watching": 0.004
}
},
{
"metric": "complaint_rate",
"value": 0.00010050251,
"limit": 0.003,
"status": "healthy",
"thresholds": {
"direction": "above",
"throttled": 0.001,
"watching": 0.0006
}
}
]
}
Returns your workspace's sending-health verdict for the requested window, together with reference deliverability limits and the boundaries used to classify risk. Use it to render a health badge, label the bounce-rate and complaint-rate limits, and draw the risk lines on a deliverability chart without hard-coding thresholds that we may retune.
The overall status is healthy, watching, or throttled, taken as the worst of the delivery-rate, bounce-rate, and complaint-rate signals. It describes deliverability risk and never pauses your sending on its own. For the counts and rates the verdict is derived from, call Get aggregate email statistics over the same window.
Rates follow each event's occurrence time. A bounce or complaint that occurred during the window counts toward it even when the message was sent earlier. When you omit both dates the window ends today (UTC) and starts 7 days earlier. A window longer than 365 days returns 422.
Queryparameters
fromstringStart date (inclusive) in YYYY-MM-DD, UTC. Defaults to 7 days before to when omitted.
tostringEnd date (inclusive) in YYYY-MM-DD, UTC. Defaults to today (UTC) when omitted. Window may not exceed 365 days. Day boundaries are always UTC; unlike the statistics reads, this one takes no timezone.
Response Payload
periodThe date range the verdict was computed over, echoed back from the request.
statusOverall sending-health verdict for the window, taken as the worst status among the bounce-rate, complaint-rate, and delivery-rate signals. The open-rate signal, which can be strong, is not part of this roll-up. The overall verdict is one of healthy, watching, or throttled. It is healthy when the other three signals are each healthy or better. It is watching when at least one is watching, and throttled when at least one is throttled. This verdict describes deliverability risk. It never pauses your sending on its own.
Possible values: healthy, watching, throttled
signalsThe per-rate signals include delivery_rate, open_rate, bounce_rate, and complaint_rate. Read a signal by matching on its metric. Each entry carries its current value, a reference deliverability limit (null where no limit applies), and its own verdict. Delivery rate, bounce rate, and complaint rate also carry the thresholds their verdict was classified against; open rate does not, because a high open rate is never a risk.
Onderliggende attributen tonen
signals.metricWhich rate this signal reports.
Possible values: delivery_rate, open_rate, bounce_rate, complaint_rate
signals.valueThe current rate over the window, as a fraction. Null when its denominator is zero.
signals.limitThe reference deliverability limit for this rate, as a fraction (for example 0.005 for a 0.5% bounce-rate limit). Null for metrics that have no limit, such as delivery rate and open rate. The verdict is classified using thresholds, which can differ from this reference limit.
signals.statusThis metric's individual verdict, ordered best to worst: strong, healthy, watching, throttled. strong applies only to open_rate, for an open rate well above typical. For the other rates, healthy, watching, and throttled indicate how close the rate is to a level that risks deliverability. The verdict follows the thresholds boundaries rather than the displayed reference limit. A signal whose value is null, because its denominator was zero in the window, is reported as healthy.
Possible values: strong, healthy, watching, throttled
signals.thresholdsGerelateerde bronnen
Ga verder met de documentatie, handleidingen en voorbeelden voor dit onderwerp.