List events

Lists one issue's captured occurrences, scoped to a project — a project is an isolation unit, so the caller declares which project's occurrences to read.

GET /v1/o11y/sentinel/issues/{id}/events

Addresshttps://api.hanzo.ai/v1/o11y/sentinel/issues/{id}/events
MethodGET
Operationget_o11y_sentinel_issues_by_id_events
AuthAuthorization: Bearer $HANZO_API_KEY

Lists one issue's captured occurrences, scoped to a project — a project is an isolation unit, so the caller declares which project's occurrences to read.

Callers need the viewer role; the runtime's own gate enforces it.

Request

3 fields.

FieldInTypeRequiredDescription
idpathstringyesID is the issue id.
projectquerystringyesProject is the project whose occurrences to read, by its id.
limitqueryinteger—Limit caps how many occurrences come back.

Response

StatusBodyMeaning
200o11y.O11ySentryIssueEventsOutok
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 issues events <id> --project <project>
import { Configuration, O11yApi } from 'hanzoai';

const api = new O11yApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getO11ySentinelIssuesByIdEvents({ id: 'id', 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_issues_by_id_events(id='id', project='project')
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.O11yAPI.GetO11ySentinelIssuesByIdEvents(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_issues_by_id_events(&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).getO11ySentinelIssuesByIdEvents();
curl https://api.hanzo.ai/v1/o11y/sentinel/issues/<id>/events?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?