{ "opencollection": "1.0.0", "info": { "name": "Traversal Sessions API", "version": "1.0.0" }, "request": { "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "items": [ { "info": { "name": "Sessions", "type": "folder" }, "items": [ { "info": { "name": "List sessions", "type": "http" }, "http": { "method": "GET", "url": "https://api.traversal.com/v1/sessions", "params": [ { "name": "page", "value": "", "type": "query", "description": "Page number (1-indexed)." }, { "name": "limit", "value": "", "type": "query", "description": "Number of sessions per page." } ] }, "docs": "Returns sessions created via the V1 API, scoped to the authenticated\nuser's organization. Sessions created in the web app are not included.\n\n**Requires the `admin` role.** API keys created by members can call\nevery other Sessions endpoint, but this one is admin-only because it\nreturns sessions across all users in the organization. Calls from a\nmember-role key return `403 Forbidden`.\n\nIf `page` and `limit` are both omitted, all sessions are returned in a\nsingle response.\n" }, { "info": { "name": "Create a session", "type": "http" }, "http": { "method": "POST", "url": "https://api.traversal.com/v1/sessions", "body": { "type": "json", "data": "{}" } }, "docs": "Starts a new investigation. The request returns immediately while\nTraversal investigates in the background — poll `GET /v1/sessions/{session_id}`\nuntil the session reaches the `idle` state to retrieve the result.\n\nEach organization is limited to **15 concurrent running sessions**\n(a running investigation or an in-flight follow-up both count toward\nthis limit). Exceeding the limit returns `429 Too Many Requests` with\n`retry_after`.\n" }, { "info": { "name": "Get a session", "type": "http" }, "http": { "method": "GET", "url": "https://api.traversal.com/v1/sessions/:session_id", "params": [ { "name": "session_id", "value": "", "type": "path", "description": "The unique identifier of the session." } ] }, "docs": "Retrieves a single session, including its full conversation history.\nThis is the only endpoint that populates the `messages` array — all\nother endpoints return `messages: null`.\n" }, { "info": { "name": "Send a follow-up message", "type": "http" }, "http": { "method": "POST", "url": "https://api.traversal.com/v1/sessions/:session_id/messages", "params": [ { "name": "session_id", "value": "", "type": "path", "description": "The unique identifier of the session." } ], "body": { "type": "json", "data": "{}" } }, "docs": "Sends a follow-up question on an existing session. Traversal uses the\nfull conversation history as context.\n\nThe session must be in the `idle` status. If it is `running` or\n`follow_up_running`, the API returns `409 Conflict` with `retry_after`.\nPoll `GET /v1/sessions/{session_id}` until the session status returns\nto `idle` to retrieve the assistant response.\n\nFollow-ups count toward the same **15 concurrent running sessions**\nper-organization limit as `POST /v1/sessions`. If the organization is\n" } ] } ], "bundled": true }