curl --request POST \
--url https://api.getoneprofile.ai/inbox/threads/{thread_id}/messages/{message_id}/forward/ \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'X-API-Key: <api-key>' \
--data 'to=<string>' \
--data mailbox_id=3c90c3cc-0d44-4b50-8888-8dd25736052a \
--data note=import requests
url = "https://api.getoneprofile.ai/inbox/threads/{thread_id}/messages/{message_id}/forward/"
payload = {
"to": "<string>",
"mailbox_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"note": ""
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/x-www-form-urlencoded"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/x-www-form-urlencoded'},
body: new URLSearchParams({to: '<string>', mailbox_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a', note: ''})
};
fetch('https://api.getoneprofile.ai/inbox/threads/{thread_id}/messages/{message_id}/forward/', 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.getoneprofile.ai/inbox/threads/{thread_id}/messages/{message_id}/forward/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "to=%3Cstring%3E&mailbox_id=3c90c3cc-0d44-4b50-8888-8dd25736052a¬e=",
CURLOPT_HTTPHEADER => [
"Content-Type: application/x-www-form-urlencoded",
"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://api.getoneprofile.ai/inbox/threads/{thread_id}/messages/{message_id}/forward/"
payload := strings.NewReader("to=%3Cstring%3E&mailbox_id=3c90c3cc-0d44-4b50-8888-8dd25736052a¬e=")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
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.getoneprofile.ai/inbox/threads/{thread_id}/messages/{message_id}/forward/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/x-www-form-urlencoded")
.body("to=%3Cstring%3E&mailbox_id=3c90c3cc-0d44-4b50-8888-8dd25736052a¬e=")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/inbox/threads/{thread_id}/messages/{message_id}/forward/")
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/x-www-form-urlencoded'
request.body = "to=%3Cstring%3E&mailbox_id=3c90c3cc-0d44-4b50-8888-8dd25736052a¬e="
response = http.request(request)
puts response.read_body{
"attachments": [
{
"content_type": "<string>",
"filename": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"size_bytes": 123
}
],
"body_text": "<string>",
"bounce_severity": "hard",
"channel": "email",
"direction": "outbound",
"from_address": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mailbox_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"message_class": "reply",
"send_state": "sent",
"sent_at": "2023-11-07T05:31:56Z",
"subject": "<string>",
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"to_address": "<string>",
"authentication_result": "<string>",
"body_html": "<string>",
"sent_by_kind": "person",
"sequence_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"step_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}Forward a message to somebody else
Sends one message of the thread onward with a note, as a NEW email carrying no threading headers, because a colleague’s answer must never land in the prospect’s conversation. The original’s attachments ride along. Recorded on the thread for the record, but the conversation’s last activity is left alone.
curl --request POST \
--url https://api.getoneprofile.ai/inbox/threads/{thread_id}/messages/{message_id}/forward/ \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'X-API-Key: <api-key>' \
--data 'to=<string>' \
--data mailbox_id=3c90c3cc-0d44-4b50-8888-8dd25736052a \
--data note=import requests
url = "https://api.getoneprofile.ai/inbox/threads/{thread_id}/messages/{message_id}/forward/"
payload = {
"to": "<string>",
"mailbox_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"note": ""
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/x-www-form-urlencoded"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/x-www-form-urlencoded'},
body: new URLSearchParams({to: '<string>', mailbox_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a', note: ''})
};
fetch('https://api.getoneprofile.ai/inbox/threads/{thread_id}/messages/{message_id}/forward/', 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.getoneprofile.ai/inbox/threads/{thread_id}/messages/{message_id}/forward/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "to=%3Cstring%3E&mailbox_id=3c90c3cc-0d44-4b50-8888-8dd25736052a¬e=",
CURLOPT_HTTPHEADER => [
"Content-Type: application/x-www-form-urlencoded",
"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://api.getoneprofile.ai/inbox/threads/{thread_id}/messages/{message_id}/forward/"
payload := strings.NewReader("to=%3Cstring%3E&mailbox_id=3c90c3cc-0d44-4b50-8888-8dd25736052a¬e=")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
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.getoneprofile.ai/inbox/threads/{thread_id}/messages/{message_id}/forward/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/x-www-form-urlencoded")
.body("to=%3Cstring%3E&mailbox_id=3c90c3cc-0d44-4b50-8888-8dd25736052a¬e=")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/inbox/threads/{thread_id}/messages/{message_id}/forward/")
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/x-www-form-urlencoded'
request.body = "to=%3Cstring%3E&mailbox_id=3c90c3cc-0d44-4b50-8888-8dd25736052a¬e="
response = http.request(request)
puts response.read_body{
"attachments": [
{
"content_type": "<string>",
"filename": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"size_bytes": 123
}
],
"body_text": "<string>",
"bounce_severity": "hard",
"channel": "email",
"direction": "outbound",
"from_address": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mailbox_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"message_class": "reply",
"send_state": "sent",
"sent_at": "2023-11-07T05:31:56Z",
"subject": "<string>",
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"to_address": "<string>",
"authentication_result": "<string>",
"body_html": "<string>",
"sent_by_kind": "person",
"sequence_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"step_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Body
Response
Successful Response
Show child attributes
Show child attributes
Hard vs soft severity of a BOUNCE message.
Only HARD marks the contact bounced (the Bounced condition, the enrolment analytics bounce rate, the per-message outcome). SOFT still fills the Bounces view and never looks like a reply, but the address may still be reachable, so the cadence is left alone.
hard, soft This message's own channel. Threads merge channels, so the reader captions each message by what it actually is: a LinkedIn DM involves no email addresses.
email, linkedin outbound, inbound What a message turned out to be; NULL on an ordinary message of ours.
REPLY stops the cadence; BOUNCE (a DSN) marks the contact bounced and never
looks like a reply; OUT_OF_OFFICE never stops anything and defers the
cadence to the stated return when one is parsed; AUTOMATED is a machine
writing back (a ticketing auto-ack, a mailing list, a no-reply robot), and
like OUT_OF_OFFICE it never stops a cadence, because nobody read the mail.
The first four are inbound. FORWARD is ours, outbound: a message of the
thread passed on to somebody else (service.forward_message). Nothing
was said to the contact, so it is never an answer to them: it does not
move a conversation out of the Inbox, count as replied, or end a done mark.
reply, bounce, out_of_office, automated, forward Whether a message has actually left.
Only meaningful on LinkedIn. An email row is written after the provider
accepted it, so it is SENT the moment it exists; a LinkedIn reply is
written when it is QUEUED, and cannot become SENT until the customer's
own browser has delivered it. Showing the two the same way would have the
product assert a delivery it has no evidence for.
sent, queued, failed The receiving mail server's verdict on whether a message really came from the sender's domain, by DMARC or SPF: pass, fail, none when the server gave no verdict, or unknown when its verdict was neither. The agent only answers an email on its own when it passed. Null when no verdict was recorded, such as on LinkedIn messages and on messages sent from Oneprofile.
The sender's raw HTML part; sanitise before rendering.
Who sent an outbound message: person when someone in your workspace wrote or approved it, system when the agent sent it on its own with nobody approving it. Null on messages you received, and on outbound messages where this was not recorded, such as sequence steps and mail sent straight from the mailbox.
person, system The sequence this message was sent from, when it came from one.
Which step sent this message, carried per-message (not just on the thread) because a contact re-enrolled in a different sequence keeps their earlier messages' own sequence/step, distinct from the thread's current one.
Was this page helpful?