---
title: "Handoff graph + transfer edges — who→whom→where the promise stuck (moat). Idle $0."
method: GET
path: "/v1/pbx/calls/graph"
tags: ["PBX Search"]
---

# Handoff graph + transfer edges — who→whom→where the promise stuck (moat). Idle $0.

`GET /v1/pbx/calls/graph`

## Request

- Base URL: `https://api.temsor.com`
- URL: `https://api.temsor.com/v1/pbx/calls/graph`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

GET /v1/pbx/calls/graph?call_id=…&stuck_at=310. Returns path, path_tr (plain-language summary), edges, and raw transfers. Compounding asset for search/orchestration: handoff edges, not a bot transcript. Idle $0. No DID sales / no live PSTN.

**Credits per call:** 1 · **Operation id:** `pbx_calls_graph`

In the GET form every field is a query parameter; object and array fields are JSON-encoded.

## Query parameters

- `call_id` string, required: Call id whose transfer graph to return.
- `stuck_at` string: Optional override for where the promise stuck (extension).

## Response `200`

Success

- object
  - `ok` unknown, required
  - `data` object, required
    - `found` boolean, required
    - `call_id` string, nullable, required
    - `call` object, nullable, required
      - `id` string, required
      - `started_at` string, required
      - `ended_at` string, nullable, required
      - `direction` 'in' | 'out', required
      - `trunk` string, required
      - `pbx_id` string, required
      - `summary` string
    - `graph` object, nullable, required
      - `call_id` string, required
      - `transfer_count` integer, required
      - `edges` object[], required
        - `from_ext` string, nullable, required
        - `to_ext` string, nullable, required
        - `t_ms` number, nullable, required
        - `reason` string, nullable, required
      - `path` string, required
      - `path_tr` string, required
      - `stuck_at_ext` string, nullable, required
      - `stuck_tr` string, nullable, required
    - `transfers` object[], required
      - `id` string, required
      - `from_ext` string, nullable, required
      - `to_ext` string, nullable, required
      - `t_ms` number, nullable, required
      - `reason` string, nullable, required
    - `note` string, required
  - `meta` object
    - `credits` integer
    - `cached` boolean
    - `requestId` string
    - `durationMs` integer

## Other responses

- `400`: Error
- `401`: Error
- `402`: Error
- `429`: Rate limit exceeded — wait `Retry-After` seconds. The RateLimit headers are sent here too.

---

[API](https://skmtc.dev/temsor/apis/temsor-api.md) · [All operations](https://skmtc.dev/temsor/apis/temsor-api/llms.txt) · [OpenAPI document](https://skmtc.dev/temsor/apis/temsor-api/revisions/19702107e15a?raw)
