Emails
Update an email draft
Updates the content of an existing email draft and optionally schedules it for sending. The contact and sender account are resolved from the existing draft.
PUT
/
emails
/
{id}
Update an email draft
curl --request PUT \
--url https://api.seamless.ai/api/client/v2/emails/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"subject": "Updated subject",
"body": "Updated body content...",
"to": "prospect@example.com",
"cc": "manager@example.com",
"bcc": "archive@acme.com",
"scheduleAt": "2026-07-01T15:00:00.000Z"
}
'import requests
url = "https://api.seamless.ai/api/client/v2/emails/{id}"
payload = {
"subject": "Updated subject",
"body": "Updated body content...",
"to": "prospect@example.com",
"cc": "manager@example.com",
"bcc": "archive@acme.com",
"scheduleAt": "2026-07-01T15:00:00.000Z"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
subject: 'Updated subject',
body: JSON.stringify('Updated body content...'),
to: 'prospect@example.com',
cc: 'manager@example.com',
bcc: 'archive@acme.com',
scheduleAt: '2026-07-01T15:00:00.000Z'
})
};
fetch('https://api.seamless.ai/api/client/v2/emails/{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://api.seamless.ai/api/client/v2/emails/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'subject' => 'Updated subject',
'body' => 'Updated body content...',
'to' => 'prospect@example.com',
'cc' => 'manager@example.com',
'bcc' => 'archive@acme.com',
'scheduleAt' => '2026-07-01T15:00:00.000Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.seamless.ai/api/client/v2/emails/{id}"
payload := strings.NewReader("{\n \"subject\": \"Updated subject\",\n \"body\": \"Updated body content...\",\n \"to\": \"prospect@example.com\",\n \"cc\": \"manager@example.com\",\n \"bcc\": \"archive@acme.com\",\n \"scheduleAt\": \"2026-07-01T15:00:00.000Z\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.put("https://api.seamless.ai/api/client/v2/emails/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"subject\": \"Updated subject\",\n \"body\": \"Updated body content...\",\n \"to\": \"prospect@example.com\",\n \"cc\": \"manager@example.com\",\n \"bcc\": \"archive@acme.com\",\n \"scheduleAt\": \"2026-07-01T15:00:00.000Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.seamless.ai/api/client/v2/emails/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"subject\": \"Updated subject\",\n \"body\": \"Updated body content...\",\n \"to\": \"prospect@example.com\",\n \"cc\": \"manager@example.com\",\n \"bcc\": \"archive@acme.com\",\n \"scheduleAt\": \"2026-07-01T15:00:00.000Z\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"emailId": "90001",
"contactId": "12345",
"from": "rep@acme.com",
"to": "prospect@example.com",
"cc": "manager@example.com",
"bcc": "archive@acme.com",
"subject": "Updated subject",
"body": "<string>",
"status": "TODO",
"scheduledAt": "2023-11-07T05:31:56Z",
"sentAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}Authorizations
OAuth2ApiKeyAuth
The access token received from the authorization server in the OAuth 2.0 flow.
Path Parameters
ID of the email (task) draft to update.
Body
application/json
Updated email subject line.
Example:
"Updated subject"
Updated email body content (HTML or plain text).
Example:
"Updated body content..."
Updated recipient email address.
Example:
"prospect@example.com"
Updated CC recipient email address(es).
Example:
"manager@example.com"
Updated BCC recipient email address(es).
Example:
"archive@acme.com"
ISO-8601 timestamp at which to schedule the draft for sending.
Example:
"2026-07-01T15:00:00.000Z"
Was this page helpful?
⌘I
Update an email draft
curl --request PUT \
--url https://api.seamless.ai/api/client/v2/emails/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"subject": "Updated subject",
"body": "Updated body content...",
"to": "prospect@example.com",
"cc": "manager@example.com",
"bcc": "archive@acme.com",
"scheduleAt": "2026-07-01T15:00:00.000Z"
}
'import requests
url = "https://api.seamless.ai/api/client/v2/emails/{id}"
payload = {
"subject": "Updated subject",
"body": "Updated body content...",
"to": "prospect@example.com",
"cc": "manager@example.com",
"bcc": "archive@acme.com",
"scheduleAt": "2026-07-01T15:00:00.000Z"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
subject: 'Updated subject',
body: JSON.stringify('Updated body content...'),
to: 'prospect@example.com',
cc: 'manager@example.com',
bcc: 'archive@acme.com',
scheduleAt: '2026-07-01T15:00:00.000Z'
})
};
fetch('https://api.seamless.ai/api/client/v2/emails/{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://api.seamless.ai/api/client/v2/emails/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'subject' => 'Updated subject',
'body' => 'Updated body content...',
'to' => 'prospect@example.com',
'cc' => 'manager@example.com',
'bcc' => 'archive@acme.com',
'scheduleAt' => '2026-07-01T15:00:00.000Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.seamless.ai/api/client/v2/emails/{id}"
payload := strings.NewReader("{\n \"subject\": \"Updated subject\",\n \"body\": \"Updated body content...\",\n \"to\": \"prospect@example.com\",\n \"cc\": \"manager@example.com\",\n \"bcc\": \"archive@acme.com\",\n \"scheduleAt\": \"2026-07-01T15:00:00.000Z\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.put("https://api.seamless.ai/api/client/v2/emails/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"subject\": \"Updated subject\",\n \"body\": \"Updated body content...\",\n \"to\": \"prospect@example.com\",\n \"cc\": \"manager@example.com\",\n \"bcc\": \"archive@acme.com\",\n \"scheduleAt\": \"2026-07-01T15:00:00.000Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.seamless.ai/api/client/v2/emails/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"subject\": \"Updated subject\",\n \"body\": \"Updated body content...\",\n \"to\": \"prospect@example.com\",\n \"cc\": \"manager@example.com\",\n \"bcc\": \"archive@acme.com\",\n \"scheduleAt\": \"2026-07-01T15:00:00.000Z\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"emailId": "90001",
"contactId": "12345",
"from": "rep@acme.com",
"to": "prospect@example.com",
"cc": "manager@example.com",
"bcc": "archive@acme.com",
"subject": "Updated subject",
"body": "<string>",
"status": "TODO",
"scheduledAt": "2023-11-07T05:31:56Z",
"sentAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}