---
title: "List extracted facts (IMEI, room, tariff…) from the durable index — filter by call_id, kind, domain, q."
method: POST
path: "/v1/pbx/facts"
tags: ["PBX Search"]
---

# List extracted facts (IMEI, room, tariff…) from the durable index — filter by call_id, kind, domain, q.

`POST /v1/pbx/facts`

## Request

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

GET /v1/pbx/facts?call_id=&kind=&domain=hotel|pbx_provider|insurance|finance|energy|automotive|all&q=&limit=50. Facts come from transcript extract + domain dictionary; persist in pbx-index. Scoped by x-temsor-pbx-key. Idle $0. No DID sales. Right-to-erasure ready. Advanced: own PBX/Asterisk stays on customer.

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

## Request body

- object
  - `call_id` string: Filter by call id (e.g. call_msp_001).
  - `kind` string: Fact kind key (imei, oda, tarife, ...) or all.
  - `domain` 'hotel' | 'pbx_provider' | 'insurance' | 'finance' | 'energy' | 'automotive' | 'otel' | 'santral_firmasi' | 'sigorta' | 'finans' | 'enerji' | 'otomotiv' | 'msp' | 'all': Domain slice: hotel | pbx_provider | insurance | finance | energy | automotive | all (legacy keys + msp accepted).
  - `q` string: Free-text filter over kind + value + call_id.
  - `limit` integer: Max facts to return (1–200).

## Response `200`

Success

- object
  - `ok` unknown, required
  - `data` object, required
    - `pbx_id` string, nullable, required
    - `count` integer, required
    - `limit` integer, required
    - `filters` object, required
      - `call_id` string, nullable, required
      - `kind` string, required
      - `domain` string, nullable, required
      - `q` string, required
    - `facts` object[], required
      - `id` string, required
      - `call_id` string, required
      - `kind` 'imei' | 'tarife' | 'oda' | 'oda_tipi' | 'klima' | 'check_out' | 'iade' | 'sku' | 'police' | 'hasar' | 'yenileme' | 'abone' | 'kesinti' | 'fatura' | 'kart' | 'iban' | 'sube' | 'other', required
      - `value` string, required
      - `t_ms` number, nullable, required
      - `pbx_id` string, required
      - `transfer_count` integer, required
      - `path` string, required
      - `path_tr` string, required
      - `stuck_at_ext` string, nullable, required
      - `domain` 'otel' | 'santral_firmasi' | 'sigorta' | 'finans' | 'enerji' | 'otomotiv', nullable, required
      - `domain_en` 'hotel' | 'pbx_provider' | 'insurance' | 'finance' | 'energy' | 'automotive', nullable, required
      - `domain_label_tr` string, nullable, required
      - `domain_label_en` string, nullable
    - `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)
