List traces

Retrieves a paginated list of traces matching your filters. This endpoint supports both `POST` (recommended for complex filters) and `GET` for simple queries. ## Authentication All endpoints require API key authentication: ```bash Authorization: Bearer YOUR_API_KEY ``` ## Query Parameters | Parameter | Type | Default | Description | |-----------|------|---------|-------------| | `start_time` | ISO 8601 | 1 hour ago | Start of time range | | `end_time` | ISO 8601 | Current time | End of time range | | `page` | integer | 1 | Page number | | `page_size` | integer | 50 | Results per page (max 1000) | | `sort_by` | string | `-timestamp` | Sort field (prefix `-` for descending) | | `environment` | string | All | Filter by environment | ### Supported Sort Fields - `timestamp`, `start_time`, `end_time`, `duration` - `total_cost`, `total_tokens`, `total_prompt_tokens`, `total_completion_tokens` - `span_count`, `llm_call_count`, `error_count` ## Request Body (POST) Use filters to refine results server-side. See the [Filters API Reference](/api-reference/reference/filters-api-reference) for complete operators and format documentation. ```json Request { "filters": { "total_cost": { "operator": "gte", "value": [0.01] }, "customer_identifier": { "operator": "", "value": ["user@example.com"] } } } ``` ### Available Filter Fields - `trace_unique_id`, `customer_identifier`, `environment` - `span_count`, `llm_call_count`, `error_count` - `total_cost`, `total_tokens`, `total_prompt_tokens`, `total_completion_tokens` - `duration`, `workflow_name` (span_workflow_name) - Custom metadata via `metadata__your_field` ## Examples ```python Python url = "https://api.respan.ai/api/traces/list/" headers = {"Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json"} params = { "start_time": "2024-01-15T00:00:00Z", "end_time": "2024-01-15T23:59:59Z", "page_size": 20, "sort_by": "-total_cost" } body = { "filters": { "environment": {"operator": "", "value": ["production"]}, "total_cost": {"operator": "gte", "value": [0.01]} } } response = requests.post(url, headers=headers, params=params, json=body) print(response.json()) ``` ```bash cURL curl -X POST "https://api.respan.ai/api/traces/list/?start_time=2024-01-15T00:00:00Z&end_time=2024-01-15T23:59:59Z&page_size=20&sort_by=-total_cost" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "filters": { "total_cost": {"operator": "gte", "value": [0.01]}, "environment": {"operator": "", "value": ["production"]} } }' ``` ## Response ```json 200 OK { "count": 150, "next": "https://api.respan.ai/api/traces/list/?page=2", "previous": null, "results": [ { "id": "trace_abc123", "trace_unique_id": "trace_abc123", "start_time": "2024-01-15T10:30:00Z", "end_time": "2024-01-15T10:30:02.5Z", "duration": 2.5, "span_count": 5, "llm_call_count": 2, "total_prompt_tokens": 150, "total_completion_tokens": 75, "total_tokens": 225, "total_cost": 0.00345, "error_count": 0, "input": { "messages": [{"role": "user", "content": "Explain quantum computing"}] }, "output": { "choices": [ { "message": {"role": "assistant", "content": "Quantum computing is..."} } ] }, "metadata": {"user_id": "user123", "session_id": "session456"}, "customer_identifier": "user@example.com", "environment": "production", "trace_group_identifier": "workflow_v1", "name": "chat_completion", "model": "gpt-4" } ] } ``` ### Field Descriptions | Field | Type | Description | |-------|------|-------------| | `trace_unique_id` | string | Unique trace identifier | | `start_time` | datetime | When the trace started | | `end_time` | datetime | When the trace ended | | `duration` | float | Total duration in seconds | | `span_count` | integer | Total spans in the trace | | `llm_call_count` | integer | Number of LLM calls | | `total_prompt_tokens` | integer | Sum of input tokens | | `total_completion_tokens` | integer | Sum of output tokens | | `total_tokens` | integer | Total tokens used | | `total_cost` | float | Total cost in USD | | `error_count` | integer | Number of errors | | `input` | object | Root span's input (full object) | | `output` | object | Root span's output (full object) | | `metadata` | object | Custom metadata | | `customer_identifier` | string | Customer/user identifier | | `environment` | string | Environment (e.g., production, test) | | `trace_group_identifier` | string | Workflow group identifier | | `name` | string | Root span name | | `model` | string | Primary model used | ## Error Responses ```json 400 Bad Request { "detail": "Invalid parameters or filters" } ``` ```json 401 Unauthorized { "detail": "Your API key is invalid or expired, please check your API key at https://platform.respan.ai/platform/api/api-keys" } ``` ```json 500 Internal Server Error { "detail": "Server error" } ```

Authentication

AuthorizationBearer
API key authentication. Get your API key from https://platform.respan.ai/platform/api-keys

Request

This endpoint expects an object.

Response

Successful response for List traces

Errors

401
Unauthorized Error