The Spans List endpoint allows you to retrieve past spans with specified filters.
Response fields
Each log in the response includes:
Universal fields (All Span Types)
input (string): JSON-serialized representation of the span’s input data
output (string): JSON-serialized representation of the span’s output data
log_type (string): Type of span ("chat", "embedding", "workflow", etc.)
Evaluation Scores
scores (object): Map of evaluator scores { evaluator_id: score_data }
- Each evaluator’s score includes:
evaluator_name (string): Name of the evaluator
evaluator_slug (string): Slug identifier for the evaluator
score_value (float): Numerical or boolean score value (booleans represented as 0.0 or 1.0)
Legacy compatibility
For log_type="chat", "completion", "text", or "response":
prompt_messages (array): Full input messages array (extracted from input)
completion_message (object): Full output message object (extracted from output)
For other span types (embedding, workflow, etc.), type-specific fields are extracted based on the log_type. See log types for details.
Query parameters
You can add these parameters to the URL query string.
For example:
start_time string required: The start time for filtering spans in ISO 8601 format. If not provided, defaults to 1 hour ago.
Example
end_time string required: The end time for filtering spans in ISO 8601 format. If not provided, defaults to current time.
Example
-
sort_by string required: The field to sort by. Default is -id (same as sort by -timestamp, but with better performance).
- is for descending order, if not provided, it will be in ascending order.
Properties
-
id string: Sort by the ID of each request.
-
cost string: Sort by the cost of each request.
-
time_to_first_token string: TTFT - useful for Voice AI applications
-
latency string: Generation time of each request.
-
prompt_tokens string: Input / prompt tokens of each request.
-
completion_tokens string: Output / completion tokens of each request.
-
all_tokens string: Total tokens of each request.
” type=“string”>
Sort by evaluator score. Use the evaluator’s UUID as the suffix. Example: scores__d4f46e95-73ff-4166-8581-928c1a1b1589
Example
-
all_envs string: Whether to include spans from all environments. is_test parameter will override this parameter.
Options: true, false.
-
is_test string: Whether the span is a test call or not. This parameter will override the all_envs parameter.
Options: true, false.
-
fetch_filters string: Whether to retrieve the available filtering options. Enabling this could slow down the response time.
Options: true, false.
-
page_size number: The number of spans to return per page. Maximum is 1000.
-
page number: The page number of the current spans.
-
include_fields string: Comma separated fields to be included in the response spans. This parameter allows you to specify which fields should be returned to improve performance and reduce response size.
include_fields guarantees the listed fields will be present in each span item, but it does not enforce exclusivity. The API may still return additional fields required for the endpoint (e.g., identifiers, pagination-related fields, or internal metadata).
Example
URL-based Filtering (Quick Filters)
You can filter spans directly via URL query parameters. This is useful for sharing filtered views, bookmarking, or building dynamic filter links.
Basic Syntax
Simple filtering:
Advanced filtering with operators:
Parameters
[value]: The filter value (required)
[operator]: Comparison operator (optional, defaults to "" for equality)
"" (empty): Exact match (is)
"not": Not equal (is not)
[connector]: Logic connector (optional, defaults to "AND")
"AND": Combine with previous filter using AND
"OR": Combine with previous filter using OR
Field Auto-Detection
The system automatically detects how to handle each URL parameter:
- Pagination/Sort parameters: Skipped (page, page_size, sort_by, etc.)
- Metadata fields starting with “metadata__”: Filter custom metadata
- Known span fields: Filter directly on that field
- Unknown fields: Treated as custom metadata (auto-prefix “metadata__“)
Known span fields
These fields can be filtered directly without the metadata__ prefix:
- Identifiers:
customer_identifier, custom_identifier, thread_identifier, prompt_id, unique_id
- Tracing:
trace_unique_id, span_name, span_workflow_name
- Provider/Model:
model, deployment_name, provider_id
- Status:
status_code, status, error_message
- Config:
environment, log_type, stream, temperature, max_tokens
- Metrics:
cost, latency, tokens_per_second, time_to_first_token, prompt_tokens, completion_tokens, total_request_tokens
Map-type Fields (Double Underscore Prefix)
- Custom metadata:
metadata__<key> - Filter on custom metadata properties
- Evaluator scores:
scores__<evaluator_id> - Filter/sort by evaluation scores (see below)
URL Filter Examples
Filter by customer identifier
Filter with operator (status code not equal to 200)
Filter by custom metadata (auto-detected)
Explicit metadata filter
Multiple filters with OR logic
Mixed known and unknown fields
Combining Multiple Filters
Multiple URL filters can be combined. All filters are joined with AND logic by default, or you can use the [connector] parameter for OR logic.
Example: Combined filters
Limitations
- Simple
?field=value syntax supports only equality ("") and not-equal ("not") operators
- For complex operators (
gt, gte, lt, lte, contains, etc.), use the bracket syntax: ?field[value]=X&field[operator]=gt
- Each field can only have one value in URL (no arrays)
- All URL values are treated as strings
Sorting and Filtering by Evaluation Scores
You can sort and filter spans by evaluator scores using the scores__ prefix pattern (consistent with metadata__ filtering).
Sorting by Scores
How to find your evaluator_id:
- The
evaluator_id is the key in the scores object returned in span responses
- It’s the same as the UUID of the evaluator in your organization
- Example: If your scores object has
"d4f46e95-73ff-4166-8581-928c1a1b1589": {...}, use sort_by=-scores__d4f46e95-73ff-4166-8581-928c1a1b1589
Filtering by Scores
Use POST body filters to filter spans by score values:
Filter spans with score greater than 4.0
Filter spans with score less than or equal to 2.0
Supported operators for score filters:
"" (empty): Equal to
"gt": Greater than
"gte": Greater than or equal
"lt": Less than
"lte": Less than or equal
"not": Not equal to
Note: Score filtering and sorting leverage ClickHouse Map type indexes for efficient queries on large datasets.
Body parameters
You can add these parameters to the request body:
filters object: The filters to be applied to the spans. For available options in the response body, use the fetch_filters parameter.
If you want to filter your custom properties, you should add metadata__+ your custom property name. For example, if you want to filter your custom property my_custom_property, you should add metadata__my_custom_property to the filters.
Example
-
operator string required: Default is "" (equal).
Properties
Example
-
iexact string: case insensitive equal
-
lt string: Less than
-
lte string: Less than or equal
-
gt string: Greater than
-
gte string: Greater than or equal
-
contains string: Contains
-
endswith string: Ends with
-
startswith string: Starts with
-
in string: Can be used in arrays or text
-
isnull string: Check if the field is null
-
icontains string: Case insensitive contains
-
not string: Not equal