curl --request POST \
--url https://api.decodahealth.com/email/drafts \
--header 'API-KEY: <api-key>' \
--header 'Content-Type: application/json' \
--header 'TENANT: <api-key>' \
--data '
{
"to": [],
"cc": [],
"bcc": [],
"subject": "<string>",
"bodyHtml": "<string>",
"bodyText": "<string>",
"threadId": "<string>",
"parentMessageId": "<string>"
}
'import requests
url = "https://api.decodahealth.com/email/drafts"
payload = {
"to": [],
"cc": [],
"bcc": [],
"subject": "<string>",
"bodyHtml": "<string>",
"bodyText": "<string>",
"threadId": "<string>",
"parentMessageId": "<string>"
}
headers = {
"TENANT": "<api-key>",
"API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
TENANT: '<api-key>',
'API-KEY': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: [],
cc: [],
bcc: [],
subject: '<string>',
bodyHtml: '<string>',
bodyText: '<string>',
threadId: '<string>',
parentMessageId: '<string>'
})
};
fetch('https://api.decodahealth.com/email/drafts', 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.decodahealth.com/email/drafts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'to' => [
],
'cc' => [
],
'bcc' => [
],
'subject' => '<string>',
'bodyHtml' => '<string>',
'bodyText' => '<string>',
'threadId' => '<string>',
'parentMessageId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"API-KEY: <api-key>",
"Content-Type: application/json",
"TENANT: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.decodahealth.com/email/drafts"
payload := strings.NewReader("{\n \"to\": [],\n \"cc\": [],\n \"bcc\": [],\n \"subject\": \"<string>\",\n \"bodyHtml\": \"<string>\",\n \"bodyText\": \"<string>\",\n \"threadId\": \"<string>\",\n \"parentMessageId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("TENANT", "<api-key>")
req.Header.Add("API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.decodahealth.com/email/drafts")
.header("TENANT", "<api-key>")
.header("API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"to\": [],\n \"cc\": [],\n \"bcc\": [],\n \"subject\": \"<string>\",\n \"bodyHtml\": \"<string>\",\n \"bodyText\": \"<string>\",\n \"threadId\": \"<string>\",\n \"parentMessageId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.decodahealth.com/email/drafts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["TENANT"] = '<api-key>'
request["API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"to\": [],\n \"cc\": [],\n \"bcc\": [],\n \"subject\": \"<string>\",\n \"bodyHtml\": \"<string>\",\n \"bodyText\": \"<string>\",\n \"threadId\": \"<string>\",\n \"parentMessageId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"threadId": "<string>",
"subject": "<string>",
"bodyText": "<string>",
"bodyHtml": "<string>",
"snippet": "<string>",
"status": "DRAFT",
"direction": "INBOUND",
"sentDate": "2023-11-07T05:31:56Z",
"deliveredDate": "2023-11-07T05:31:56Z",
"isRead": true,
"isStarred": true,
"isDraft": true,
"createdDate": "2023-11-07T05:31:56Z",
"updatedDate": "2023-11-07T05:31:56Z",
"messageType": "CUSTOM",
"draftKind": "NEW",
"sentBy": {
"id": "<string>",
"name": "<string>"
},
"participants": [],
"attachments": [],
"openCount": 0,
"uniqueOpenCount": 0,
"clickCount": 0,
"uniqueClickCount": 0,
"firstOpenedDate": "2023-11-07T05:31:56Z",
"lastOpenedDate": "2023-11-07T05:31:56Z"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Create Draft
Create a new draft email.
curl --request POST \
--url https://api.decodahealth.com/email/drafts \
--header 'API-KEY: <api-key>' \
--header 'Content-Type: application/json' \
--header 'TENANT: <api-key>' \
--data '
{
"to": [],
"cc": [],
"bcc": [],
"subject": "<string>",
"bodyHtml": "<string>",
"bodyText": "<string>",
"threadId": "<string>",
"parentMessageId": "<string>"
}
'import requests
url = "https://api.decodahealth.com/email/drafts"
payload = {
"to": [],
"cc": [],
"bcc": [],
"subject": "<string>",
"bodyHtml": "<string>",
"bodyText": "<string>",
"threadId": "<string>",
"parentMessageId": "<string>"
}
headers = {
"TENANT": "<api-key>",
"API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
TENANT: '<api-key>',
'API-KEY': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: [],
cc: [],
bcc: [],
subject: '<string>',
bodyHtml: '<string>',
bodyText: '<string>',
threadId: '<string>',
parentMessageId: '<string>'
})
};
fetch('https://api.decodahealth.com/email/drafts', 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.decodahealth.com/email/drafts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'to' => [
],
'cc' => [
],
'bcc' => [
],
'subject' => '<string>',
'bodyHtml' => '<string>',
'bodyText' => '<string>',
'threadId' => '<string>',
'parentMessageId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"API-KEY: <api-key>",
"Content-Type: application/json",
"TENANT: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.decodahealth.com/email/drafts"
payload := strings.NewReader("{\n \"to\": [],\n \"cc\": [],\n \"bcc\": [],\n \"subject\": \"<string>\",\n \"bodyHtml\": \"<string>\",\n \"bodyText\": \"<string>\",\n \"threadId\": \"<string>\",\n \"parentMessageId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("TENANT", "<api-key>")
req.Header.Add("API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.decodahealth.com/email/drafts")
.header("TENANT", "<api-key>")
.header("API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"to\": [],\n \"cc\": [],\n \"bcc\": [],\n \"subject\": \"<string>\",\n \"bodyHtml\": \"<string>\",\n \"bodyText\": \"<string>\",\n \"threadId\": \"<string>\",\n \"parentMessageId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.decodahealth.com/email/drafts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["TENANT"] = '<api-key>'
request["API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"to\": [],\n \"cc\": [],\n \"bcc\": [],\n \"subject\": \"<string>\",\n \"bodyHtml\": \"<string>\",\n \"bodyText\": \"<string>\",\n \"threadId\": \"<string>\",\n \"parentMessageId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"threadId": "<string>",
"subject": "<string>",
"bodyText": "<string>",
"bodyHtml": "<string>",
"snippet": "<string>",
"status": "DRAFT",
"direction": "INBOUND",
"sentDate": "2023-11-07T05:31:56Z",
"deliveredDate": "2023-11-07T05:31:56Z",
"isRead": true,
"isStarred": true,
"isDraft": true,
"createdDate": "2023-11-07T05:31:56Z",
"updatedDate": "2023-11-07T05:31:56Z",
"messageType": "CUSTOM",
"draftKind": "NEW",
"sentBy": {
"id": "<string>",
"name": "<string>"
},
"participants": [],
"attachments": [],
"openCount": 0,
"uniqueOpenCount": 0,
"clickCount": 0,
"uniqueClickCount": 0,
"firstOpenedDate": "2023-11-07T05:31:56Z",
"lastOpenedDate": "2023-11-07T05:31:56Z"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
The tenant you are making this request on behalf of
Your api key
Body
Request to create a draft email.
Recipient email addresses
CC recipients
BCC recipients
Reply to existing thread
Parent message for reply
How the draft was composed (NEW/REPLY/FORWARD)
NEW, REPLY, FORWARD Response
Successful Response
Email message in API responses.
Status of an email message through its lifecycle.
DRAFT, QUEUED, SENDING, SENT, DELIVERED, RECEIVED, FAILED, BOUNCED, COMPLAINED Direction of an email message.
INBOUND, OUTBOUND Type of email message.
CUSTOM, INVOICE, TENANT_CREATED, PROVIDER_INVITE, PURCHASE_ORDER, RECEIPT, NOTIFICATION, WEBHOOK_FAILED, FORM, BLAST, OUTREACH How a draft was composed, so it resumes in the matching composer.
Only meaningful for DRAFT-status messages (NULL otherwise). REPLY/FORWARD drafts live inside an existing thread; a FORWARD draft must reopen in the forward composer (new thread, no in-reply-to) rather than as a reply.
NEW, REPLY, FORWARD The staff member who sent an email, for internal attribution.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes

