curl --request POST \
--url https://{dsn}/api/v1/{account_id}/emails/{email_id}/modify \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"folders_ids": [
"fld_5e3b1c2d4a6f4e7b8c9d0a1b2c3d4e5f"
]
}
'import requests
url = "https://{dsn}/api/v1/{account_id}/emails/{email_id}/modify"
payload = { "folders_ids": ["fld_5e3b1c2d4a6f4e7b8c9d0a1b2c3d4e5f"] }
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({folders_ids: ['fld_5e3b1c2d4a6f4e7b8c9d0a1b2c3d4e5f']})
};
fetch('https://{dsn}/api/v1/{account_id}/emails/{email_id}/modify', 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}/modify",
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([
'folders_ids' => [
'fld_5e3b1c2d4a6f4e7b8c9d0a1b2c3d4e5f'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{dsn}/api/v1/{account_id}/emails/{email_id}/modify"
payload := strings.NewReader("{\n \"folders_ids\": [\n \"fld_5e3b1c2d4a6f4e7b8c9d0a1b2c3d4e5f\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-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://{dsn}/api/v1/{account_id}/emails/{email_id}/modify")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"folders_ids\": [\n \"fld_5e3b1c2d4a6f4e7b8c9d0a1b2c3d4e5f\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{dsn}/api/v1/{account_id}/emails/{email_id}/modify")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"folders_ids\": [\n \"fld_5e3b1c2d4a6f4e7b8c9d0a1b2c3d4e5f\"\n ]\n}"
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": 400,
"type": "errors/invalid_parameters",
"title": "Invalid parameters",
"detail": "limit must be between 1 and 250"
}{
"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"
}Move an email
Moves the email to another folder in the user’s mailbox. On IMAP an email is in one
folder, so give one id in folders_ids. The email keeps its id; email.update follows.
curl --request POST \
--url https://{dsn}/api/v1/{account_id}/emails/{email_id}/modify \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"folders_ids": [
"fld_5e3b1c2d4a6f4e7b8c9d0a1b2c3d4e5f"
]
}
'import requests
url = "https://{dsn}/api/v1/{account_id}/emails/{email_id}/modify"
payload = { "folders_ids": ["fld_5e3b1c2d4a6f4e7b8c9d0a1b2c3d4e5f"] }
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({folders_ids: ['fld_5e3b1c2d4a6f4e7b8c9d0a1b2c3d4e5f']})
};
fetch('https://{dsn}/api/v1/{account_id}/emails/{email_id}/modify', 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}/modify",
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([
'folders_ids' => [
'fld_5e3b1c2d4a6f4e7b8c9d0a1b2c3d4e5f'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{dsn}/api/v1/{account_id}/emails/{email_id}/modify"
payload := strings.NewReader("{\n \"folders_ids\": [\n \"fld_5e3b1c2d4a6f4e7b8c9d0a1b2c3d4e5f\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-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://{dsn}/api/v1/{account_id}/emails/{email_id}/modify")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"folders_ids\": [\n \"fld_5e3b1c2d4a6f4e7b8c9d0a1b2c3d4e5f\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{dsn}/api/v1/{account_id}/emails/{email_id}/modify")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"folders_ids\": [\n \"fld_5e3b1c2d4a6f4e7b8c9d0a1b2c3d4e5f\"\n ]\n}"
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": 400,
"type": "errors/invalid_parameters",
"title": "Invalid parameters",
"detail": "limit must be between 1 and 250"
}{
"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.
Body
The fld_… id of the folder to move it to.
1 elementResponse
The moved 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.