Diff a forked Session against its source
curl --request GET \
--url https://api.checkfu.com/v1/sessions/{id}/diff \
--header 'Authorization: Bearer <token>' \
--header 'checkfu-version: <checkfu-version>'import requests
url = "https://api.checkfu.com/v1/sessions/{id}/diff"
headers = {
"checkfu-version": "<checkfu-version>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'checkfu-version': '<checkfu-version>', Authorization: 'Bearer <token>'}
};
fetch('https://api.checkfu.com/v1/sessions/{id}/diff', 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.checkfu.com/v1/sessions/{id}/diff",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"checkfu-version: <checkfu-version>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.checkfu.com/v1/sessions/{id}/diff"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("checkfu-version", "<checkfu-version>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.checkfu.com/v1/sessions/{id}/diff")
.header("checkfu-version", "<checkfu-version>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.checkfu.com/v1/sessions/{id}/diff")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["checkfu-version"] = '<checkfu-version>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"source": "<string>",
"branch": "<string>",
"through_event": "<string>",
"through_sequence": 123,
"source_tail": {
"session": "<string>",
"positions": 1,
"events": 1,
"unavailable": 1,
"by_type": [
{
"type": "<string>",
"count": 123
}
],
"settled": {
"type": "<string>",
"seq": 123
},
"last_seq": 1,
"complete": true
},
"branch_tail": {
"session": "<string>",
"positions": 1,
"events": 1,
"unavailable": 1,
"by_type": [
{
"type": "<string>",
"count": 123
}
],
"settled": {
"type": "<string>",
"seq": 123
},
"last_seq": 1,
"complete": true
},
"projection": {
"source_status": "<string>",
"branch_status": "<string>",
"diverged_fields": [
"<string>"
]
},
"source_outcome": {
"outcome": "<string>",
"iteration": 1,
"result": "<string>"
},
"branch_outcome": {
"outcome": "<string>",
"iteration": 1,
"result": "<string>"
},
"source_context": {
"cumulative_tokens": 1,
"current_context_tokens": 1,
"condensations": 1
},
"branch_context": {
"cumulative_tokens": 1,
"current_context_tokens": 1,
"condensations": 1
},
"wire": {
"canonical_form_version": 1,
"source_calls": 1,
"branch_calls": 1,
"compared": 1,
"matched": 1,
"unreadable": 1,
"truncated": true,
"first_divergence": {
"index": 1,
"source_seq": 123,
"branch_seq": 123
}
}
}{
"error": {
"type": "validation.malformed",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#validation-malformed"
}
}{
"error": {
"type": "auth.invalid_key",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-invalid-key"
}
}{
"error": {
"type": "auth.disabled_tenancy",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-disabled-tenancy"
}
}{
"error": {
"type": "validation.not_found",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#validation-not-found"
}
}{
"error": {
"type": "budget.exceeded",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#budget-exceeded"
}
}{
"error": {
"type": "runtime.internal",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#runtime-internal"
}
}Diff a forked Session against its source
Compares a fork with its recorded source: id must be a fork, and lineage is read from the branch’s own ledger rather than from anything the caller claims.
GET
/
v1
/
sessions
/
{id}
/
diff
Diff a forked Session against its source
curl --request GET \
--url https://api.checkfu.com/v1/sessions/{id}/diff \
--header 'Authorization: Bearer <token>' \
--header 'checkfu-version: <checkfu-version>'import requests
url = "https://api.checkfu.com/v1/sessions/{id}/diff"
headers = {
"checkfu-version": "<checkfu-version>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'checkfu-version': '<checkfu-version>', Authorization: 'Bearer <token>'}
};
fetch('https://api.checkfu.com/v1/sessions/{id}/diff', 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.checkfu.com/v1/sessions/{id}/diff",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"checkfu-version: <checkfu-version>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.checkfu.com/v1/sessions/{id}/diff"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("checkfu-version", "<checkfu-version>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.checkfu.com/v1/sessions/{id}/diff")
.header("checkfu-version", "<checkfu-version>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.checkfu.com/v1/sessions/{id}/diff")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["checkfu-version"] = '<checkfu-version>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"source": "<string>",
"branch": "<string>",
"through_event": "<string>",
"through_sequence": 123,
"source_tail": {
"session": "<string>",
"positions": 1,
"events": 1,
"unavailable": 1,
"by_type": [
{
"type": "<string>",
"count": 123
}
],
"settled": {
"type": "<string>",
"seq": 123
},
"last_seq": 1,
"complete": true
},
"branch_tail": {
"session": "<string>",
"positions": 1,
"events": 1,
"unavailable": 1,
"by_type": [
{
"type": "<string>",
"count": 123
}
],
"settled": {
"type": "<string>",
"seq": 123
},
"last_seq": 1,
"complete": true
},
"projection": {
"source_status": "<string>",
"branch_status": "<string>",
"diverged_fields": [
"<string>"
]
},
"source_outcome": {
"outcome": "<string>",
"iteration": 1,
"result": "<string>"
},
"branch_outcome": {
"outcome": "<string>",
"iteration": 1,
"result": "<string>"
},
"source_context": {
"cumulative_tokens": 1,
"current_context_tokens": 1,
"condensations": 1
},
"branch_context": {
"cumulative_tokens": 1,
"current_context_tokens": 1,
"condensations": 1
},
"wire": {
"canonical_form_version": 1,
"source_calls": 1,
"branch_calls": 1,
"compared": 1,
"matched": 1,
"unreadable": 1,
"truncated": true,
"first_divergence": {
"index": 1,
"source_seq": 123,
"branch_seq": 123
}
}
}{
"error": {
"type": "validation.malformed",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#validation-malformed"
}
}{
"error": {
"type": "auth.invalid_key",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-invalid-key"
}
}{
"error": {
"type": "auth.disabled_tenancy",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-disabled-tenancy"
}
}{
"error": {
"type": "validation.not_found",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#validation-not-found"
}
}{
"error": {
"type": "budget.exceeded",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#budget-exceeded"
}
}{
"error": {
"type": "runtime.internal",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#runtime-internal"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Available options:
2026-08-31 Path Parameters
Pattern:
^sess_[0-9a-f]{32}$Query Parameters
Available options:
true Response
Success
Pattern:
^sess_[0-9a-f]{32}$Pattern:
^sess_[0-9a-f]{32}$Pattern:
^evt_[0-9a-f]{32}$Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes