curl "https://tawked.com/v1/email/messages?status=delivered&tag=category:order&limit=20" \
-H "Authorization: Bearer tk_live_xxxxxxxxxxxxxxxxxxxx"const res = await fetch("https://tawked.com/v1/email/messages?status=delivered&tag=category:order&limit=20", {
headers: {
Authorization: "Bearer tk_live_xxxxxxxxxxxxxxxxxxxx",
},
});
const data = await res.json();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://tawked.com/v1/email/messages",
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;
}import requests
res = requests.get(
"https://tawked.com/v1/email/messages?status=delivered&tag=category:order&limit=20",
headers={"Authorization": "Bearer tk_live_xxxxxxxxxxxxxxxxxxxx"},
)
data = res.json(){
"data": [
{
"id": "0199f1c2-7a41-7c3e-9d2b-5e8f1a2b3c4d",
"status": "delivered",
"from": {
"name": "متجر أكمي",
"address": "orders@acme.sa"
},
"to": [
"sara@example.com"
],
"cc": [
"accounts@acme.sa"
],
"bcc": [],
"reply_to": [
"support@acme.sa"
],
"subject": "طلبك رقم 1042 قيد التجهيز",
"reference": "order-1042",
"tags": [
{
"name": "category",
"value": "order"
}
],
"scheduled_at": null,
"recipients": [
{
"id": "0199f1c2-7a42-7b10-8c3d-1f2e3d4c5b6a",
"address": "sara@example.com",
"name": "Sara",
"type": "to",
"status": "delivered",
"sent_at": "2026-10-21T12:00:01+03:00",
"delivered_at": "2026-10-21T12:00:03+03:00",
"bounced_at": null,
"complained_at": null,
"delayed_at": null,
"failed_at": null,
"bounce": null,
"error": null,
"opened_at": null,
"clicked_at": null,
"opens": 0,
"clicks": 0
},
{
"id": "0199f1c2-7a42-7b10-8c3d-2a3b4c5d6e7f",
"address": "accounts@acme.sa",
"name": null,
"type": "cc",
"status": "delivered",
"sent_at": "2026-10-21T12:00:01+03:00",
"delivered_at": "2026-10-21T12:00:03+03:00",
"bounced_at": null,
"complained_at": null,
"delayed_at": null,
"failed_at": null,
"bounce": null,
"error": null,
"opened_at": null,
"clicked_at": null,
"opens": 0,
"clicks": 0
}
],
"price_halalas": 0,
"cost": {
"emails": 2,
"suppressed": 0,
"free": 2,
"billed": 0,
"halalas": "0"
},
"attachments": [],
"header_names": [
"List-Unsubscribe",
"List-Unsubscribe-Post"
],
"error": null,
"created_at": "2026-10-21T12:00:00+03:00",
"sent_at": "2026-10-21T12:00:01+03:00",
"delivered_at": "2026-10-21T12:00:03+03:00",
"bounced_at": null,
"complained_at": null,
"failed_at": null,
"canceled_at": null,
"batch_id": null,
"mode": "live",
"template": null,
"tracking": null,
"opened_at": null,
"clicked_at": null,
"opens": 0,
"clicks": 0
}
],
"has_more": true,
"next_cursor": "eyJjIjoiMjAyNi0xMC0yMVQwOTowMDowMC41MTIwMDBaIiwiaWQiOiIwMTk5ZjFjMi03YTQxIn0"
}List emails
Lists the application’s messages, newest first, in the extended shape, a page at a time: follow next_cursor while has_more is true. Only what Tawked keeps is listed: the last 30 days.
curl "https://tawked.com/v1/email/messages?status=delivered&tag=category:order&limit=20" \
-H "Authorization: Bearer tk_live_xxxxxxxxxxxxxxxxxxxx"const res = await fetch("https://tawked.com/v1/email/messages?status=delivered&tag=category:order&limit=20", {
headers: {
Authorization: "Bearer tk_live_xxxxxxxxxxxxxxxxxxxx",
},
});
const data = await res.json();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://tawked.com/v1/email/messages",
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;
}import requests
res = requests.get(
"https://tawked.com/v1/email/messages?status=delivered&tag=category:order&limit=20",
headers={"Authorization": "Bearer tk_live_xxxxxxxxxxxxxxxxxxxx"},
)
data = res.json(){
"data": [
{
"id": "0199f1c2-7a41-7c3e-9d2b-5e8f1a2b3c4d",
"status": "delivered",
"from": {
"name": "متجر أكمي",
"address": "orders@acme.sa"
},
"to": [
"sara@example.com"
],
"cc": [
"accounts@acme.sa"
],
"bcc": [],
"reply_to": [
"support@acme.sa"
],
"subject": "طلبك رقم 1042 قيد التجهيز",
"reference": "order-1042",
"tags": [
{
"name": "category",
"value": "order"
}
],
"scheduled_at": null,
"recipients": [
{
"id": "0199f1c2-7a42-7b10-8c3d-1f2e3d4c5b6a",
"address": "sara@example.com",
"name": "Sara",
"type": "to",
"status": "delivered",
"sent_at": "2026-10-21T12:00:01+03:00",
"delivered_at": "2026-10-21T12:00:03+03:00",
"bounced_at": null,
"complained_at": null,
"delayed_at": null,
"failed_at": null,
"bounce": null,
"error": null,
"opened_at": null,
"clicked_at": null,
"opens": 0,
"clicks": 0
},
{
"id": "0199f1c2-7a42-7b10-8c3d-2a3b4c5d6e7f",
"address": "accounts@acme.sa",
"name": null,
"type": "cc",
"status": "delivered",
"sent_at": "2026-10-21T12:00:01+03:00",
"delivered_at": "2026-10-21T12:00:03+03:00",
"bounced_at": null,
"complained_at": null,
"delayed_at": null,
"failed_at": null,
"bounce": null,
"error": null,
"opened_at": null,
"clicked_at": null,
"opens": 0,
"clicks": 0
}
],
"price_halalas": 0,
"cost": {
"emails": 2,
"suppressed": 0,
"free": 2,
"billed": 0,
"halalas": "0"
},
"attachments": [],
"header_names": [
"List-Unsubscribe",
"List-Unsubscribe-Post"
],
"error": null,
"created_at": "2026-10-21T12:00:00+03:00",
"sent_at": "2026-10-21T12:00:01+03:00",
"delivered_at": "2026-10-21T12:00:03+03:00",
"bounced_at": null,
"complained_at": null,
"failed_at": null,
"canceled_at": null,
"batch_id": null,
"mode": "live",
"template": null,
"tracking": null,
"opened_at": null,
"clicked_at": null,
"opens": 0,
"clicks": 0
}
],
"has_more": true,
"next_cursor": "eyJjIjoiMjAyNi0xMC0yMVQwOTowMDowMC41MTIwMDBaIiwiaWQiOiIwMTk5ZjFjMi03YTQxIn0"
}Authorizations
Authorization: Bearer . An application key (tk_live_, tk_test_) has full access, which covers every product and any product added later, or custom access, chosen when the key is created: one or more of the scopes verify:check, verify:send (includes verify:check), notifications:read, notifications:send (includes notifications:read), email:read, email:send (includes email:read), email:manage (includes email:send), webhooks:manage, email:inbound, notifications:templates (includes notifications:read), chat:menus, chat:attendant. No key made on the API keys page holds notifications:templates, full access included: the three template writes answer such a key 403 insufficient_scope. A connected app's key holds it. Nor chat:menus: the five conversation menu operations answer such a key 403 insufficient_scope, and a connected app's key holds it once the client approved it. Nor chat:attendant: the five auto-attendant operations answer such a key 403 insufficient_scope too, and a connected app's key holds it once the client approved it. email:manage and webhooks:manage are held only by a key someone chose them for: a full-access key, old or new, never holds them. email:inbound, which reads, deletes and forwards received e-mail, is opt-in on every key, full access included: a key holds it only when it was turned on when the key was created. A call outside the key's access answers 403 insufficient_scope and names the scope it needs in the WWW-Authenticate response header. A partner key (tk_partner_) always has full access. Whatever its access, a key is a server-side secret.
Query Parameters
Partner keys only: passed as a query parameter (?application=…), the partner's own id (external_id) for the application; the legacy name service is accepted identically.
1 to 100 messages a page; 20 by default.
The previous page's next_cursor.
One or more of queued, scheduled, sent, delivered, bounced, failed, canceled, separated by commas.
One address: the messages that hold it as a recipient of any kind, in any case.
Your reference, exactly.
One tag as name:value.
An ISO 8601 date and time: messages created after it.
An ISO 8601 date and time: messages created before it.