---
title: "Get current service graph topology"
method: GET
path: "/api/{org_id}/traces/service_graph/topology/current"
tags: ["Traces"]
---

# Get current service graph topology

`GET /api/{org_id}/traces/service_graph/topology/current`

## Request

- Base URL: `https://api.openobserve.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openobserve.ai/api/{org_id}/traces/service_graph/topology/current`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/openobserve/apis/openobserve-api-http/docs/api/:org_id/traces/service_graph/topology/current/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns the service graph topology for the time range (default: last 60 minutes), read from the service graph metrics.

## Path parameters

- `org_id` string, required

## Query parameters

- `start_time` integer
- `end_time` integer
- `stream_name` string

## Response `200`

Success

- ServiceGraphData: Graph format for frontend visualization
  - `edges` ServiceEdge[], required
    - `baseline_p50_latency_ns` integer, nullable: Baseline Pxx from the previous time slot (same duration, one slot older). None when this edge had no data in the previous slot.
    - `baseline_p95_latency_ns` integer, nullable
    - `baseline_p99_latency_ns` integer, nullable
    - `connection_type` string, nullable: Inferred-dependency category ("database"/"queue"/"rpc"/"external") when the target (`to`) is an uninstrumented dependency; `None` for instrumented service-to-service edges. Presence signals the UI to draw a dotted edge.
    - `error_rate` number, double, required
    - `failed_requests` integer, required
    - `from` string, nullable: Source service; None for entry-point services
    - `p50_latency_ns` integer, required
    - `p95_latency_ns` integer, required
    - `p99_latency_ns` integer, required
    - `to` string, required
    - `total_requests` integer, required
  - `meta` TopologyMeta: The v4 job's progress and unresolved counts behind a topology response.
    - `degraded` string[]: Non-essential queries that failed and were read as empty.
    - `processed_up_to` integer, nullable: Seconds; max over the org's trace streams.
    - `source` string, required: Always "v4"; kept so the response shape does not change.
    - `unresolved` UnresolvedCounts, required
      - `ambiguous` integer, required
      - `cardinality` integer, required
      - `ip_only` integer, required
      - `no_peer` integer, required
  - `nodes` ServiceNode[], required
    - `error_rate` number, double, required
    - `errors` integer, required
    - `id` string, required
    - `instances` integer, nullable: Agent nodes only: upper bound on the distinct instances seen in the range.
    - `kind` string: `service|database|queue|rpc|external|agent|tool|model`.
    - `label` string, required
    - `p50_server_ns` integer, nullable
    - `p95_server_ns` integer, nullable
    - `p99_server_ns` integer, nullable
    - `requests` integer, required
    - `service_type` string, nullable: Inferred-service category ("database"/"queue"/"rpc"/"external") when this node is an uninstrumented dependency; `None` for instrumented services. The UI renders inferred nodes with a dotted style + type icon.
    - `stream_name` string, nullable
    - `unattributed_inbound` integer, nullable: Org-scope `requests_server - instrumented inbound`; signed, service nodes only.

## Other responses

- `400`: Invalid time window (negative start_time, end_time not after start_time, end_time more than a day ahead, or longer than the data retention, at least 3650 days) or a stream name the metrics query cannot quote
- `403`: Forbidden - Enterprise feature
- `500`: Internal Server Error

---

[API](https://skmtc.dev/openobserve/apis/openobserve-api-http.md) - [All operations](https://skmtc.dev/openobserve/apis/openobserve-api-http/llms.txt) - [OpenAPI document](https://skmtc.dev/openobserve/apis/openobserve-api-http/revisions/0529b8a10252?raw)
