---
title: "List Channel Associations"
method: GET
path: "/channel_associations"
tags: ["channels"]
---

# List Channel Associations

`GET /channel_associations`

List the authenticated user's active channel links (#1342).

Backs the mobile on-open banner: the app reads this to decide whether to
show the "you can plan routes on WhatsApp now" nudge (mobile#726), and it
unblocks the point-2 resume-poll fallback (mobile#725) by letting a client
that missed the silent ``channel_link_result`` push confirm link-state.

Response shape (narrow read contract — see :func:`_link_state_entry`)::

    {
      "associations": [
        {"channel": "whatsapp", "status": "active", "phone_number": "+52..."}
      ],
      "whatsapp_linked": true
    }

``whatsapp_linked`` is the convenience flag the banner gates on; the list
is there for any channel-agnostic UI. ``phone_number`` is WhatsApp-only;
``display_name`` is omitted (it lives on the link-request row, not the
durable association).

## Query parameters

- `user_id` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/imperfect/apis/imperfect-api.md) · [All operations](https://skmtc.dev/imperfect/apis/imperfect-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/imperfect/imperfect-api/revisions/55d56c4beab4/schema)
