List logs — GET /v1/o11y/sentinel/logs

Lists a project's captured error events, newest first, optionally narrowed to those whose message or exception text contains a search string.

GET /v1/o11y/sentinel/logs

Addresshttps://api.hanzo.ai/v1/o11y/sentinel/logs
MethodGET
Operationget_o11y_sentinel_logs
AuthAuthorization: Bearer $HANZO_API_KEY

Lists a project's captured error events, newest first, optionally narrowed to those whose message or exception text contains a search string.

Request

4 fields.

FieldInTypeRequiredDescription
projectquerystringyesProject is the project to read, as its id.
queryquerystring—Query narrows the page to events whose text contains it.
periodquerystring—Period is the window to read, relative to now — 1h, 24h, 7d, 14d, 30d.
limitqueryinteger—Limit caps how many events come back.

Response

StatusBodyMeaning
200o11y.O11yLogsOutok
202Approvalheld for approval
defaultproblem-detailsrefused

200 body — 34 fields.

FieldInTypeAlwaysDescription
databodyo11y.O11yEvents—
data.itemsbodyo11y.O11yEvent[]—Items are the events, newest first.
data.items[].culpritbodystring—Culprit is where it came from — the function or route blamed for it.
data.items[].environmentbodystring—Environment is the deployment it happened in.
data.items[].eventIdbodystring—EventID is its own id.
data.items[].fingerprintbodystring—Fingerprint is the grouping key that puts like errors in one issue.
data.items[].framesbodyo11y.O11yFrame[]—Frames are the stack, innermost first.
data.items[].frames[].columnbodyinteger (uint32)—Column is the column number.
data.items[].frames[].filebodystring—File is the file it is in.
data.items[].frames[].functionbodystring—Function is the function the frame is in.
data.items[].frames[].linebodyinteger (uint32)—Line is the line number.
data.items[].frames[].ownbodyboolean—Own marks a frame in the reporting application's own code rather than in a dependency or the runtime.
data.items[].handledbodyboolean—Handled says whether the application caught it.
data.items[].levelbodystring—Level is its severity, e.g. error, warning, info.
data.items[].messagebodystring—Message is the human-readable message.
data.items[].orgIdbodystring—OrgID is the org that owns it.
data.items[].platformbodystring—Platform is the reporting runtime, e.g. go, python, javascript.
data.items[].projectIdbodystring—ProjectID is the project it was captured for.
data.items[].receivedAtbodystring (date-time)—ReceivedAt is when it arrived here.
data.items[].releasebodystring—Release is the version that produced it.
data.items[].serverNamebodystring—ServerName is the host that reported it.
data.items[].serviceNamebodystring—ServiceName is the service that reported it.
data.items[].spanIdbodystring—SpanID is the span it belonged to.
data.items[].tagsbodyobject—Tags are the reporter's own key/value labels.
data.items[].tags.*bodystring—
data.items[].timestampbodystring (date-time)—Timestamp is when the error happened, as the reporter recorded it.
data.items[].traceIdbodystring—TraceID is the trace it belonged to.
data.items[].transactionbodystring—Transaction is the operation it happened in.
data.items[].typebodystring—Type is the exception type.
data.items[].userEmailbodystring—UserEmail is that user's email, when attached.
data.items[].userIdbodystring—UserID identifies the affected end user, when the reporter attached one.
data.items[].userIpbodystring—UserIP is that user's address, when attached.
data.items[].valuebodystring—Value is the exception value.
statusbodystring—Status is "success".

Failure carries the platform error shape — see Errors.

Examples

hanzo o11y sentinel logs --project <project>
import { Configuration, O11yApi } from 'hanzoai';

const api = new O11yApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getO11ySentinelLogs({ project: 'project' });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import O11yApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = O11yApi(client).get_o11y_sentinel_logs(project='project')
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.O11yAPI.GetO11ySentinelLogs(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, o11y_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = o11y_api::get_o11y_sentinel_logs(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.O11yApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new O11yApi(client).getO11ySentinelLogs();
curl https://api.hanzo.ai/v1/o11y/sentinel/logs?project=%3Cproject%3E \
  -H "Authorization: Bearer $HANZO_API_KEY"

MCP reaches o11y through the o11y tool, which names its 307 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_o11y_autocomplete_aggregate_attributes"
         }
       }
     }'

O11y API · All Hanzo APIs · Interactive reference

Was this page useful?