curl --request POST \
--url https://api.langtail.com/v2/threads \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <x-api-key>' \
--data '
{
"metadata": {
"user_id": "user_123",
"conversation_topic": "product_inquiry",
"priority": "high"
},
"createLog": {}
}
'import requests
url = "https://api.langtail.com/v2/threads"
payload = {
"metadata": {
"user_id": "user_123",
"conversation_topic": "product_inquiry",
"priority": "high"
},
"createLog": {}
}
headers = {
"X-API-Key": "<x-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': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
metadata: {user_id: 'user_123', conversation_topic: 'product_inquiry', priority: 'high'},
createLog: {}
})
};
fetch('https://api.langtail.com/v2/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.langtail.com/v2/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([
'metadata' => [
'user_id' => 'user_123',
'conversation_topic' => 'product_inquiry',
'priority' => 'high'
],
'createLog' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <x-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.langtail.com/v2/threads"
payload := strings.NewReader("{\n \"metadata\": {\n \"user_id\": \"user_123\",\n \"conversation_topic\": \"product_inquiry\",\n \"priority\": \"high\"\n },\n \"createLog\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<x-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.langtail.com/v2/threads")
.header("X-API-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"metadata\": {\n \"user_id\": \"user_123\",\n \"conversation_topic\": \"product_inquiry\",\n \"priority\": \"high\"\n },\n \"createLog\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.langtail.com/v2/threads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"metadata\": {\n \"user_id\": \"user_123\",\n \"conversation_topic\": \"product_inquiry\",\n \"priority\": \"high\"\n },\n \"createLog\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"projectId": "<string>",
"metadata": {},
"deletedAt": "2023-11-07T05:31:56Z",
"createLog": {}
}{
"error": {
"message": "Invalid request body"
}
}Create a Thread
Create a new thread. This endpoint allows you to initialize a conversation thread, optionally providing metadata or an initial log.
curl --request POST \
--url https://api.langtail.com/v2/threads \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <x-api-key>' \
--data '
{
"metadata": {
"user_id": "user_123",
"conversation_topic": "product_inquiry",
"priority": "high"
},
"createLog": {}
}
'import requests
url = "https://api.langtail.com/v2/threads"
payload = {
"metadata": {
"user_id": "user_123",
"conversation_topic": "product_inquiry",
"priority": "high"
},
"createLog": {}
}
headers = {
"X-API-Key": "<x-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': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
metadata: {user_id: 'user_123', conversation_topic: 'product_inquiry', priority: 'high'},
createLog: {}
})
};
fetch('https://api.langtail.com/v2/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.langtail.com/v2/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([
'metadata' => [
'user_id' => 'user_123',
'conversation_topic' => 'product_inquiry',
'priority' => 'high'
],
'createLog' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <x-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.langtail.com/v2/threads"
payload := strings.NewReader("{\n \"metadata\": {\n \"user_id\": \"user_123\",\n \"conversation_topic\": \"product_inquiry\",\n \"priority\": \"high\"\n },\n \"createLog\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<x-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.langtail.com/v2/threads")
.header("X-API-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"metadata\": {\n \"user_id\": \"user_123\",\n \"conversation_topic\": \"product_inquiry\",\n \"priority\": \"high\"\n },\n \"createLog\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.langtail.com/v2/threads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"metadata\": {\n \"user_id\": \"user_123\",\n \"conversation_topic\": \"product_inquiry\",\n \"priority\": \"high\"\n },\n \"createLog\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"projectId": "<string>",
"metadata": {},
"deletedAt": "2023-11-07T05:31:56Z",
"createLog": {}
}{
"error": {
"message": "Invalid request body"
}
}Headers
Your Langtail API Key
"<LANGTAIL_API_KEY>"
Body
A set of key-value pairs that can be attached to the thread. This can be used to store additional information about the thread to facilitate filtering or organization.
{
"user_id": "user_123",
"conversation_topic": "product_inquiry",
"priority": "high"
}
A log object that can be passed to create an initial log for the thread.
Response
Successfully created thread
The unique identifier for the created thread.
The timestamp when the thread was created.
The ID of the project this thread belongs to.
The metadata associated with the thread, if provided.
The timestamp when the thread was deleted, if applicable.
The log created by the first message that creates the thread.
Was this page helpful?