curl --request POST \
--url https://api.getoneprofile.ai/outbound-agents/{agent_id}/proposals/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"also_slots": [
"<string>"
],
"revision_request": "",
"slot_keys": [
"<string>"
]
}
'import requests
url = "https://api.getoneprofile.ai/outbound-agents/{agent_id}/proposals/"
payload = {
"also_slots": ["<string>"],
"revision_request": "",
"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({also_slots: ['<string>'], revision_request: '', slot_keys: ['<string>']})
};
fetch('https://api.getoneprofile.ai/outbound-agents/{agent_id}/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/outbound-agents/{agent_id}/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([
'also_slots' => [
'<string>'
],
'revision_request' => '',
'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/outbound-agents/{agent_id}/proposals/"
payload := strings.NewReader("{\n \"also_slots\": [\n \"<string>\"\n ],\n \"revision_request\": \"\",\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/outbound-agents/{agent_id}/proposals/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"also_slots\": [\n \"<string>\"\n ],\n \"revision_request\": \"\",\n \"slot_keys\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/outbound-agents/{agent_id}/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 \"also_slots\": [\n \"<string>\"\n ],\n \"revision_request\": \"\",\n \"slot_keys\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"base_version": 123,
"feedback_count": 123,
"feedback_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"items": [
{
"current": "<string>",
"proposed": "<string>",
"rationale": "<string>",
"slot_key": "<string>",
"feedback_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"review": {
"summary": "<string>",
"changes": [
"<string>"
],
"example_after": "<string>",
"example_before": "<string>",
"example_label": "<string>"
}
}
],
"feedback_cutoff": "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>"
}{
"detail": "<string>"
}Propose better prompts from the agent's feedback
Rewrite the agent’s prompts from what people said needs work (a thumbs down, a note, a rewrite), and return the before and after for each one; a Looks good never trains. Nothing is written until the proposal is accepted. Spends one of the workspace’s daily assistant turns.
curl --request POST \
--url https://api.getoneprofile.ai/outbound-agents/{agent_id}/proposals/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"also_slots": [
"<string>"
],
"revision_request": "",
"slot_keys": [
"<string>"
]
}
'import requests
url = "https://api.getoneprofile.ai/outbound-agents/{agent_id}/proposals/"
payload = {
"also_slots": ["<string>"],
"revision_request": "",
"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({also_slots: ['<string>'], revision_request: '', slot_keys: ['<string>']})
};
fetch('https://api.getoneprofile.ai/outbound-agents/{agent_id}/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/outbound-agents/{agent_id}/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([
'also_slots' => [
'<string>'
],
'revision_request' => '',
'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/outbound-agents/{agent_id}/proposals/"
payload := strings.NewReader("{\n \"also_slots\": [\n \"<string>\"\n ],\n \"revision_request\": \"\",\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/outbound-agents/{agent_id}/proposals/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"also_slots\": [\n \"<string>\"\n ],\n \"revision_request\": \"\",\n \"slot_keys\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/outbound-agents/{agent_id}/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 \"also_slots\": [\n \"<string>\"\n ],\n \"revision_request\": \"\",\n \"slot_keys\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"base_version": 123,
"feedback_count": 123,
"feedback_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"items": [
{
"current": "<string>",
"proposed": "<string>",
"rationale": "<string>",
"slot_key": "<string>",
"feedback_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"review": {
"summary": "<string>",
"changes": [
"<string>"
],
"example_after": "<string>",
"example_before": "<string>",
"example_label": "<string>"
}
}
],
"feedback_cutoff": "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>"
}{
"detail": "<string>"
}Authorizations
Path Parameters
Body
Ask for a rewrite of the agent's prompts from its feedback.
Teach the same feedback to these prompts too, even though none was given on their messages. Feedback names the one message it was given on, so without this a note on the opener can only ever change the opener. Each prompt is still rewritten against its own wording.
What to change about a proposal already seen.
2000Only rewrite these prompts; every prompt that has feedback when null.
Response
Successful Response
A proposed rewrite of the agent's prompts, tied to the version it was written against.
Was this page helpful?