---
title: "POST /tracer/trace/get_graph_methods/"
method: POST
path: "/tracer/trace/get_graph_methods/"
tags: ["tracer"]
---

# POST /tracer/trace/get_graph_methods/

`POST /tracer/trace/get_graph_methods/`

## Request

- Base URL: `http://localhost:8000`
- URL: `http://localhost:8000/tracer/trace/get_graph_methods/`
- Auth: one of:
  - API key in header `X-Api-Key`
  - API key in header `X-Secret-Key`

Fetch data for the observe graph with optimized queries

## Query parameters

- `allow_sampled` boolean
- `refresh` boolean

## Request body

- TraceGraphDataRequest
  - `project_id` string, uuid, required
  - `filters` object[]: On trace, span, session, graph, and eval-task bounded reads, created_at/start_time datetime filters support equals, greater_than, greater_than_or_equal, less_than, less_than_or_equal, between, not_equals, not_between, is_null, and is_not_null. Missing bounds retain the finite default window: 30 days ago for the lower bound and request-time now for the upper bound. Between and not_between use half-open [start, end) ranges; not_equals excludes one DateTime64(6) microsecond. Because the physical created_at/start_time field is non-null, is_null returns an exact empty result without a ClickHouse read and is_not_null preserves the base window. Valid contradictions also return an exact empty result.
    - `column_id` string, required: Column or attribute id to filter on.
    - `property_id` string: Optional stable namespaced Property Registry identity.
    - `display_name` string: Optional UI label for chips and saved views.
    - `source` string: Optional source surface for mixed-source filters, for example traces, datasets, or simulation.
    - `output_type` string: Optional metric output type metadata used by eval and annotation filters.
    - `filter_config` object, required
      - `filter_type` string, required: Canonical field type, for example text, number, boolean, datetime, categorical, thumbs, annotator, array, or map. Legacy json is value-sensitive for SPAN_ATTRIBUTE filters: list values become array and object values become map.
      - `filter_op` string, required: Canonical operator from api_contracts/filter_contract.json, for example equals, not_equals, in, not_in, between, not_between, is_null, or is_not_null.
      - `filter_value` unknown
      - `col_type` string: Column family such as SYSTEM_METRIC, SPAN_ATTRIBUTE, EVAL_METRIC, ANNOTATION, or NORMAL.
      - `attribute_value_types` string[]: Optional storage-family provenance aligned one-for-one with filter_value for mixed SPAN_ATTRIBUTE in/not_in filters. Null entries retain filter_type semantics for manually entered values.
  - `interval` 'hour' | 'day' | 'week' | 'month'
  - `property` string: Accepted for older clients and ignored for SYSTEM_METRIC graphs: each system metric has one statistic, named by the response's metric_statistic. Latency is always the mean (avg) span latency.
  - `req_data_config` object, required
    - `id` string, required
    - `type` 'SYSTEM_METRIC' | 'EVAL' | 'ANNOTATION', required
    - `output_type` string
    - `eval_output_type` string
    - `choices` string[]
    - `value` unknown
    - `filter_op` string
    - `filter_value` unknown
    - `property_id` string: Stable Property Registry identity.
    - `source` 'traces' | 'sessions'
  - `observe_type` 'trace' | 'voice': Population the graph counts: every trace, or only voice calls (traces whose root span is a conversation), exactly as list_voice_calls selects them.
  - `remove_simulation_calls` boolean: Voice graphs only: exclude calls placed by a simulator phone, exactly as list_voice_calls' remove_simulation_calls does.

## Response `200`

OK

- ObserveGraphDataResponse
  - `status` boolean
  - `result` ObserveGraphDataResult, required
    - `metric_name` string, required
    - `name` string
    - `metric_statistic` 'count' | 'sum' | 'mean' | 'percentage': Statistic of the published system-metric series per bucket. Latency is always the mean (avg) of span latency, filtered or not. Absent for eval and annotation series.
    - `data` ObserveGraphDataPoint[], required: Graph points. A sampled series is published only with complete declared stratum coverage; degraded reads never publish points.
      - `timestamp` string, required
      - `value` number, nullable, required
      - `primary_traffic` number, nullable
    - `query_complete` boolean
    - `query_exact` boolean
    - `query_provenance` 'materialized_rollup' | 'bounded_candidates' | 'exact_snapshot'
    - `query_status` 'complete' | 'sampled' | 'degraded' | 'pending'
    - `query_error_code` 'sample_limit' | 'read_budget_exceeded' | 'query_failed'
    - `query_window_start` string
    - `query_window_end` string
    - `query_applied_filter_version` 'canonical-json-sha256-v1'
    - `query_applied_filter_sha256` string
    - `query_applied_filter_count` integer
    - `query_sample_size` integer
    - `query_count` integer
    - `query_elapsed_ms` number
    - `query_rows_returned` integer
    - `query_result_bytes` integer
    - `query_total_rows_lower_bound` integer
    - `query_sampled` boolean
    - `query_completed_at` string, date-time
    - `query_cached` boolean
    - `query_refresh_failed` boolean
    - `query_refreshing` boolean
    - `query_snapshot_version_ceiling` integer
    - `query_sampling_strategy` 'time_stratified_latest_state' | 'bounded_latest_state_prefix' | 'newest_trace_candidates'
    - `query_sampling_strata` integer
    - `query_sampling_strata_completed` integer

## Other responses

- `400`: Bad Request
- `500`: Internal Server Error
- `503`: Service Unavailable
- `default`: Default error response

---

[API](https://skmtc.dev/futureagi/apis/future-agi-management-api.md) · [All operations](https://skmtc.dev/futureagi/apis/future-agi-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/futureagi/apis/future-agi-management-api/revisions/c8684118e142?raw)
