curl --request GET \
--url https://app.lettr.com/api/emails/events \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.lettr.com/api/emails/events"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.lettr.com/api/emails/events', 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://app.lettr.com/api/emails/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://app.lettr.com/api/emails/events"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.lettr.com/api/emails/events")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.lettr.com/api/emails/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"message": "Email events retrieved successfully.",
"data": {
"events": {
"data": [
{
"event_id": "event-delivery-1",
"type": "delivery",
"timestamp": "2024-01-15T10:31:00.000Z",
"request_id": "12345678901234567890",
"rcpt_to": "recipient@example.com",
"raw_rcpt_to": "recipient@example.com",
"recipient_domain": "example.com",
"mailbox_provider": "Gmail",
"mailbox_provider_region": "Global",
"subject": "Welcome to Lettr",
"friendly_from": "sender@example.com",
"queue_time": 500
},
{
"event_id": "event-bounce-1",
"type": "bounce",
"timestamp": "2024-01-15T10:32:00.000Z",
"request_id": "12345678901234567891",
"rcpt_to": "bounced@example.com",
"raw_rcpt_to": "bounced@example.com",
"recipient_domain": "example.com",
"mailbox_provider": "Gmail",
"mailbox_provider_region": "Global",
"subject": "Welcome to Lettr",
"bounce_class": 10,
"error_code": "550",
"reason": "User unknown"
}
],
"total_count": 2,
"from": "2024-01-05T00:00:00+00:00",
"to": "2024-01-15T10:35:00+00:00",
"pagination": {
"next_cursor": null,
"per_page": 25
}
}
}
}List Email Events
Retrieve email events (deliveries, bounces, opens, clicks, etc.) for your account. Events are returned in reverse chronological order. If no from date is provided, defaults to the last 10 days.
curl --request GET \
--url https://app.lettr.com/api/emails/events \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.lettr.com/api/emails/events"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.lettr.com/api/emails/events', 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://app.lettr.com/api/emails/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://app.lettr.com/api/emails/events"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.lettr.com/api/emails/events")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.lettr.com/api/emails/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"message": "Email events retrieved successfully.",
"data": {
"events": {
"data": [
{
"event_id": "event-delivery-1",
"type": "delivery",
"timestamp": "2024-01-15T10:31:00.000Z",
"request_id": "12345678901234567890",
"rcpt_to": "recipient@example.com",
"raw_rcpt_to": "recipient@example.com",
"recipient_domain": "example.com",
"mailbox_provider": "Gmail",
"mailbox_provider_region": "Global",
"subject": "Welcome to Lettr",
"friendly_from": "sender@example.com",
"queue_time": 500
},
{
"event_id": "event-bounce-1",
"type": "bounce",
"timestamp": "2024-01-15T10:32:00.000Z",
"request_id": "12345678901234567891",
"rcpt_to": "bounced@example.com",
"raw_rcpt_to": "bounced@example.com",
"recipient_domain": "example.com",
"mailbox_provider": "Gmail",
"mailbox_provider_region": "Global",
"subject": "Welcome to Lettr",
"bounce_class": 10,
"error_code": "550",
"reason": "User unknown"
}
],
"total_count": 2,
"from": "2024-01-05T00:00:00+00:00",
"to": "2024-01-15T10:35:00+00:00",
"pagination": {
"next_cursor": null,
"per_page": 25
}
}
}
}Authorizations
API key for authentication
Query Parameters
Comma-separated list of event types to filter by. Valid types: injection, delivery, bounce, delay, out_of_band, spam_complaint, policy_rejection, click, open, initial_open, amp_click, amp_open, amp_initial_open, generation_failure, generation_rejection, list_unsubscribe, link_unsubscribe.
injection, delivery, bounce, delay, out_of_band, spam_complaint, policy_rejection, click, open, initial_open, amp_click, amp_open, amp_initial_open, generation_failure, generation_rejection, list_unsubscribe, link_unsubscribe Comma-separated list of recipient email addresses to filter by.
Start of the event search range (ISO 8601, inclusive). Defaults to 10 days ago. Events are kept for about 10 days, so an earlier date is pulled forward; from in the response shows the window actually covered.
"2024-01-01"
End of the event search range (ISO 8601, exclusive). Defaults to now. Must be after from, otherwise the request fails with a 422.
"2024-01-31"
Number of events per page.
1 <= x <= 10025
Pagination cursor: the next_cursor value from the previous response. Any other value fails with a 422.
Filter events by transmission ID (request_id).
"12345678901234567890"
Comma-separated list of bounce classification codes to filter by.
"10,30"
Was this page helpful?