Skip to content

API Overview

The SideSeat REST API provides programmatic access to run data (traces), session management, and real-time streaming.

All API endpoints are prefixed with /api/v1/project/{project_id}/otel.

http://localhost:5388/api/v1/project/default/otel

The default project ID is default.

When authentication is enabled, include a Bearer token in requests:

Terminal window
curl -H "Authorization: Bearer your-token" \
http://localhost:5388/api/v1/project/default/otel/traces

See Authentication for details on obtaining tokens.

List endpoints use page-based pagination.

Query Parameters:

  • page - Page number (default: 1)
  • limit - Items per page (default: 50)

Response Fields:

  • data - Array of results
  • meta - Pagination metadata (page, limit, total_items, total_pages)
Terminal window
# First page
curl "http://localhost:5388/api/v1/project/default/otel/traces?page=1&limit=20"
# Next page
curl "http://localhost:5388/api/v1/project/default/otel/traces?page=2&limit=20"

All errors follow a consistent format:

{
"error": "error_type",
"code": "ERROR_CODE",
"message": "Human-readable error message"
}

Common Error Codes:

CodeHTTP StatusDescription
TRACE_NOT_FOUND404Trace does not exist
SPAN_NOT_FOUND404Span does not exist
SESSION_NOT_FOUND404Session does not exist
STORAGE_ERROR500Database error
AUTH_REQUIRED401Authentication required
TOKEN_EXPIRED401Token has expired
EndpointDescriptionDocs
GET /tracesList tracesTraces
GET /traces/{id}Get traceTraces
GET /traces/{id}/messagesGet trace messagesTraces
GET /spansList spansSpans
GET /traces/{trace_id}/spans/{span_id}Get spanSpans
GET /sessionsList sessionsSessions
GET /sessions/{id}Get sessionSessions
GET /sseReal-time streamSSE
GET /api/v1/health

Returns server health status:

{
"status": "ok",
"version": "1.0.5"
}

Traces are ingested via OTLP endpoints:

POST /otel/{project_id}/v1/traces
POST /otel/{project_id}/v1/metrics
POST /otel/{project_id}/v1/logs

See OpenTelemetry Reference for ingestion details.