curl --request GET \
--url https://api.instantly.ai/api/v2/emails \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.instantly.ai/api/v2/emails"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.instantly.ai/api/v2/emails', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.get("https://api.instantly.ai/api/v2/emails")
.header("Authorization", "Bearer <token>")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.instantly.ai/api/v2/emails",
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.instantly.ai/api/v2/emails"
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))
}{
"items": [
{
"id": "01a082d0-3345-759f-8827-15cde2fb3098",
"timestamp_created": "2026-09-08T20:57:57.829Z",
"timestamp_email": "2026-09-08T20:57:57.829Z",
"message_id": "<example123@mail.gmail.com>",
"subject": "Re: Your inquiry",
"to_address_email_list": "recipient@example.com",
"body": {
"text": "This is a test email",
"html": "This is a test email.<br/><br/>Second line."
},
"organization_id": "01a082d0-3345-759f-8827-15ce44bcbb6e",
"eaccount": "eaccount-123",
"from_address_email": "sender@example.com",
"cc_address_email_list": "cc@example.com",
"bcc_address_email_list": "bcc@example.com",
"reply_to": "replyto@example.com",
"campaign_id": "01a082d0-3345-759f-8827-15cfbac90c3d",
"subsequence_id": "01a082d0-3345-759f-8827-15d018642b02",
"list_id": "01a082d0-3345-759f-8827-15d10a4c02cb",
"lead": "jondoe@example.com",
"lead_id": "01a082d0-3345-759f-8827-15d2b1971ebd",
"ue_type": 3,
"step": "step-123",
"is_unread": 1,
"is_auto_reply": 0,
"reminder_ts": "2026-09-08T20:57:57.829Z",
"ai_interest_value": 0.75,
"ai_assisted": 1,
"is_focused": 1,
"i_status": 0,
"thread_id": "01a082d0-3345-759f-8827-15d3cfa4c356",
"content_preview": "This is a preview of the email content.",
"attachment_json": {
"files": [
{
"filename": "attachment",
"size": 1927,
"type": "text/css",
"url": "https://cdn.instantly.ai/example-attachment/",
"error": null
}
]
},
"from_address_json": "<array>",
"to_address_json": "<array>",
"cc_address_json": "<array>",
"ai_agent_id": "01a082d0-3345-759f-8827-15d494912790"
}
],
"next_starting_after": "01a082d0-83d7-7237-8ee7-16a35cdb8268"
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Missing Authorization header"
}{
"statusCode": 402,
"error": "Payment Required",
"message": "Workspace does not have an active paid plan"
}{
"statusCode": 404,
"error": "Not Found",
"message": "Resource not found"
}{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Rate limit exceeded"
}List email
Rate Limit: This endpoint has a rate limit of 20 requests per minute, unlike other API endpoints.
Requires one of the following scopes: emails:read, emails:all, all:read, all:all
curl --request GET \
--url https://api.instantly.ai/api/v2/emails \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.instantly.ai/api/v2/emails"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.instantly.ai/api/v2/emails', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.get("https://api.instantly.ai/api/v2/emails")
.header("Authorization", "Bearer <token>")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.instantly.ai/api/v2/emails",
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.instantly.ai/api/v2/emails"
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))
}{
"items": [
{
"id": "01a082d0-3345-759f-8827-15cde2fb3098",
"timestamp_created": "2026-09-08T20:57:57.829Z",
"timestamp_email": "2026-09-08T20:57:57.829Z",
"message_id": "<example123@mail.gmail.com>",
"subject": "Re: Your inquiry",
"to_address_email_list": "recipient@example.com",
"body": {
"text": "This is a test email",
"html": "This is a test email.<br/><br/>Second line."
},
"organization_id": "01a082d0-3345-759f-8827-15ce44bcbb6e",
"eaccount": "eaccount-123",
"from_address_email": "sender@example.com",
"cc_address_email_list": "cc@example.com",
"bcc_address_email_list": "bcc@example.com",
"reply_to": "replyto@example.com",
"campaign_id": "01a082d0-3345-759f-8827-15cfbac90c3d",
"subsequence_id": "01a082d0-3345-759f-8827-15d018642b02",
"list_id": "01a082d0-3345-759f-8827-15d10a4c02cb",
"lead": "jondoe@example.com",
"lead_id": "01a082d0-3345-759f-8827-15d2b1971ebd",
"ue_type": 3,
"step": "step-123",
"is_unread": 1,
"is_auto_reply": 0,
"reminder_ts": "2026-09-08T20:57:57.829Z",
"ai_interest_value": 0.75,
"ai_assisted": 1,
"is_focused": 1,
"i_status": 0,
"thread_id": "01a082d0-3345-759f-8827-15d3cfa4c356",
"content_preview": "This is a preview of the email content.",
"attachment_json": {
"files": [
{
"filename": "attachment",
"size": 1927,
"type": "text/css",
"url": "https://cdn.instantly.ai/example-attachment/",
"error": null
}
]
},
"from_address_json": "<array>",
"to_address_json": "<array>",
"cc_address_json": "<array>",
"ai_agent_id": "01a082d0-3345-759f-8827-15d494912790"
}
],
"next_starting_after": "01a082d0-83d7-7237-8ee7-16a35cdb8268"
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Missing Authorization header"
}{
"statusCode": 402,
"error": "Payment Required",
"message": "Workspace does not have an active paid plan"
}{
"statusCode": 404,
"error": "Not Found",
"message": "Resource not found"
}{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Rate limit exceeded"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
The number of items to return
1 <= x <= 10010
The ID of the last item in the previous page - used for pagination. You can use the value of the next_starting_after field from the previous response.
"01956fbd-0eb1-72db-a565-82977a586084"
The search query to filter emails. It can be an email address (the lead email address), or a special string that starts with "thread:" to search for emails in a specific thread. If you want to search for emails in a specific thread, use the "thread:" prefix followed by the thread ID (e.g., "thread:123e4567-e89b-12d3-a456-426614174000").
"search term"
The ID of the campaign to filter emails by.
"123e4567-e89b-12d3-a456-426614174000"
The ID of the lead list to filter emails by.
"123e4567-e89b-12d3-a456-426614174000"
The status of the emails to filter by.
1
The email account that was used to send this email. You can filter by multiple email accounts by providing a comma-separated list of email addresses.
"jon@example.com"
Whether the email is unread.
true
true
The mode to filter emails by.
emode_focused, emode_others, emode_all "emode_focused"
Whether to only return the preview of the emails.
true
The order to sort the emails by (based on the email creation date). Default is "desc".
asc, desc "asc"
Whether to only return the scheduled emails.
true
The ID of the user to filter emails by.
"123e4567-e89b-12d3-a456-426614174000"
The email of the lead to filter emails by.
"jondoe@example.com"
The domain of the company to filter emails by.
"example.com"
Whether the email is marked as done.
true
The type of the email to filter by.
received, sent, manual "received"
Filter emails created after this timestamp (ISO format)
"2026-09-08T20:58:18.455Z"
Filter emails created before this timestamp (ISO format)
"2026-09-08T20:58:18.455Z"
Whether to only return the latest email in each thread.
true
Response
The list of Email
The list of Email
Show child attributes
Show child attributes
The filter for getting the next items after this one, this could either be a UUID, a timestamp, on an email depending on the specific API
"01a082d0-83d7-7237-8ee7-16a35cdb8268"
"2026-09-08T20:58:18.455Z"