curl --request POST \
--url https://api.example.com/threads/{thread_id}/history \
--header 'Content-Type: application/json' \
--data '
{
"limit": 10,
"before": {},
"metadata": {},
"checkpoint": {},
"subgraphs": false,
"checkpoint_ns": "<string>"
}
'import requests
url = "https://api.example.com/threads/{thread_id}/history"
payload = {
"limit": 10,
"before": {},
"metadata": {},
"checkpoint": {},
"subgraphs": False,
"checkpoint_ns": "<string>"
}
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({
limit: 10,
before: {},
metadata: {},
checkpoint: {},
subgraphs: false,
checkpoint_ns: '<string>'
})
};
fetch('https://api.example.com/threads/{thread_id}/history', 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/{thread_id}/history",
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([
'limit' => 10,
'before' => [
],
'metadata' => [
],
'checkpoint' => [
],
'subgraphs' => false,
'checkpoint_ns' => '<string>'
]),
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/{thread_id}/history"
payload := strings.NewReader("{\n \"limit\": 10,\n \"before\": {},\n \"metadata\": {},\n \"checkpoint\": {},\n \"subgraphs\": false,\n \"checkpoint_ns\": \"<string>\"\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/{thread_id}/history")
.header("Content-Type", "application/json")
.body("{\n \"limit\": 10,\n \"before\": {},\n \"metadata\": {},\n \"checkpoint\": {},\n \"subgraphs\": false,\n \"checkpoint_ns\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/threads/{thread_id}/history")
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 \"limit\": 10,\n \"before\": {},\n \"metadata\": {},\n \"checkpoint\": {},\n \"subgraphs\": false,\n \"checkpoint_ns\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body[
{
"values": {},
"checkpoint": {
"checkpoint_id": "<string>",
"thread_id": "<string>",
"checkpoint_ns": ""
},
"next": [
"<string>"
],
"tasks": [
{}
],
"interrupts": [
{}
],
"metadata": {},
"created_at": "2023-11-07T05:31:56Z",
"parent_checkpoint": {
"checkpoint_id": "<string>",
"thread_id": "<string>",
"checkpoint_ns": ""
},
"checkpoint_id": "<string>",
"parent_checkpoint_id": "<string>"
}
]{
"error": "<string>",
"message": "<string>",
"details": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Get Thread History Post
Get the checkpoint history for a thread (POST variant).
Returns a list of past states ordered from newest to oldest. Use limit
to control how many states are returned and before to paginate.
curl --request POST \
--url https://api.example.com/threads/{thread_id}/history \
--header 'Content-Type: application/json' \
--data '
{
"limit": 10,
"before": {},
"metadata": {},
"checkpoint": {},
"subgraphs": false,
"checkpoint_ns": "<string>"
}
'import requests
url = "https://api.example.com/threads/{thread_id}/history"
payload = {
"limit": 10,
"before": {},
"metadata": {},
"checkpoint": {},
"subgraphs": False,
"checkpoint_ns": "<string>"
}
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({
limit: 10,
before: {},
metadata: {},
checkpoint: {},
subgraphs: false,
checkpoint_ns: '<string>'
})
};
fetch('https://api.example.com/threads/{thread_id}/history', 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/{thread_id}/history",
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([
'limit' => 10,
'before' => [
],
'metadata' => [
],
'checkpoint' => [
],
'subgraphs' => false,
'checkpoint_ns' => '<string>'
]),
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/{thread_id}/history"
payload := strings.NewReader("{\n \"limit\": 10,\n \"before\": {},\n \"metadata\": {},\n \"checkpoint\": {},\n \"subgraphs\": false,\n \"checkpoint_ns\": \"<string>\"\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/{thread_id}/history")
.header("Content-Type", "application/json")
.body("{\n \"limit\": 10,\n \"before\": {},\n \"metadata\": {},\n \"checkpoint\": {},\n \"subgraphs\": false,\n \"checkpoint_ns\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/threads/{thread_id}/history")
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 \"limit\": 10,\n \"before\": {},\n \"metadata\": {},\n \"checkpoint\": {},\n \"subgraphs\": false,\n \"checkpoint_ns\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body[
{
"values": {},
"checkpoint": {
"checkpoint_id": "<string>",
"thread_id": "<string>",
"checkpoint_ns": ""
},
"next": [
"<string>"
],
"tasks": [
{}
],
"interrupts": [
{}
],
"metadata": {},
"created_at": "2023-11-07T05:31:56Z",
"parent_checkpoint": {
"checkpoint_id": "<string>",
"thread_id": "<string>",
"checkpoint_ns": ""
},
"checkpoint_id": "<string>",
"parent_checkpoint_id": "<string>"
}
]{
"error": "<string>",
"message": "<string>",
"details": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Path Parameters
Body
Request model for thread history endpoint
Number of states to return
1 <= x <= 1000Return states before this checkpoint (checkpoint ID string, raw checkpoint dict, or RunnableConfig with 'configurable' key)
Filter by metadata
Checkpoint for subgraph filtering
Include states from subgraphs
Checkpoint namespace
Response
Successful Response
Channel values (messages, etc.)
Current checkpoint
Show child attributes
Show child attributes
Next nodes to execute
Tasks to execute
Interrupt data
Checkpoint metadata
Timestamp of state creation
Parent checkpoint
Show child attributes
Show child attributes
Checkpoint ID (for backward compatibility)
Parent checkpoint ID (for backward compatibility)