curl --request PUT \
--url https://api.getoneprofile.ai/sender-profiles/{profile_id}/mailboxes/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"mailbox_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
'import requests
url = "https://api.getoneprofile.ai/sender-profiles/{profile_id}/mailboxes/"
payload = { "mailbox_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"] }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({mailbox_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']})
};
fetch('https://api.getoneprofile.ai/sender-profiles/{profile_id}/mailboxes/', 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/sender-profiles/{profile_id}/mailboxes/",
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([
'mailbox_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
]),
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://api.getoneprofile.ai/sender-profiles/{profile_id}/mailboxes/"
payload := strings.NewReader("{\n \"mailbox_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.getoneprofile.ai/sender-profiles/{profile_id}/mailboxes/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"mailbox_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/sender-profiles/{profile_id}/mailboxes/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"mailbox_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"booking_url": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mailbox_count": 123,
"name": "<string>",
"send_mode": "always_send",
"status": "draft",
"title": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"daily_limit": 0,
"email_approval_mode": "manual",
"first_name": "",
"last_name": "",
"linkedin_checkpoint": false,
"linkedin_connection_request_cap": 0,
"linkedin_connection_requests_today": 0,
"linkedin_identity": "<string>",
"linkedin_last_seen_at": "2023-11-07T05:31:56Z",
"linkedin_photo_url": "<string>",
"linkedin_presence": "active",
"linkedin_run_mode": "manual",
"linkedin_usage": [
{
"daily_limit": 123,
"kind": "profile_view",
"used_today": 123
}
],
"sent_today": 0,
"signature_text": "",
"timezone": "<string>",
"timezone_source": "guessed"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Set a profile's mailboxes
Assigns exactly this set of mailboxes to the profile (the picker’s save).
curl --request PUT \
--url https://api.getoneprofile.ai/sender-profiles/{profile_id}/mailboxes/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"mailbox_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
'import requests
url = "https://api.getoneprofile.ai/sender-profiles/{profile_id}/mailboxes/"
payload = { "mailbox_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"] }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({mailbox_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']})
};
fetch('https://api.getoneprofile.ai/sender-profiles/{profile_id}/mailboxes/', 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/sender-profiles/{profile_id}/mailboxes/",
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([
'mailbox_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
]),
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://api.getoneprofile.ai/sender-profiles/{profile_id}/mailboxes/"
payload := strings.NewReader("{\n \"mailbox_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.getoneprofile.ai/sender-profiles/{profile_id}/mailboxes/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"mailbox_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/sender-profiles/{profile_id}/mailboxes/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"mailbox_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"booking_url": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mailbox_count": 123,
"name": "<string>",
"send_mode": "always_send",
"status": "draft",
"title": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"daily_limit": 0,
"email_approval_mode": "manual",
"first_name": "",
"last_name": "",
"linkedin_checkpoint": false,
"linkedin_connection_request_cap": 0,
"linkedin_connection_requests_today": 0,
"linkedin_identity": "<string>",
"linkedin_last_seen_at": "2023-11-07T05:31:56Z",
"linkedin_photo_url": "<string>",
"linkedin_presence": "active",
"linkedin_run_mode": "manual",
"linkedin_usage": [
{
"daily_limit": 123,
"kind": "profile_view",
"used_today": 123
}
],
"sent_today": 0,
"signature_text": "",
"timezone": "<string>",
"timezone_source": "guessed"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Path Parameters
Body
The exact set of mailboxes this profile sends from.
Response
Successful Response
The link people use to book a meeting with this sender, such as a Calendly or Cal.com page. It is what the {{Sender booking link}} variable is replaced with. Null when none is set.
Whether the messages the agent writes for this sender go out on their own or wait for a person, replies included. Always send (always_send): the agent's messages go out on their own unless something is wrong with the words. Send when confident (send_when_confident, the default): they go out when the agent was confident and nothing is wrong, and wait for a person otherwise. Always ask (always_ask): a person approves every one. A sequence set to ask first still asks, whichever mode its senders are on.
always_send, send_when_confident, always_ask Lifecycle of a sender.
A sender is DRAFT from the moment it is created and becomes ACTIVE once at least one mailbox is attached. The status is derived from attachment, never stored, so it cannot drift.
draft, active The sender's job title, as their messages introduce them. It is what the {{Sender title}} variable is replaced with. Empty when none is set.
manual | auto; null inherits the workspace's email approval mode.
manual, auto True while LinkedIn is asking this sender to verify the account.
When a browser for this sender last checked in.
How recently ANY browser connected to this sender checked in.
Three states, not two, because two different questions are asked of a
connection. ACTIVE answers "can a step run right now": a browser is
open and heartbeating. IDLE answers "is this still set up": the laptop
was closed for the evening. NOT_SEEN is the one that needs a person:
nothing has checked in for a day, and queued work is silently waiting.
active, idle, not_seen The sender's LinkedIn approval setting in force: manual (a person approves each step on Tasks before it runs) or auto. Null when no LinkedIn account is connected.
manual, auto Today's LinkedIn steps against each kind's daily limit.
Show child attributes
Show child attributes
The sender's IANA timezone, such as America/New_York. Their daily limits reset at its midnight, and a sequence sending in each sender's timezone sends in its hours. Null until it is detected or chosen.
Where the timezone came from: guessed from whoever created the sender or the sequences it sent for, browser from the browser driving the sender's LinkedIn when the sender had none, person chosen by someone. Detection only fills an empty timezone and never moves one a sender has.
guessed, browser, person Was this page helpful?