curl --request POST \
--url https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/apply/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"expected_revision": 2,
"rewrite": false,
"slot_keys": [
"<string>"
]
}
'import requests
url = "https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/apply/"
payload = {
"expected_revision": 2,
"rewrite": False,
"slot_keys": ["<string>"]
}
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({expected_revision: 2, rewrite: false, slot_keys: ['<string>']})
};
fetch('https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/apply/', 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/{sequence_id}/agent/training/{session_id}/apply/",
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([
'expected_revision' => 2,
'rewrite' => false,
'slot_keys' => [
'<string>'
]
]),
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/{sequence_id}/agent/training/{session_id}/apply/"
payload := strings.NewReader("{\n \"expected_revision\": 2,\n \"rewrite\": false,\n \"slot_keys\": [\n \"<string>\"\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://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/apply/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expected_revision\": 2,\n \"rewrite\": false,\n \"slot_keys\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/apply/")
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 \"expected_revision\": 2,\n \"rewrite\": false,\n \"slot_keys\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"applied_version": 123,
"base_version": 123,
"contacts": [
{
"context": {},
"fields": [
{
"name": "<string>",
"value": "<string>"
}
],
"label": "<string>",
"messages": [
{
"authored": true,
"body": "<string>",
"conditional": "<string>",
"edited_body": "<string>",
"edited_subject": "<string>",
"error": "<string>",
"facts_used": [
"<string>"
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "<string>",
"note": "<string>",
"previous_body": "<string>",
"previous_subject": "<string>",
"reasoning": "<string>",
"reply_to_step_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"steps": [
{
"action": "<string>",
"detail": "",
"duration_ms": 123,
"observation": "",
"outcome": "completed",
"thought": "<string>"
}
],
"subject": "<string>",
"timing": "<string>",
"title": "<string>",
"proposed_body": "<string>",
"proposed_error": "<string>",
"proposed_send": {
"alone": true,
"reason": "low_confidence",
"doubt": "<string>"
},
"proposed_subject": "<string>",
"send": {
"alone": true,
"reason": "low_confidence",
"doubt": "<string>"
}
}
],
"note": "<string>",
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verdict": "good",
"notes": [
{
"note": "<string>",
"state": "pending"
}
],
"notice": "<string>",
"profile_mismatch": "<string>"
}
],
"created_at": "2023-11-07T05:31:56Z",
"error": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"progress": {
"fixed": 123,
"in_a_row": 123,
"lessons": [
"<string>"
],
"ready": true,
"ready_after": 123,
"reviewed": 123
},
"proposal": {
"summary": "<string>",
"changes": [
{
"current": "<string>",
"proposed": "<string>",
"rationale": "<string>",
"slot_key": "<string>"
}
],
"made_at": 0,
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"round_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
},
"revision": 123,
"status": "running",
"note_waiting": false,
"reviewed_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"steps": [
{
"action": "<string>",
"detail": "",
"duration_ms": 123,
"observation": "",
"outcome": "completed",
"thought": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Keep the rewrite and the lesson that wrote it
The agent’s instructions take the lesson (its next version), and the rewrite becomes the noted contact’s thread, marked Looks good, so it is what sends. Every thread of the sequence already marked Looks good keeps its words across the new version. The run stays open on the new version; threads written ahead under the old instructions that nobody read leave it, and are written again when opened. A rewrite is kept whole: slot_keys, when sent, must name every change. Repeating the call is a no-op.
curl --request POST \
--url https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/apply/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"expected_revision": 2,
"rewrite": false,
"slot_keys": [
"<string>"
]
}
'import requests
url = "https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/apply/"
payload = {
"expected_revision": 2,
"rewrite": False,
"slot_keys": ["<string>"]
}
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({expected_revision: 2, rewrite: false, slot_keys: ['<string>']})
};
fetch('https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/apply/', 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/{sequence_id}/agent/training/{session_id}/apply/",
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([
'expected_revision' => 2,
'rewrite' => false,
'slot_keys' => [
'<string>'
]
]),
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/{sequence_id}/agent/training/{session_id}/apply/"
payload := strings.NewReader("{\n \"expected_revision\": 2,\n \"rewrite\": false,\n \"slot_keys\": [\n \"<string>\"\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://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/apply/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expected_revision\": 2,\n \"rewrite\": false,\n \"slot_keys\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/apply/")
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 \"expected_revision\": 2,\n \"rewrite\": false,\n \"slot_keys\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"applied_version": 123,
"base_version": 123,
"contacts": [
{
"context": {},
"fields": [
{
"name": "<string>",
"value": "<string>"
}
],
"label": "<string>",
"messages": [
{
"authored": true,
"body": "<string>",
"conditional": "<string>",
"edited_body": "<string>",
"edited_subject": "<string>",
"error": "<string>",
"facts_used": [
"<string>"
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "<string>",
"note": "<string>",
"previous_body": "<string>",
"previous_subject": "<string>",
"reasoning": "<string>",
"reply_to_step_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"steps": [
{
"action": "<string>",
"detail": "",
"duration_ms": 123,
"observation": "",
"outcome": "completed",
"thought": "<string>"
}
],
"subject": "<string>",
"timing": "<string>",
"title": "<string>",
"proposed_body": "<string>",
"proposed_error": "<string>",
"proposed_send": {
"alone": true,
"reason": "low_confidence",
"doubt": "<string>"
},
"proposed_subject": "<string>",
"send": {
"alone": true,
"reason": "low_confidence",
"doubt": "<string>"
}
}
],
"note": "<string>",
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verdict": "good",
"notes": [
{
"note": "<string>",
"state": "pending"
}
],
"notice": "<string>",
"profile_mismatch": "<string>"
}
],
"created_at": "2023-11-07T05:31:56Z",
"error": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"progress": {
"fixed": 123,
"in_a_row": 123,
"lessons": [
"<string>"
],
"ready": true,
"ready_after": 123,
"reviewed": 123
},
"proposal": {
"summary": "<string>",
"changes": [
{
"current": "<string>",
"proposed": "<string>",
"rationale": "<string>",
"slot_key": "<string>"
}
],
"made_at": 0,
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"round_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
},
"revision": 123,
"status": "running",
"note_waiting": false,
"reviewed_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"steps": [
{
"action": "<string>",
"detail": "",
"duration_ms": 123,
"observation": "",
"outcome": "completed",
"thought": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Body
Response
Successful Response
Show child attributes
Show child attributes
How training on this sequence is going, counted across the run.
Show child attributes
Show child attributes
The session's candidate prompt update, kept pending until applied.
Show child attributes
Show child attributes
A session's phase, also used to resume its review screen.
running, reviewing, proposing, proposed, completed, abandoned A note was given while another contact was being written: its rewrite is worked out as soon as that write lands.
Every contact given Looks good or a note in this run, including ones that left the run to make room.
Show child attributes
Show child attributes
Was this page helpful?