---
title: "Resolve External Ids"
method: GET
path: "/api/contacts/resolve-external-ids"
tags: ["contacts", "contacts"]
---

# Resolve External Ids

`GET /api/contacts/resolve-external-ids`

## Request

- Base URL: `https://api.dialogbrain.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.dialogbrain.com/api/contacts/resolve-external-ids`
- Auth: none declared

Resolve raw channel-side external IDs to human-readable contact names.

Used by the agent-trigger "Restrict to specific senders" UI to render
chips with the contact's display name instead of raw numeric IDs.
`entity.channel_ref` stores the channel-prefixed form
(`<channel>:<external_id>`) so we match on the suffix.

Returns one entry per supplied id. If a row can't be resolved
(no `entity` match in the workspace), the id is echoed back with
`channel=null` and `title=null` — the UI falls back to displaying
the raw id, which is still better than failing the page.

Workspace-scoped via the `entity.workspace_id` predicate
(`get_workspace_session` already routes the DB connection, but
we add the explicit filter as defense-in-depth — entity rows
are not partitioned).

## Query parameters

- `ids` string, required: Comma-separated channel external IDs to resolve.

## Response `200`

Successful Response

- ResolveExternalIdsResponse
  - `resolved` ResolvedSender[], required
    - `external_id` string, required
    - `channel` string, nullable
    - `title` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/dialogbrain/apis/dialogbrain-v2-api-gateway.md) · [All operations](https://skmtc.dev/dialogbrain/apis/dialogbrain-v2-api-gateway/llms.txt) · [OpenAPI document](https://skmtc.dev/dialogbrain/apis/dialogbrain-v2-api-gateway/revisions/77bef09a9209?raw)
