curl --request POST \
--url https://{dsn}/api/v1/{account_id}/emails/{email_id}/read \
--header 'X-API-KEY: <api-key>'import requests
url = "https://{dsn}/api/v1/{account_id}/emails/{email_id}/read"
headers = {"X-API-KEY": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://{dsn}/api/v1/{account_id}/emails/{email_id}/read', 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://{dsn}/api/v1/{account_id}/emails/{email_id}/read",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$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://{dsn}/api/v1/{account_id}/emails/{email_id}/read"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{dsn}/api/v1/{account_id}/emails/{email_id}/read")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{dsn}/api/v1/{account_id}/emails/{email_id}/read")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"object": "Email",
"id": "<string>",
"account_id": "<string>",
"thread_id": "<string>",
"date": "2023-11-07T05:31:56Z",
"subject": "<string>",
"from_attendee": {
"identifier": "jsmith@example.com",
"display_name": "<string>",
"identifier_type": "EMAIL_ADDRESS"
},
"to_attendees": [
{
"identifier": "jsmith@example.com",
"display_name": "<string>",
"identifier_type": "EMAIL_ADDRESS"
}
],
"cc_attendees": [
{
"identifier": "jsmith@example.com",
"display_name": "<string>",
"identifier_type": "EMAIL_ADDRESS"
}
],
"bcc_attendees": [
{
"identifier": "jsmith@example.com",
"display_name": "<string>",
"identifier_type": "EMAIL_ADDRESS"
}
],
"reply_to_attendees": [
{
"identifier": "jsmith@example.com",
"display_name": "<string>",
"identifier_type": "EMAIL_ADDRESS"
}
],
"body": "<string>",
"body_plain": "<string>",
"has_attachments": true,
"attachments": [
{
"id": "<string>",
"name": "<string>",
"extension": "<string>",
"size": 123,
"mime": "<string>",
"cid": "<string>",
"inline": true
}
],
"folders": [
"<string>"
],
"is_unread": true,
"is_complete": true,
"headers": [
{
"name": "<string>",
"value": "<string>"
}
],
"origin": "api",
"is_echo": true,
"sent_by": {
"api_key_id": "<string>",
"api_key_name": "<string>",
"metadata": "<string>"
},
"tracking_id": "<string>",
"draft_id": "<string>"
}{
"status": 401,
"type": "errors/invalid_credentials",
"title": "Invalid credentials",
"detail": "the mail provider rejected the credentials: invalid_grant"
}{
"status": 404,
"type": "errors/not_found",
"title": "Not found",
"detail": "email email_94a0d77db739407e932c3b97fef44aac not found"
}{
"status": 502,
"type": "errors/provider_error",
"title": "Mail provider error",
"detail": "timed out talking to imap.example.com"
}Mark an email as read
Marks it read in the user’s mailbox (no body). Returns the email; email.update follows.
curl --request POST \
--url https://{dsn}/api/v1/{account_id}/emails/{email_id}/read \
--header 'X-API-KEY: <api-key>'import requests
url = "https://{dsn}/api/v1/{account_id}/emails/{email_id}/read"
headers = {"X-API-KEY": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://{dsn}/api/v1/{account_id}/emails/{email_id}/read', 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://{dsn}/api/v1/{account_id}/emails/{email_id}/read",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$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://{dsn}/api/v1/{account_id}/emails/{email_id}/read"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{dsn}/api/v1/{account_id}/emails/{email_id}/read")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{dsn}/api/v1/{account_id}/emails/{email_id}/read")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"object": "Email",
"id": "<string>",
"account_id": "<string>",
"thread_id": "<string>",
"date": "2023-11-07T05:31:56Z",
"subject": "<string>",
"from_attendee": {
"identifier": "jsmith@example.com",
"display_name": "<string>",
"identifier_type": "EMAIL_ADDRESS"
},
"to_attendees": [
{
"identifier": "jsmith@example.com",
"display_name": "<string>",
"identifier_type": "EMAIL_ADDRESS"
}
],
"cc_attendees": [
{
"identifier": "jsmith@example.com",
"display_name": "<string>",
"identifier_type": "EMAIL_ADDRESS"
}
],
"bcc_attendees": [
{
"identifier": "jsmith@example.com",
"display_name": "<string>",
"identifier_type": "EMAIL_ADDRESS"
}
],
"reply_to_attendees": [
{
"identifier": "jsmith@example.com",
"display_name": "<string>",
"identifier_type": "EMAIL_ADDRESS"
}
],
"body": "<string>",
"body_plain": "<string>",
"has_attachments": true,
"attachments": [
{
"id": "<string>",
"name": "<string>",
"extension": "<string>",
"size": 123,
"mime": "<string>",
"cid": "<string>",
"inline": true
}
],
"folders": [
"<string>"
],
"is_unread": true,
"is_complete": true,
"headers": [
{
"name": "<string>",
"value": "<string>"
}
],
"origin": "api",
"is_echo": true,
"sent_by": {
"api_key_id": "<string>",
"api_key_name": "<string>",
"metadata": "<string>"
},
"tracking_id": "<string>",
"draft_id": "<string>"
}{
"status": 401,
"type": "errors/invalid_credentials",
"title": "Invalid credentials",
"detail": "the mail provider rejected the credentials: invalid_grant"
}{
"status": 404,
"type": "errors/not_found",
"title": "Not found",
"detail": "email email_94a0d77db739407e932c3b97fef44aac not found"
}{
"status": 502,
"type": "errors/provider_error",
"title": "Mail provider error",
"detail": "timed out talking to imap.example.com"
}Authorizations
Your access token, from your dashboard under API keys.
Path Parameters
The account's acc_… id.
The email's email_… id.
Response
The updated email.
Email, Draft email_…; stays the same when the email moves.
The conversation; see Get a thread.
A sender or recipient of an email, as the API returns it.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
HTML body.
Show child attributes
Show child attributes
The fld_… ids of its folders; the folder's role says if it's the inbox, Sent…
Always true: large emails are stored whole too.
Every header, including Message-ID, In-Reply-To and References.
Show child attributes
Show child attributes
api: sent through this API.
api, external Sent by the mailbox owner from their own email app (in Sent, not through this API).
Sent through this API: the key it was sent with and the metadata given when sending.
Show child attributes
Show child attributes
Open/click tracking of this email (trk_…).
Drafts only.