curl --request POST \
--url https://api.getoneprofile.ai/sequences/proposals/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"campaign_key": "<string>",
"intent": "",
"record_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"sender_profile_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"view_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.getoneprofile.ai/sequences/proposals/"
payload = {
"table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"campaign_key": "<string>",
"intent": "",
"record_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"sender_profile_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"view_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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({
table_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
campaign_key: '<string>',
intent: '',
record_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
sender_profile_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
view_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.getoneprofile.ai/sequences/proposals/', 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/sequences/proposals/",
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([
'table_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'campaign_key' => '<string>',
'intent' => '',
'record_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'sender_profile_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'view_id' => '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/sequences/proposals/"
payload := strings.NewReader("{\n \"table_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"campaign_key\": \"<string>\",\n \"intent\": \"\",\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"sender_profile_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"view_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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://api.getoneprofile.ai/sequences/proposals/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"table_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"campaign_key\": \"<string>\",\n \"intent\": \"\",\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"sender_profile_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"view_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/sequences/proposals/")
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 \"table_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"campaign_key\": \"<string>\",\n \"intent\": \"\",\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"sender_profile_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"view_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"campaign": {
"angle": "<string>",
"audience": "<string>",
"campaign_key": "<string>",
"campaign_name": "<string>",
"steps": [
{
"kind": "<string>",
"note": "<string>",
"title": "<string>",
"wait_days": 123
}
],
"summary": "<string>",
"why_now": "<string>"
},
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"in_flight": true,
"intent": "<string>",
"reason": "<string>",
"record_count": 123,
"sender_profile_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"sequence_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"stage": "<string>",
"status": "<string>",
"table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"table_name": "<string>",
"view_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>"
}{
"detail": "<string>"
}Propose a sequence and tailor its campaign
The first half of making a sequence the way New sequence does: choose the table (or a saved view of it, or chosen rows) and who sends it, and the library campaign that fits those people is chosen and tailored in the background, about a minute, BEFORE anything is made. Pass the person’s own words about what it is for as intent, or a campaign_key to run a particular campaign. Poll the proposal until in_flight is false, then create the sequence with POST /sequences/ and proposal_id. Free, up to a daily number of tailorings per workspace; a proposal over it, or with no business context to tailor from, answers at once with the reason and still makes a sequence on the standard campaign.
curl --request POST \
--url https://api.getoneprofile.ai/sequences/proposals/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"campaign_key": "<string>",
"intent": "",
"record_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"sender_profile_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"view_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.getoneprofile.ai/sequences/proposals/"
payload = {
"table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"campaign_key": "<string>",
"intent": "",
"record_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"sender_profile_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"view_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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({
table_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
campaign_key: '<string>',
intent: '',
record_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
sender_profile_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
view_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.getoneprofile.ai/sequences/proposals/', 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/sequences/proposals/",
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([
'table_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'campaign_key' => '<string>',
'intent' => '',
'record_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'sender_profile_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'view_id' => '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/sequences/proposals/"
payload := strings.NewReader("{\n \"table_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"campaign_key\": \"<string>\",\n \"intent\": \"\",\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"sender_profile_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"view_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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://api.getoneprofile.ai/sequences/proposals/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"table_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"campaign_key\": \"<string>\",\n \"intent\": \"\",\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"sender_profile_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"view_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/sequences/proposals/")
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 \"table_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"campaign_key\": \"<string>\",\n \"intent\": \"\",\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"sender_profile_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"view_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"campaign": {
"angle": "<string>",
"audience": "<string>",
"campaign_key": "<string>",
"campaign_name": "<string>",
"steps": [
{
"kind": "<string>",
"note": "<string>",
"title": "<string>",
"wait_days": 123
}
],
"summary": "<string>",
"why_now": "<string>"
},
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"in_flight": true,
"intent": "<string>",
"reason": "<string>",
"record_count": 123,
"sender_profile_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"sequence_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"stage": "<string>",
"status": "<string>",
"table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"table_name": "<string>",
"view_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>"
}{
"detail": "<string>"
}Authorizations
Body
What New sequence asks before anything is made: who to write to, who sends, what for.
The audience's table.
A campaign from the library to run, by key (see the outbound presets' campaigns). Omitted, tailoring chooses the one that fits the audience best.
64What the campaign is for, in the person's own words: an event, a launch, an offer, who to reach. The one part of a campaign an email may state as fact.
500Chosen rows, when the audience is those rows only.
1 - 1000 elementsThe sender profiles it sends from; each email is written as its sender.
100A saved view narrowing the audience; null is the whole table.
Response
Successful Response
A sequence not made yet, and how its tailoring stands.
The tailored campaign; null means the sequence starts on the standard one.
Show child attributes
Show child attributes
Tailoring is still working; poll until false.
Why it was skipped or failed, as a code.
How many chosen rows, when rows were chosen.
The sequence made from it, once made.
While in flight: starting, choosing (the campaign) or checking (it).
The tailoring's outcome once settled: ready_for_review (a campaign is ready), kept_stock (the standard read better), skipped or failed.
Was this page helpful?