curl --request POST \
--url https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/finish/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"expected_revision": 2
}
'import requests
url = "https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/finish/"
payload = { "expected_revision": 2 }
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})
};
fetch('https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/finish/', 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}/finish/",
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
]),
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}/finish/"
payload := strings.NewReader("{\n \"expected_revision\": 2\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}/finish/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expected_revision\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/finish/")
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}"
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>"
}Work out the rewrite for the note waiting
A note (the feedback route, or Needs work with a note on the review route) starts its own rewrite, so this answers with the run as it stands while the rewrite is being worked out or waits, and works it out again for a note whose rewrite failed.
curl --request POST \
--url https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/finish/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"expected_revision": 2
}
'import requests
url = "https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/finish/"
payload = { "expected_revision": 2 }
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})
};
fetch('https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/finish/', 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}/finish/",
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
]),
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}/finish/"
payload := strings.NewReader("{\n \"expected_revision\": 2\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}/finish/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expected_revision\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/finish/")
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}"
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
x >= 1Response
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?