curl --request GET \
--url https://{dsn}/api/v1/{account_id}/drafts/{draft_id} \
--header 'X-API-KEY: <api-key>'import requests
url = "https://{dsn}/api/v1/{account_id}/drafts/{draft_id}"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://{dsn}/api/v1/{account_id}/drafts/{draft_id}', 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}/drafts/{draft_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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}/drafts/{draft_id}"
req, _ := http.NewRequest("GET", 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.get("https://{dsn}/api/v1/{account_id}/drafts/{draft_id}")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{dsn}/api/v1/{account_id}/drafts/{draft_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.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/unauthorized",
"title": "Unauthorized",
"detail": "missing or invalid API key"
}{
"status": 404,
"type": "errors/not_found",
"title": "Not found",
"detail": "email email_94a0d77db739407e932c3b97fef44aac not found"
}Get a draft
curl --request GET \
--url https://{dsn}/api/v1/{account_id}/drafts/{draft_id} \
--header 'X-API-KEY: <api-key>'import requests
url = "https://{dsn}/api/v1/{account_id}/drafts/{draft_id}"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://{dsn}/api/v1/{account_id}/drafts/{draft_id}', 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}/drafts/{draft_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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}/drafts/{draft_id}"
req, _ := http.NewRequest("GET", 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.get("https://{dsn}/api/v1/{account_id}/drafts/{draft_id}")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{dsn}/api/v1/{account_id}/drafts/{draft_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.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/unauthorized",
"title": "Unauthorized",
"detail": "missing or invalid API key"
}{
"status": 404,
"type": "errors/not_found",
"title": "Not found",
"detail": "email email_94a0d77db739407e932c3b97fef44aac not found"
}Authorizations
Your access token, from your dashboard under API keys.
Path Parameters
The account's acc_… id.
The drf_… id from creation, or the synced draft's email_… id.
Response
The draft (an Email with object Draft and its draft_id).
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.