SDK — Traces

The rivano.traces resource gives you programmatic access to every proxied request — its status, cost, token usage, spans, and quality scores.

List traces

import Rivano from '@rivano/sdk';

const rivano = new Rivano({ apiKey: 'rv_...' });

const { data, total } = await rivano.traces.list({
  agentId: 'agent_abc123',
  status: 'error',
  environment: 'production',
  limit: 25,
  offset: 0,
});

console.log(`${total} matching traces`);
for (const trace of data) {
  console.log(trace.id, trace.status, `${trace.durationMs}ms`, `$${trace.costUsd}`);
}

TraceFilters parameters

ParameterTypeDescription
agentIdstringFilter to traces for a specific agent
status'success' | 'error'Filter by request outcome
environmentstringFilter by environment: production, staging, etc.
sessionIdstringFilter to a specific user session
startTimestringISO 8601 start of time range
endTimestringISO 8601 end of time range
limitnumberPage size (default: 50, max: 200)
offsetnumberPagination offset

Get a single trace

Returns full trace detail including all spans and quality scores:

import Rivano from '@rivano/sdk';

const rivano = new Rivano({ apiKey: 'rv_...' });

const trace = await rivano.traces.get('trace_xyz789');

console.log('Status:', trace.status);
console.log('Duration:', trace.durationMs, 'ms');
console.log('Cost:', `$${trace.costUsd}`);
console.log('Tokens:', trace.inputTokens, 'in /', trace.outputTokens, 'out');

for (const span of trace.spans) {
  console.log(`  ${span.name}: ${span.durationMs}ms`);
}

for (const score of trace.scores) {
  console.log(`  Score ${score.name}: ${score.value}`);
}

Aggregate stats

traces.stats() returns aggregate metrics over a filtered set of traces:

import Rivano from '@rivano/sdk';

const rivano = new Rivano({ apiKey: 'rv_...' });

const stats = await rivano.traces.stats({
  agentId: 'agent_abc123',
  startTime: '2026-01-01T00:00:00Z',
  endTime: '2026-04-01T00:00:00Z',
});

console.log('Total requests:', stats.total);
console.log('Success:', stats.success);
console.log('Error:', stats.error);
console.log('Avg latency:', stats.avgDurationMs, 'ms');
console.log('Total cost:', `$${stats.totalCost}`);
console.log('Total tokens:', stats.totalInputTokens + stats.totalOutputTokens);

Stats response fields

FieldTypeDescription
totalnumberTotal matching traces
successnumberTraces with status success
errornumberTraces with status error
avgDurationMsnumberAverage request duration
totalCostnumberTotal estimated cost in USD
totalInputTokensnumberSum of input tokens
totalOutputTokensnumberSum of output tokens
💡

Combine traces.stats() with date ranges to build cost trend dashboards or SLA reports. For fine-grained cost breakdowns by agent and model, use rivano.costs.breakdown() instead.

Error handling

ErrorWhen it occurs
SdkAuthErrorInvalid API key
SdkNotFoundErrorTrace ID does not exist
SdkErrorInvalid filter parameters