Caged DOCS
Get Started
API Reference Sessions

Sessions

Sessions represent individual agent interactions with a sandbox.

List Sessions

curl https://api.caged.dev/v1/sandboxes/cage-a1b2c3d4/sessions \
  -H "Authorization: Bearer caged_sk_..."

Response 200 OK

[
  {
    "id": "sess-a1b2c3d4",
    "sandbox_id": "cage-a1b2c3d4",
    "status": "completed",
    "agent_type": "claude-code",
    "model": "claude-sonnet-4-20250514",
    "tokens_in": 15420,
    "tokens_out": 8230,
    "cost_usd": 0.0847,
    "trust_score": 92,
    "duration_ms": 45200,
    "started_at": "2026-06-08T10:00:00Z",
    "ended_at": "2026-06-08T10:00:45Z"
  }
]

Session Fields

Field Type Description
id string Unique session ID
sandbox_id string Associated sandbox
status string active, completed, failed, timeout
agent_type string Agent identifier
model string LLM model used
tokens_in integer Total input tokens
tokens_out integer Total output tokens
cost_usd number Total cost (LLM + compute)
trust_score integer Behavioral trust score (0-100)
event_count integer Number of recorded events
duration_ms integer Session duration in milliseconds
started_at string ISO 8601 start time
ended_at string ISO 8601 end time

Get Session

curl https://api.caged.dev/v1/sessions/sess-a1b2c3d4 \
  -H "Authorization: Bearer caged_sk_..."

Returns a single session object (same shape as the list items above).

Get Session Replay

Returns the ordered event timeline for a session.

curl https://api.caged.dev/v1/sessions/sess-a1b2c3d4/replay \
  -H "Authorization: Bearer caged_sk_..."

Response 200 OK

{
  "events": [
    {
      "id": "7aa4a05a-9203-45ac-9e17-b8b7faf1ffe1",
      "session_id": "sess-a1b2c3d4",
      "sequence": 1781221257771341,
      "type": "command",
      "timestamp": "2026-06-11T23:40:57Z",
      "data": {
        "command": "echo hello",
        "exit_code": 0,
        "output": "hello\n"
      }
    }
  ],
  "has_more": false,
  "next_seq": 1781221257771341,
  "total": 1
}

Query params: after_seq (paginate; pass the previous response's next_seq), limit (default 100), type (filter by event type).

Get Replay Summary

curl https://api.caged.dev/v1/sessions/sess-a1b2c3d4/replay/summary \
  -H "Authorization: Bearer caged_sk_..."

Returns aggregate counts per event type, total duration, and the time range of the recording.

Ingest Events

Agents and SDKs push observability events in batches. The authenticated account is applied to every event server-side.

curl -X POST https://api.caged.dev/v1/events/ingest \
  -H "Authorization: Bearer caged_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "events": [
      {
        "session_id": "9f1d2c3b-...",
        "sandbox_id": "cage-a1b2c3d4",
        "type": "llm_call",
        "timestamp": "2026-06-11T23:40:57Z",
        "meta": { "agent": "claude-code" },
        "payload": {
          "model": "claude-sonnet-4",
          "provider": "anthropic",
          "tokens_in": 1200,
          "tokens_out": 350,
          "cost_usd": 0.0145
        }
      }
    ]
  }'

Response 200 OK

{ "accepted": 1, "errors": 0 }

Limits: max 1000 events per request, 4 MB body. Event types: llm_call, tool_call, file_op, command, network, error, lifecycle.

Was this page helpful?
Assistant
Responses are generated using AI and may contain mistakes.

Ask me anything about the documentation.

ESC