curl --request POST \
--url https://api.example.com/threads \
--header 'Content-Type: application/json' \
--data '
{
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"metadata": {},
"if_exists": "raise",
"ttl": {
"strategy": "delete",
"ttl": 123
},
"supersteps": [
{
"updates": [
{
"as_node": "<string>",
"values": [
{}
],
"command": {
"update": {},
"resume": {},
"goto": {
"node": "<string>",
"input": {}
}
}
}
]
}
]
}
'import requests
url = "https://api.example.com/threads"
payload = {
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"metadata": {},
"if_exists": "raise",
"ttl": {
"strategy": "delete",
"ttl": 123
},
"supersteps": [{ "updates": [
{
"as_node": "<string>",
"values": [{}],
"command": {
"update": {},
"resume": {},
"goto": {
"node": "<string>",
"input": {}
}
}
}
] }]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
thread_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
metadata: {},
if_exists: 'raise',
ttl: {strategy: 'delete', ttl: 123},
supersteps: [
{
updates: [
{
as_node: '<string>',
values: [{}],
command: {update: {}, resume: {}, goto: {node: '<string>', input: {}}}
}
]
}
]
})
};
fetch('https://api.example.com/threads', 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.example.com/threads",
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([
'thread_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'metadata' => [
],
'if_exists' => 'raise',
'ttl' => [
'strategy' => 'delete',
'ttl' => 123
],
'supersteps' => [
[
'updates' => [
[
'as_node' => '<string>',
'values' => [
[
]
],
'command' => [
'update' => [
],
'resume' => [
],
'goto' => [
'node' => '<string>',
'input' => [
]
]
]
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.example.com/threads"
payload := strings.NewReader("{\n \"thread_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"metadata\": {},\n \"if_exists\": \"raise\",\n \"ttl\": {\n \"strategy\": \"delete\",\n \"ttl\": 123\n },\n \"supersteps\": [\n {\n \"updates\": [\n {\n \"as_node\": \"<string>\",\n \"values\": [\n {}\n ],\n \"command\": {\n \"update\": {},\n \"resume\": {},\n \"goto\": {\n \"node\": \"<string>\",\n \"input\": {}\n }\n }\n }\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/threads")
.header("Content-Type", "application/json")
.body("{\n \"thread_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"metadata\": {},\n \"if_exists\": \"raise\",\n \"ttl\": {\n \"strategy\": \"delete\",\n \"ttl\": 123\n },\n \"supersteps\": [\n {\n \"updates\": [\n {\n \"as_node\": \"<string>\",\n \"values\": [\n {}\n ],\n \"command\": {\n \"update\": {},\n \"resume\": {},\n \"goto\": {\n \"node\": \"<string>\",\n \"input\": {}\n }\n }\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/threads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"thread_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"metadata\": {},\n \"if_exists\": \"raise\",\n \"ttl\": {\n \"strategy\": \"delete\",\n \"ttl\": 123\n },\n \"supersteps\": [\n {\n \"updates\": [\n {\n \"as_node\": \"<string>\",\n \"values\": [\n {}\n ],\n \"command\": {\n \"update\": {},\n \"resume\": {},\n \"goto\": {\n \"node\": \"<string>\",\n \"input\": {}\n }\n }\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"metadata": {},
"state_updated_at": "2023-11-07T05:31:56Z",
"config": {},
"values": {},
"interrupts": {},
"ttl": {
"ttl_minutes": 123,
"expires_at": "2023-11-07T05:31:56Z"
},
"extracted": {}
}{
"detail": "<string>"
}{
"detail": "<string>"
}Create Thread
Create a thread.
curl --request POST \
--url https://api.example.com/threads \
--header 'Content-Type: application/json' \
--data '
{
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"metadata": {},
"if_exists": "raise",
"ttl": {
"strategy": "delete",
"ttl": 123
},
"supersteps": [
{
"updates": [
{
"as_node": "<string>",
"values": [
{}
],
"command": {
"update": {},
"resume": {},
"goto": {
"node": "<string>",
"input": {}
}
}
}
]
}
]
}
'import requests
url = "https://api.example.com/threads"
payload = {
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"metadata": {},
"if_exists": "raise",
"ttl": {
"strategy": "delete",
"ttl": 123
},
"supersteps": [{ "updates": [
{
"as_node": "<string>",
"values": [{}],
"command": {
"update": {},
"resume": {},
"goto": {
"node": "<string>",
"input": {}
}
}
}
] }]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
thread_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
metadata: {},
if_exists: 'raise',
ttl: {strategy: 'delete', ttl: 123},
supersteps: [
{
updates: [
{
as_node: '<string>',
values: [{}],
command: {update: {}, resume: {}, goto: {node: '<string>', input: {}}}
}
]
}
]
})
};
fetch('https://api.example.com/threads', 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.example.com/threads",
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([
'thread_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'metadata' => [
],
'if_exists' => 'raise',
'ttl' => [
'strategy' => 'delete',
'ttl' => 123
],
'supersteps' => [
[
'updates' => [
[
'as_node' => '<string>',
'values' => [
[
]
],
'command' => [
'update' => [
],
'resume' => [
],
'goto' => [
'node' => '<string>',
'input' => [
]
]
]
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.example.com/threads"
payload := strings.NewReader("{\n \"thread_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"metadata\": {},\n \"if_exists\": \"raise\",\n \"ttl\": {\n \"strategy\": \"delete\",\n \"ttl\": 123\n },\n \"supersteps\": [\n {\n \"updates\": [\n {\n \"as_node\": \"<string>\",\n \"values\": [\n {}\n ],\n \"command\": {\n \"update\": {},\n \"resume\": {},\n \"goto\": {\n \"node\": \"<string>\",\n \"input\": {}\n }\n }\n }\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/threads")
.header("Content-Type", "application/json")
.body("{\n \"thread_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"metadata\": {},\n \"if_exists\": \"raise\",\n \"ttl\": {\n \"strategy\": \"delete\",\n \"ttl\": 123\n },\n \"supersteps\": [\n {\n \"updates\": [\n {\n \"as_node\": \"<string>\",\n \"values\": [\n {}\n ],\n \"command\": {\n \"update\": {},\n \"resume\": {},\n \"goto\": {\n \"node\": \"<string>\",\n \"input\": {}\n }\n }\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/threads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"thread_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"metadata\": {},\n \"if_exists\": \"raise\",\n \"ttl\": {\n \"strategy\": \"delete\",\n \"ttl\": 123\n },\n \"supersteps\": [\n {\n \"updates\": [\n {\n \"as_node\": \"<string>\",\n \"values\": [\n {}\n ],\n \"command\": {\n \"update\": {},\n \"resume\": {},\n \"goto\": {\n \"node\": \"<string>\",\n \"input\": {}\n }\n }\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"metadata": {},
"state_updated_at": "2023-11-07T05:31:56Z",
"config": {},
"values": {},
"interrupts": {},
"ttl": {
"ttl_minutes": 123,
"expires_at": "2023-11-07T05:31:56Z"
},
"extracted": {}
}{
"detail": "<string>"
}{
"detail": "<string>"
}Body
Payload for creating a thread.
The ID of the thread. If not provided, a random UUID will be generated.
Metadata to add to thread.
How to handle duplicate creation. Must be either 'raise' (raise error if duplicate), or 'do_nothing' (return existing thread).
raise, do_nothing The time-to-live for the thread.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Response
Success
The ID of the thread.
The time the thread was created.
The last time the thread was updated.
The thread metadata.
The status of the thread.
idle, busy, interrupted, error The last time the thread state was updated.
The thread config.
The current state of the thread.
The current interrupts of the thread.
TTL information if set for this thread. Only present when ?include=ttl is passed.
Show child attributes
Show child attributes
Extracted values from thread JSONB columns, populated when extract is specified in search request.
Was this page helpful?

