curl --request PATCH \
--url https://api.egp.scale.com/v5/spans/{span_id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"end_timestamp": "2023-11-07T05:31:56Z",
"output": {},
"metadata": {},
"status": "SUCCESS"
}
'import requests
url = "https://api.egp.scale.com/v5/spans/{span_id}"
payload = {
"name": "<string>",
"end_timestamp": "2023-11-07T05:31:56Z",
"output": {},
"metadata": {},
"status": "SUCCESS"
}
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({
name: '<string>',
end_timestamp: '2023-11-07T05:31:56Z',
output: {},
metadata: {},
status: 'SUCCESS'
})
};
fetch('https://api.egp.scale.com/v5/spans/{span_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.egp.scale.com/v5/spans/{span_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([
'name' => '<string>',
'end_timestamp' => '2023-11-07T05:31:56Z',
'output' => [
],
'metadata' => [
],
'status' => 'SUCCESS'
]),
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.egp.scale.com/v5/spans/{span_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"end_timestamp\": \"2023-11-07T05:31:56Z\",\n \"output\": {},\n \"metadata\": {},\n \"status\": \"SUCCESS\"\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.egp.scale.com/v5/spans/{span_id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"end_timestamp\": \"2023-11-07T05:31:56Z\",\n \"output\": {},\n \"metadata\": {},\n \"status\": \"SUCCESS\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.egp.scale.com/v5/spans/{span_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 \"name\": \"<string>\",\n \"end_timestamp\": \"2023-11-07T05:31:56Z\",\n \"output\": {},\n \"metadata\": {},\n \"status\": \"SUCCESS\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"trace_id": "<string>",
"start_timestamp": "2023-11-07T05:31:56Z",
"account_id": "<string>",
"object": "span",
"created_by": {
"id": "<string>",
"type": "user",
"object": "identity"
},
"parent_id": "<string>",
"group_id": "<string>",
"end_timestamp": "2023-11-07T05:31:56Z",
"input": {},
"output": {},
"metadata": {},
"expected": {},
"status": "SUCCESS",
"type": "STANDALONE",
"application_interaction_id": "<string>",
"application_variant_id": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Update a span
Partially update a span’s mutable fields and return the updated span.
Only the provided fields among name, end timestamp, output, metadata, and status are changed. This endpoint is available only for accounts still backed solely by Postgres: once an account begins dual-writing to the ClickHouse-backed tracing service — which is upsert-only and has no partial-update operation — PATCH returns 501 and PUT /v5/spans/batch must be used instead. Updates are authorized against the span’s parent trace, and an unknown id returns 404.
curl --request PATCH \
--url https://api.egp.scale.com/v5/spans/{span_id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"end_timestamp": "2023-11-07T05:31:56Z",
"output": {},
"metadata": {},
"status": "SUCCESS"
}
'import requests
url = "https://api.egp.scale.com/v5/spans/{span_id}"
payload = {
"name": "<string>",
"end_timestamp": "2023-11-07T05:31:56Z",
"output": {},
"metadata": {},
"status": "SUCCESS"
}
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({
name: '<string>',
end_timestamp: '2023-11-07T05:31:56Z',
output: {},
metadata: {},
status: 'SUCCESS'
})
};
fetch('https://api.egp.scale.com/v5/spans/{span_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.egp.scale.com/v5/spans/{span_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([
'name' => '<string>',
'end_timestamp' => '2023-11-07T05:31:56Z',
'output' => [
],
'metadata' => [
],
'status' => 'SUCCESS'
]),
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.egp.scale.com/v5/spans/{span_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"end_timestamp\": \"2023-11-07T05:31:56Z\",\n \"output\": {},\n \"metadata\": {},\n \"status\": \"SUCCESS\"\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.egp.scale.com/v5/spans/{span_id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"end_timestamp\": \"2023-11-07T05:31:56Z\",\n \"output\": {},\n \"metadata\": {},\n \"status\": \"SUCCESS\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.egp.scale.com/v5/spans/{span_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 \"name\": \"<string>\",\n \"end_timestamp\": \"2023-11-07T05:31:56Z\",\n \"output\": {},\n \"metadata\": {},\n \"status\": \"SUCCESS\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"trace_id": "<string>",
"start_timestamp": "2023-11-07T05:31:56Z",
"account_id": "<string>",
"object": "span",
"created_by": {
"id": "<string>",
"type": "user",
"object": "identity"
},
"parent_id": "<string>",
"group_id": "<string>",
"end_timestamp": "2023-11-07T05:31:56Z",
"input": {},
"output": {},
"metadata": {},
"expected": {},
"status": "SUCCESS",
"type": "STANDALONE",
"application_interaction_id": "<string>",
"application_variant_id": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Headers
Path Parameters
Body
Response
Successful Response
id for grouping traces together, uuid is recommended
256"span"The identity that created the entity.
Show child attributes
Show child attributes
Reference to a parent span_id
Reference to a group_id
SUCCESS, ERROR, CANCELED TEXT_INPUT, TEXT_OUTPUT, COMPLETION_INPUT, COMPLETION, KB_RETRIEVAL, KB_INPUT, RERANKING, EXTERNAL_ENDPOINT, PROMPT_ENGINEERING, DOCUMENT_INPUT, MAP_REDUCE, DOCUMENT_SEARCH, DOCUMENT_PROMPT, CUSTOM, CODE_EXECUTION, DATA_MANIPULATION, EVALUATION, FILE_RETRIEVAL, KB_ADD_CHUNK, KB_MANAGEMENT, GUARDRAIL, OUTPUT_GUARDRAIL, TRACER, AGENT_TRACER, AGENT_WORKFLOW, STANDALONE The interaction ID this span belongs to
The id of the application variant this span belongs to

