curl --request POST \
--url http://api.stuut.ai/v1/emails/{email_id}/attach-invoice \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"invoice_id": "<string>"
}
'import requests
url = "http://api.stuut.ai/v1/emails/{email_id}/attach-invoice"
payload = { "invoice_id": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({invoice_id: '<string>'})
};
fetch('http://api.stuut.ai/v1/emails/{email_id}/attach-invoice', 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 => "http://api.stuut.ai/v1/emails/{email_id}/attach-invoice",
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([
'invoice_id' => '<string>'
]),
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 := "http://api.stuut.ai/v1/emails/{email_id}/attach-invoice"
payload := strings.NewReader("{\n \"invoice_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("http://api.stuut.ai/v1/emails/{email_id}/attach-invoice")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"invoice_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://api.stuut.ai/v1/emails/{email_id}/attach-invoice")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"invoice_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"object": "<string>",
"thread_id": "<string>",
"id": "<string>",
"attachments": [
{
"file_type": "audio",
"mime_type": "<string>",
"name": "<string>",
"object": "<string>",
"organization_id": "<string>",
"id": "<string>",
"content_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"disposition": "<string>",
"is_verified": true,
"modified_at": "2023-11-07T05:31:56Z",
"presigned_url": "<string>",
"presigned_url_expires_at": "2023-11-07T05:31:56Z",
"purpose": "<string>",
"remote_id": "<string>",
"size": 123,
"src": "<unknown>",
"user_id": "<string>"
}
],
"author": {
"email": "<string>",
"family_name": "<string>",
"given_name": "<string>",
"object": "<string>",
"organization_id": "<string>",
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"dashboard_settings": {
"thread_emails_sort_order": "asc"
},
"default_email_sender_id": "<string>",
"invited_by_user_id": "<string>",
"is_access_approved": true,
"is_org_admin": true,
"modified_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"onboarding_required": true,
"profile_picture": "<string>",
"selected": true
},
"author_id": "<string>",
"bcc": [
"<string>"
],
"body": "<string>",
"bounced_addresses": [
"<string>"
],
"bulk_email_request_id": "<string>",
"cc": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z",
"custom_headers": "<unknown>",
"direction": "inbound",
"email_reason": "<string>",
"email_sender": {
"email": "<string>",
"object": "<string>",
"reply_to": "<string>",
"user_id": "<string>",
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"expired_at": "2023-11-07T05:31:56Z",
"is_nylas_connection": true,
"is_nylas_grant_expired": true,
"is_shared": true,
"modified_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"provider": "<string>",
"reply_to_name": "<string>",
"signature_html": "<string>"
},
"email_sender_id": "<string>",
"error_message": "<string>",
"from_email": "<string>",
"generated_body": "<string>",
"is_automated": true,
"is_generated": true,
"is_originated_in_stuut": true,
"is_unread": true,
"modified_at": "2023-11-07T05:31:56Z",
"parent_email_id": "<string>",
"participants": [
"jsmith@example.com"
],
"remote_id": "<string>",
"remote_links": [
{
"email_id": "<string>",
"email_sender_id": "<string>",
"object": "<string>",
"remote_id": "<string>",
"remote_thread_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"modified_at": "2023-11-07T05:31:56Z"
}
],
"reply_to": [
"<string>"
],
"send_separately": true,
"sent_at": "2023-11-07T05:31:56Z",
"sent_by_id": "<string>",
"snippet": "<string>",
"status": "draft",
"subject": "<string>",
"to": [
"<string>"
]
}{
"data": {},
"error": "<string>",
"message": "<string>"
}{
"data": {},
"error": "<string>",
"message": "<string>"
}{
"detail": {
"<location>": {
"<field_name>": [
"<string>"
]
}
},
"message": "<string>"
}Add An Invoice Email Attachment
curl --request POST \
--url http://api.stuut.ai/v1/emails/{email_id}/attach-invoice \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"invoice_id": "<string>"
}
'import requests
url = "http://api.stuut.ai/v1/emails/{email_id}/attach-invoice"
payload = { "invoice_id": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({invoice_id: '<string>'})
};
fetch('http://api.stuut.ai/v1/emails/{email_id}/attach-invoice', 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 => "http://api.stuut.ai/v1/emails/{email_id}/attach-invoice",
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([
'invoice_id' => '<string>'
]),
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 := "http://api.stuut.ai/v1/emails/{email_id}/attach-invoice"
payload := strings.NewReader("{\n \"invoice_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("http://api.stuut.ai/v1/emails/{email_id}/attach-invoice")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"invoice_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://api.stuut.ai/v1/emails/{email_id}/attach-invoice")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"invoice_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"object": "<string>",
"thread_id": "<string>",
"id": "<string>",
"attachments": [
{
"file_type": "audio",
"mime_type": "<string>",
"name": "<string>",
"object": "<string>",
"organization_id": "<string>",
"id": "<string>",
"content_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"disposition": "<string>",
"is_verified": true,
"modified_at": "2023-11-07T05:31:56Z",
"presigned_url": "<string>",
"presigned_url_expires_at": "2023-11-07T05:31:56Z",
"purpose": "<string>",
"remote_id": "<string>",
"size": 123,
"src": "<unknown>",
"user_id": "<string>"
}
],
"author": {
"email": "<string>",
"family_name": "<string>",
"given_name": "<string>",
"object": "<string>",
"organization_id": "<string>",
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"dashboard_settings": {
"thread_emails_sort_order": "asc"
},
"default_email_sender_id": "<string>",
"invited_by_user_id": "<string>",
"is_access_approved": true,
"is_org_admin": true,
"modified_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"onboarding_required": true,
"profile_picture": "<string>",
"selected": true
},
"author_id": "<string>",
"bcc": [
"<string>"
],
"body": "<string>",
"bounced_addresses": [
"<string>"
],
"bulk_email_request_id": "<string>",
"cc": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z",
"custom_headers": "<unknown>",
"direction": "inbound",
"email_reason": "<string>",
"email_sender": {
"email": "<string>",
"object": "<string>",
"reply_to": "<string>",
"user_id": "<string>",
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"expired_at": "2023-11-07T05:31:56Z",
"is_nylas_connection": true,
"is_nylas_grant_expired": true,
"is_shared": true,
"modified_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"provider": "<string>",
"reply_to_name": "<string>",
"signature_html": "<string>"
},
"email_sender_id": "<string>",
"error_message": "<string>",
"from_email": "<string>",
"generated_body": "<string>",
"is_automated": true,
"is_generated": true,
"is_originated_in_stuut": true,
"is_unread": true,
"modified_at": "2023-11-07T05:31:56Z",
"parent_email_id": "<string>",
"participants": [
"jsmith@example.com"
],
"remote_id": "<string>",
"remote_links": [
{
"email_id": "<string>",
"email_sender_id": "<string>",
"object": "<string>",
"remote_id": "<string>",
"remote_thread_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"modified_at": "2023-11-07T05:31:56Z"
}
],
"reply_to": [
"<string>"
],
"send_separately": true,
"sent_at": "2023-11-07T05:31:56Z",
"sent_by_id": "<string>",
"snippet": "<string>",
"status": "draft",
"subject": "<string>",
"to": [
"<string>"
]
}{
"data": {},
"error": "<string>",
"message": "<string>"
}{
"data": {},
"error": "<string>",
"message": "<string>"
}{
"detail": {
"<location>": {
"<field_name>": [
"<string>"
]
}
},
"message": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
Response
Successful response
3232Show child attributes
Show child attributes
Show child attributes
Show child attributes
32The HTML body of the email.
List of email addresses that bounced for this email
32Custom email headers
The request direction of the email. Either inbound or outbound
inbound, outbound 8The reason the email was sent.
Show child attributes
Show child attributes
32The error message if the email failed to send.
Saves LLM-generated body of the email. Diffed against email body when email is sent to get user changes.
Whether the email was automatically sent by a workflow or an AI agent.
Whether the email was automatically generated by a workflow or an AI agent.
Whether the email originated (was sent through) Stuut.
32The Nylas ID of the email
Show child attributes
Show child attributes
When the email was sent.
32draft, pending, sending, sent, error 7