Get Email Logs
curl --request GET \
--url https://api.thepurplebox.io/v1/emails/{email_id}/logs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.thepurplebox.io/v1/emails/{email_id}/logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.thepurplebox.io/v1/emails/{email_id}/logs', 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.thepurplebox.io/v1/emails/{email_id}/logs",
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://api.thepurplebox.io/v1/emails/{email_id}/logs"
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://api.thepurplebox.io/v1/emails/{email_id}/logs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.thepurplebox.io/v1/emails/{email_id}/logs")
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{
"status": 200,
"message": "email logs retrieved successfully.",
"data": [
{
"email_id": "xxxxx",
"team_id": "xxxxx",
"status": "delivered",
"from": "hello@yourdomain.com",
"to": "user@example.com",
"subject": "Test from http client",
"response": "250 2.0.0 OK xxxxx 6a1803df08f44-882866ae38bsi47823636d6.1634 - gsmtp",
"code": "250",
"mx_hostname": "gmail-smtp-in.l.google.com",
"time": 1763491342,
"queued_at": "2025-11-18T18:42:23.494Z",
"recipient": "user@example.com",
"recipient_type": "to"
},
{
"email_id": "xxxxx",
"team_id": "xxxxx",
"status": "queued",
"from": "hello@yourdomain.com",
"to": "user@example.com",
"subject": "Test from http client",
"response": "250 Message queued as xxxxx",
"code": "250",
"mx_hostname": "",
"time": 1763491343,
"queued_at": "2025-11-18T18:42:23Z",
"recipient": "user@example.com",
"recipient_type": "to"
},
{
"email_id": "xxxxx",
"team_id": "xxxxx",
"status": "processing",
"from": "hello@yourdomain.com",
"to": "user@example.com",
"subject": "Test from http client",
"response": "250 2.0.0 Ok: queued as xxxxx",
"code": "250",
"mx_hostname": "",
"time": 1763491341,
"queued_at": "",
"recipient": "user@example.com",
"recipient_type": "to"
}
]
}
Emails
Get Email Logs
Retrieve delivery logs for a specific email, showing its journey through the sending process.
GET
/
v1
/
emails
/
{email_id}
/
logs
Get Email Logs
curl --request GET \
--url https://api.thepurplebox.io/v1/emails/{email_id}/logs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.thepurplebox.io/v1/emails/{email_id}/logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.thepurplebox.io/v1/emails/{email_id}/logs', 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.thepurplebox.io/v1/emails/{email_id}/logs",
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://api.thepurplebox.io/v1/emails/{email_id}/logs"
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://api.thepurplebox.io/v1/emails/{email_id}/logs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.thepurplebox.io/v1/emails/{email_id}/logs")
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{
"status": 200,
"message": "email logs retrieved successfully.",
"data": [
{
"email_id": "xxxxx",
"team_id": "xxxxx",
"status": "delivered",
"from": "hello@yourdomain.com",
"to": "user@example.com",
"subject": "Test from http client",
"response": "250 2.0.0 OK xxxxx 6a1803df08f44-882866ae38bsi47823636d6.1634 - gsmtp",
"code": "250",
"mx_hostname": "gmail-smtp-in.l.google.com",
"time": 1763491342,
"queued_at": "2025-11-18T18:42:23.494Z",
"recipient": "user@example.com",
"recipient_type": "to"
},
{
"email_id": "xxxxx",
"team_id": "xxxxx",
"status": "queued",
"from": "hello@yourdomain.com",
"to": "user@example.com",
"subject": "Test from http client",
"response": "250 Message queued as xxxxx",
"code": "250",
"mx_hostname": "",
"time": 1763491343,
"queued_at": "2025-11-18T18:42:23Z",
"recipient": "user@example.com",
"recipient_type": "to"
},
{
"email_id": "xxxxx",
"team_id": "xxxxx",
"status": "processing",
"from": "hello@yourdomain.com",
"to": "user@example.com",
"subject": "Test from http client",
"response": "250 2.0.0 Ok: queued as xxxxx",
"code": "250",
"mx_hostname": "",
"time": 1763491341,
"queued_at": "",
"recipient": "user@example.com",
"recipient_type": "to"
}
]
}
Headers
string
application/jsonPath Parameters
string
required
The unique identifier of the email to retrieve logs for.
Response
number
HTTP status code. Returns
200 when logs are retrieved successfully.string
A human-readable message describing the result of the operation.
array
Array of log entries in chronological order, tracking the email’s delivery status.
Show properties
Show properties
string
The email identifier this log entry belongs to.
string
The team ID that owns this email.
string
Status at this point in delivery. Possible values:
processing, queued, delivered, failed, bounced, complaint.string
Sender email address.
string
Recipient email address for this log entry.
string
Email subject line.
string
SMTP server response message. Contains detailed information from the receiving mail server.
string
SMTP response code (e.g.,
250 for success, 550 for rejection).string
The MX hostname of the receiving mail server. Empty during initial processing stages.
number
Unix timestamp of when this log entry was created.
string
ISO 8601 timestamp when the email was queued at this stage. May be empty for initial processing.
string
The recipient email address.
string
Type of recipient. Possible values:
to, cc, bcc.{
"status": 200,
"message": "email logs retrieved successfully.",
"data": [
{
"email_id": "xxxxx",
"team_id": "xxxxx",
"status": "delivered",
"from": "hello@yourdomain.com",
"to": "user@example.com",
"subject": "Test from http client",
"response": "250 2.0.0 OK xxxxx 6a1803df08f44-882866ae38bsi47823636d6.1634 - gsmtp",
"code": "250",
"mx_hostname": "gmail-smtp-in.l.google.com",
"time": 1763491342,
"queued_at": "2025-11-18T18:42:23.494Z",
"recipient": "user@example.com",
"recipient_type": "to"
},
{
"email_id": "xxxxx",
"team_id": "xxxxx",
"status": "queued",
"from": "hello@yourdomain.com",
"to": "user@example.com",
"subject": "Test from http client",
"response": "250 Message queued as xxxxx",
"code": "250",
"mx_hostname": "",
"time": 1763491343,
"queued_at": "2025-11-18T18:42:23Z",
"recipient": "user@example.com",
"recipient_type": "to"
},
{
"email_id": "xxxxx",
"team_id": "xxxxx",
"status": "processing",
"from": "hello@yourdomain.com",
"to": "user@example.com",
"subject": "Test from http client",
"response": "250 2.0.0 Ok: queued as xxxxx",
"code": "250",
"mx_hostname": "",
"time": 1763491341,
"queued_at": "",
"recipient": "user@example.com",
"recipient_type": "to"
}
]
}
⌘I