Get a trace's logs
Every record that shares one trace id (one request across services), oldest first, at most 500, with a summary. Built from logs only: Mythic does not ingest spans. Default window 24 hours, so pass from/to around a record's timestamp for older traces. Filters and paging params answer 400 param_not_allowed. meta.complete is false when more records exist or the 4 MB bound cut the list; continue with GET /client/v1/logs?trace_id=...&order=asc&cursor=<next_cursor>.
curl -X GET "https://mythic-analytics.gulp.workers.dev/client/v1/logs/traces/5b8efff798038103d269b633813fc60c?location_id=example_string&from=2026-10-18T10%3A00%3A00Z&to=example_string&range=15m&body_max_bytes=2048" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import json
url = "https://mythic-analytics.gulp.workers.dev/client/v1/logs/traces/5b8efff798038103d269b633813fc60c?location_id=example_string&from=2026-10-18T10%3A00%3A00Z&to=example_string&range=15m&body_max_bytes=2048"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://mythic-analytics.gulp.workers.dev/client/v1/logs/traces/5b8efff798038103d269b633813fc60c?location_id=example_string&from=2026-10-18T10%3A00%3A00Z&to=example_string&range=15m&body_max_bytes=2048", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://mythic-analytics.gulp.workers.dev/client/v1/logs/traces/5b8efff798038103d269b633813fc60c?location_id=example_string&from=2026-10-18T10%3A00%3A00Z&to=example_string&range=15m&body_max_bytes=2048", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://mythic-analytics.gulp.workers.dev/client/v1/logs/traces/5b8efff798038103d269b633813fc60c?location_id=example_string&from=2026-10-18T10%3A00%3A00Z&to=example_string&range=15m&body_max_bytes=2048')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
response = http.request(request)
puts response.body
{
"success": true,
"data": {
"trace_id": "5b8efff798038103d269b633813fc60c",
"summary": {
"started_at": "2024-12-25T10:00:00Z",
"ended_at": "2024-12-25T10:00:00Z",
"duration_ms": 42,
"records": 42,
"errors": 42,
"levels": {},
"services": [
{
"service": "example_string",
"records": 42,
"errors": 42
}
],
"spans": [
{
"span_id": "eee19b7ec3c1b174",
"services": [
"example_string"
],
"first_at": "2024-12-25T10:00:00Z",
"last_at": "2024-12-25T10:00:00Z",
"records": 42,
"errors": 42
}
]
},
"records": [
{
"uuid": "example_string",
"timestamp": "2024-12-25T10:00:00Z",
"observed_at": "2024-12-25T10:00:00Z",
"received_at": "2024-12-25T10:00:00Z",
"level": "trace",
"severity_number": 42,
"severity_text": "example_string",
"service": "checkout",
"scope_name": "John Doe",
"scope_version": "example_string",
"event_name": "John Doe",
"body": "example_string",
"body_bytes": 42,
"body_truncated": true,
"attributes": {},
"resource_attributes": {},
"trace_id": "example_string",
"span_id": "example_string",
"distinct_id": "example_string",
"session_id": "example_string",
"pattern_id": "example_string"
}
],
"next_cursor": "example_string",
"meta": {
"from": "2024-12-25T10:00:00Z",
"to": "2024-12-25T10:00:00Z",
"limit": 500,
"complete": true,
"truncated": true
},
"truncated": true
}
}
{
"error": "Bad Request",
"message": "The request contains invalid parameters or malformed data",
"code": 400,
"details": [
{
"field": "email",
"message": "Invalid email format"
}
]
}
{
"error": "Not Found",
"message": "The requested resource was not found",
"code": 404
}
/client/v1/logs/traces/{trace_id}Target server for requests. Edit to use your own host.
Agency key (ak_) or location secret key (sk_). Scoped keys (mcp_) are accepted too and need logs:read. See Using an mcp_ key over HTTP.
ak_) or location secret key (sk_). Scoped keys (mcp_) are accepted too and need logs:read. See Using an mcp_ key over HTTP.32 hex characters, not all zeros.
Location to scope to. Required for ak_ keys (or send the X-Location-Id header); ignored for sk_.
Window start, ISO 8601 or epoch milliseconds. Default is range (or 1 hour) before to.
Window end, exclusive. Default now.
Preset window ending at to. Ignored when from is set. At most 30 days.
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token. Agency key (ak_) or location secret key (sk_). Scoped keys (mcp_) are accepted too and need logs:read. See Using an mcp_ key over HTTP.
Path Parameters
Query Parameters
Location to scope to. Required for ak_ keys (or send the X-Location-Id header); ignored for sk_.
Window start, ISO 8601 or epoch milliseconds. Default is range (or 1 hour) before to.
2026-10-18T10:00:00ZWindow end, exclusive. Default now.
Preset window ending at to. Ignored when from is set. At most 30 days.
15m1h6h24h7d30d