curl --request POST \
--url https://api.getoneprofile.ai/agent-training/sessions/{session_id}/propose/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"revision_request": ""
}
'import requests
url = "https://api.getoneprofile.ai/agent-training/sessions/{session_id}/propose/"
payload = { "revision_request": "" }
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({revision_request: ''})
};
fetch('https://api.getoneprofile.ai/agent-training/sessions/{session_id}/propose/', 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/agent-training/sessions/{session_id}/propose/",
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([
'revision_request' => ''
]),
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/agent-training/sessions/{session_id}/propose/"
payload := strings.NewReader("{\n \"revision_request\": \"\"\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/agent-training/sessions/{session_id}/propose/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"revision_request\": \"\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/agent-training/sessions/{session_id}/propose/")
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 \"revision_request\": \"\"\n}"
response = http.request(request)
puts response.read_body{
"created_at": "2023-11-07T05:31:56Z",
"cycle": 123,
"error": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"progress": {
"done": 123,
"failed": 123,
"total": 123
},
"proposal": {
"changed": true,
"current_prompt": "<string>",
"proposed_prompt": "<string>",
"review": {
"summary": "<string>",
"changes": [
"<string>"
],
"example_after": "<string>",
"example_before": "<string>",
"example_label": "<string>"
},
"stale": false
},
"rows": [
{
"confidence": "high",
"credits_charged": 123,
"cycle": 123,
"error": "<string>",
"error_class": "timeout",
"feedback": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"inputs": {},
"outcome": "succeeded",
"position": 123,
"prior_feedback": [
{
"cycle": 123,
"feedback": "<string>",
"verdict": "good"
}
],
"reasoning": "<string>",
"skipped_reason": "<string>",
"sources": [
"<string>"
],
"status": "pending",
"steps": [
{
"action": "search",
"detail": "<string>",
"observation": "<string>",
"duration_ms": 123,
"outcome": "completed",
"thought": "<string>"
}
],
"verdict": "good",
"changed_fields": [
"<string>"
],
"previous_value": "<unknown>",
"previous_verdict": "good",
"value": "<unknown>"
}
],
"saved_agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_input_mappings": {},
"source_kind": "table",
"source_table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "running",
"updated_at": "2023-11-07T05:31:56Z"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}Propose a revised prompt
Rewrite the agent’s prompt from this cycle’s verdicts, fixing the rows marked bad without losing the ones marked good. Needs at least one bad row. Only the prompt is proposed (the output shape, model and tools are never machine-written) and every declared placeholder is verified to survive before the proposal is shown.
curl --request POST \
--url https://api.getoneprofile.ai/agent-training/sessions/{session_id}/propose/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"revision_request": ""
}
'import requests
url = "https://api.getoneprofile.ai/agent-training/sessions/{session_id}/propose/"
payload = { "revision_request": "" }
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({revision_request: ''})
};
fetch('https://api.getoneprofile.ai/agent-training/sessions/{session_id}/propose/', 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/agent-training/sessions/{session_id}/propose/",
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([
'revision_request' => ''
]),
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/agent-training/sessions/{session_id}/propose/"
payload := strings.NewReader("{\n \"revision_request\": \"\"\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/agent-training/sessions/{session_id}/propose/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"revision_request\": \"\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/agent-training/sessions/{session_id}/propose/")
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 \"revision_request\": \"\"\n}"
response = http.request(request)
puts response.read_body{
"created_at": "2023-11-07T05:31:56Z",
"cycle": 123,
"error": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"progress": {
"done": 123,
"failed": 123,
"total": 123
},
"proposal": {
"changed": true,
"current_prompt": "<string>",
"proposed_prompt": "<string>",
"review": {
"summary": "<string>",
"changes": [
"<string>"
],
"example_after": "<string>",
"example_before": "<string>",
"example_label": "<string>"
},
"stale": false
},
"rows": [
{
"confidence": "high",
"credits_charged": 123,
"cycle": 123,
"error": "<string>",
"error_class": "timeout",
"feedback": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"inputs": {},
"outcome": "succeeded",
"position": 123,
"prior_feedback": [
{
"cycle": 123,
"feedback": "<string>",
"verdict": "good"
}
],
"reasoning": "<string>",
"skipped_reason": "<string>",
"sources": [
"<string>"
],
"status": "pending",
"steps": [
{
"action": "search",
"detail": "<string>",
"observation": "<string>",
"duration_ms": 123,
"outcome": "completed",
"thought": "<string>"
}
],
"verdict": "good",
"changed_fields": [
"<string>"
],
"previous_value": "<unknown>",
"previous_verdict": "good",
"value": "<unknown>"
}
],
"saved_agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_input_mappings": {},
"source_kind": "table",
"source_table_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "running",
"updated_at": "2023-11-07T05:31:56Z"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Path Parameters
Body
A request for a revised prompt, optionally critiquing a prior proposal.
What to change about the proposal already on screen.
2000Response
Successful Response
A whole training session, as the reviewer's page polls it.
Everything the page needs in one payload: the phase (status), the
cycle, the rows with their results and critiques, and the pending proposal
when there is one.
How far the current cycle's run has got.
Show child attributes
Show child attributes
A pending prompt revision, alongside what it would replace.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Where a session's training inputs came from.
table, manual Where a training session stands: the state the reviewer's screen shows.
One enum rather than a separate lifecycle flag and phase, because the
phase IS the state: a session is either waiting on the machine
(RUNNING), waiting on the reviewer (REVIEWING, PROPOSED), or
finished. Callers never derive the screen from row counts.
running, reviewing, proposed, completed, abandoned Was this page helpful?