curl --request PATCH \
--url https://api.getoneprofile.ai/assistant/threads/{origin}/{thread_id}/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"pinned": true,
"title": "<string>"
}
'import requests
url = "https://api.getoneprofile.ai/assistant/threads/{origin}/{thread_id}/"
payload = {
"pinned": True,
"title": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({pinned: true, title: '<string>'})
};
fetch('https://api.getoneprofile.ai/assistant/threads/{origin}/{thread_id}/', 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/assistant/threads/{origin}/{thread_id}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'pinned' => true,
'title' => '<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/assistant/threads/{origin}/{thread_id}/"
payload := strings.NewReader("{\n \"pinned\": true,\n \"title\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.getoneprofile.ai/assistant/threads/{origin}/{thread_id}/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"pinned\": true,\n \"title\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/assistant/threads/{origin}/{thread_id}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"pinned\": true,\n \"title\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"continued_from": {
"origin": "table",
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"continued_in": {
"origin": "table",
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"created_at": "2023-11-07T05:31:56Z",
"last_message_at": "2023-11-07T05:31:56Z",
"open_path": "<string>",
"origin": "table",
"origin_ref_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"origin_ref_label": "<string>",
"pinned": true,
"shared": true,
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Rename or pin an AI Assistant thread
Rename a thread, pin or unpin it, or both. The rename is kept beside the store’s own title, so the list shows it and the store keeps naming the thread after its first message. A thread that is not yours answers 404, the same as one that does not exist.
curl --request PATCH \
--url https://api.getoneprofile.ai/assistant/threads/{origin}/{thread_id}/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"pinned": true,
"title": "<string>"
}
'import requests
url = "https://api.getoneprofile.ai/assistant/threads/{origin}/{thread_id}/"
payload = {
"pinned": True,
"title": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({pinned: true, title: '<string>'})
};
fetch('https://api.getoneprofile.ai/assistant/threads/{origin}/{thread_id}/', 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/assistant/threads/{origin}/{thread_id}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'pinned' => true,
'title' => '<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/assistant/threads/{origin}/{thread_id}/"
payload := strings.NewReader("{\n \"pinned\": true,\n \"title\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.getoneprofile.ai/assistant/threads/{origin}/{thread_id}/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"pinned\": true,\n \"title\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/assistant/threads/{origin}/{thread_id}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"pinned\": true,\n \"title\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"continued_from": {
"origin": "table",
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"continued_in": {
"origin": "table",
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"created_at": "2023-11-07T05:31:56Z",
"last_message_at": "2023-11-07T05:31:56Z",
"open_path": "<string>",
"origin": "table",
"origin_ref_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"origin_ref_label": "<string>",
"pinned": true,
"shared": true,
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>"
}{
"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
Which store a thread lives in.
The four assistants keep their transcripts in four tables with four shapes, and nothing here moves them. An origin plus the thread's id in that store is how one row of the meta table names a thread, and how the dock knows which capability the thread carries when it is reopened.
table, find_leads, agent, chat Body
Rename a thread, pin or unpin it, or both. A field left out is left alone.
Response
Successful Response
One thread in the list, from whichever assistant it belongs to.
The thread this one continues: the search that produced this table.
Show child attributes
Show child attributes
The thread this one continues in: the table this search produced.
Show child attributes
Show child attributes
Where the dashboard navigates to reopen the thread: the table with its assistant panel on this conversation, the lead search assistant, the agent editor, or the chat.
Which store a thread lives in.
The four assistants keep their transcripts in four tables with four shapes, and nothing here moves them. An origin plus the thread's id in that store is how one row of the meta table names a thread, and how the dock knows which capability the thread carries when it is reopened.
table, find_leads, agent, chat The table or saved agent the thread is bound to; null for a lead search or the general chat.
That table's or agent's name, or what a lead search was for; null when the thread is bound to nothing, or its agent is gone.
A legacy table thread nobody is recorded as starting, which the whole workspace sees and may rename, pin or delete.
Was this page helpful?