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>",
"obs_trace_id": "<string>",
"obs_span_id": "<string>",
"input_tokens": 2147483647,
"output_tokens": 2147483647
}{
"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 served solely by the legacy trace store: once an account begins dual-writing to the 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.
Credential redaction: values in the free-form input, output, metadata,
and expected objects, and in name, that are credential-shaped (bearer/JWT,
API keys, connection-string passwords) or under a credential-named key are replaced
with [REDACTED:credential] before the span is persisted, so the stored and
returned span reflects the redacted value.
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>",
"obs_trace_id": "<string>",
"obs_span_id": "<string>",
"input_tokens": 2147483647,
"output_tokens": 2147483647
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Body
Response
Successful Response
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 
