openapi: 3.1.0 info: title: LangWatch Agents Analytics API version: 1.0.0 description: LangWatch openapi spec servers: - url: https://app.langwatch.ai security: - project_api_key: [] tags: - name: Analytics paths: /api/analytics/timeseries: post: responses: '200': description: Timeseries analytics data with current and previous periods content: application/json: schema: type: object properties: currentPeriod: type: array items: type: object additionalProperties: {} previousPeriod: type: array items: type: object additionalProperties: {} required: - currentPeriod - previousPeriod '400': description: Bad Request content: application/json: schema: type: object properties: error: type: string message: type: string required: - error '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string message: type: string required: - error '422': description: Unprocessable Entity content: application/json: schema: type: object properties: error: type: string message: type: string required: - error '500': description: Internal Server Error content: application/json: schema: type: object properties: error: type: string message: type: string required: - error operationId: postApiAnalyticsTimeseries parameters: [] description: Query analytics timeseries data with metrics, aggregations, and filters requestBody: content: application/json: schema: type: object properties: startDate: anyOf: - type: number - type: string endDate: anyOf: - type: number - type: string query: type: string filters: type: object properties: topics.topics: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string topics.subtopics: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string metadata.user_id: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string metadata.thread_id: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string metadata.customer_id: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string metadata.labels: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string metadata.key: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string metadata.value: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string metadata.prompt_ids: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string traces.origin: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string traces.error: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string traces.name: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string spans.type: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string spans.model: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.evaluator_id: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.evaluator_id.guardrails_only: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.evaluator_id.has_passed: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.evaluator_id.has_score: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.evaluator_id.has_label: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.passed: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.score: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.state: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.label: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string events.event_type: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string events.metrics.key: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string events.metrics.value: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string events.event_details.key: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string annotations.hasAnnotation: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string additionalProperties: false default: {} traceIds: type: array items: type: string negateFilters: type: boolean series: type: array items: type: object properties: metric: type: string enum: - metadata.trace_id - metadata.user_id - metadata.thread_id - metadata.span_type - sentiment.thumbs_up_down - performance.completion_time - performance.first_token - performance.total_cost - performance.prompt_tokens - performance.completion_tokens - performance.total_tokens - performance.tokens_per_second - events.event_type - events.event_score - events.event_details - evaluations.evaluation_score - evaluations.evaluation_pass_rate - evaluations.evaluation_runs - threads.average_duration_per_thread key: type: string subkey: type: string aggregation: type: string enum: - terms - cardinality - avg - sum - min - max - median - p99 - p95 - p90 pipeline: type: object properties: field: type: string enum: - trace_id - user_id - thread_id - customer_id aggregation: type: string enum: - sum - avg - min - max required: - field - aggregation filters: type: object properties: topics.topics: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string topics.subtopics: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string metadata.user_id: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string metadata.thread_id: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string metadata.customer_id: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string metadata.labels: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string metadata.key: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string metadata.value: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string metadata.prompt_ids: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string traces.origin: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string traces.error: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string traces.name: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string spans.type: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string spans.model: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.evaluator_id: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.evaluator_id.guardrails_only: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.evaluator_id.has_passed: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.evaluator_id.has_score: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.evaluator_id.has_label: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.passed: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.score: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.state: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string evaluations.label: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string events.event_type: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string events.metrics.key: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string events.metrics.value: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string events.event_details.key: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string annotations.hasAnnotation: anyOf: - type: array items: type: string - type: object additionalProperties: type: array items: type: string - type: object additionalProperties: type: object additionalProperties: type: array items: type: string additionalProperties: false asPercent: type: boolean required: - metric - aggregation groupBy: type: string enum: - topics.topics - traces.trace_name - metadata.user_id - metadata.thread_id - metadata.customer_id - metadata.labels - metadata.model - metadata.span_type - sentiment.thumbs_up_down - events.event_type - evaluations.evaluation_passed - evaluations.evaluation_label - evaluations.evaluation_processing_state - error.has_error groupByKey: type: string timeScale: anyOf: - type: string const: full - type: integer timeZone: type: string required: - startDate - endDate - series - timeZone tags: - Analytics components: securitySchemes: project_api_key: type: apiKey in: header name: X-Auth-Token description: 'Project API key for sending traces and accessing project-scoped resources. Format: sk-lw-... (no underscore). Obtain one by creating a project via the Admin API or the LangWatch UI.' admin_api_key: type: http scheme: bearer description: 'Admin API key for organization-level operations (managing projects, API keys). Create one in Settings > API Keys or via POST /api/api-keys. Format: sk-lw-{id}_{secret}.'