List users

Lists end users — gen_ai spans grouped by user.id, with their session, trace and observation counts, tokens and cost.

GET /v1/o11y/llm/users

Addresshttps://api.hanzo.ai/v1/o11y/llm/users
MethodGET
OperationListLLMUsers
AuthAuthorization: Bearer $HANZO_API_KEY

Lists end users — gen_ai spans grouped by user.id, with their session, trace and observation counts, tokens and cost.

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

Request

9 fields.

FieldInTypeRequiredDescription
startqueryinteger—Start is the start of the window as a unix-millisecond epoch.
endqueryinteger—End is the end of the window as a unix-millisecond epoch.
traceIdquerystring—TraceID narrows the view to one trace.
sessionIdquerystring—SessionID narrows the view to one conversation.
userIdquerystring—UserID narrows the view to one end user.
namequerystring—Name narrows the view to observations of one name.
modelquerystring—Model narrows the view to one model.
offsetqueryinteger—Offset is how many rows to skip, for paging.
limitqueryinteger—Limit caps how many rows come back.

Response

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

200 body — 13 fields.

FieldInTypeAlwaysDescription
databodyo11y.O11yLLMUsersPage—
data.itemsbodyo11y.O11yLLMUser[]—Items are the end users, newest first.
data.items[].completionTokensbodyinteger (int64)—CompletionTokens is their total output tokens.
data.items[].idbodystring—ID is the end user's id (user.id).
data.items[].observationsbodyinteger (int64)—Observations is how many observations they produced.
data.items[].promptTokensbodyinteger (int64)—PromptTokens is their total input tokens.
data.items[].sessionsbodyinteger (int64)—Sessions is how many conversations they had.
data.items[].totalCostbodynumber (double)—TotalCost is their total cost.
data.items[].totalTokensbodyinteger (int64)—TotalTokens is their total tokens.
data.items[].tracesbodyinteger (int64)—Traces is how many traces they produced.
data.limitbodyinteger (int64)—Limit is the page cap the read ran with.
data.offsetbodyinteger (int64)—Offset is the row offset this page started at.
statusbodystring—Status is "success".

Failure carries the platform error shape — see Errors.

Examples

hanzo o11y llm users
import { Configuration, O11yApi } from 'hanzoai';

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

resp, _, err := client.O11yAPI.ListLLMUsers(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::list_llm_users(&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).listLLMUsers();
curl https://api.hanzo.ai/v1/o11y/llm/users \
  -H "Authorization: Bearer $HANZO_API_KEY"

Tool o11y, op ListLLMUsers — POST the JSON-RPC envelope to https://api.hanzo.ai/v1/mcp.

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

O11y API · All Hanzo APIs · Interactive reference

Was this page useful?