---
title: "Read channel connection progress"
method: GET
path: "/channels/connection-attempts/{attemptId}"
tags: ["Channels"]
---

# Read channel connection progress

`GET /channels/connection-attempts/{attemptId}`

## Request

- Base URL: `https://platform-api.visitoai.com/m2m/v1`
- URL: `https://platform-api.visitoai.com/m2m/v1/channels/connection-attempts/{attemptId}`
- Auth: HTTP bearer

Use attemptId returned by create_channel_connection_link. Read saved progress on user request; do not run unbounded polling. Pending/authorizing/selecting requires human browser completion. Processing is uncertain and must not trigger another callback. Completed/partial returns actual saved channelIds; inspect each with get_channel to verify readiness. Failed or expired does not prove no channel was saved: reconcile returned IDs and list_channels before a new attempt. Records expire after 24 hours; a later 404 is a retention gap, not evidence of no connection. Requires `channels:read`.

## Path parameters

- `attemptId` string, required

## Response `200`

Read channel connection progress

- ChannelConnectionAttempt
  - `attemptId` string, required
  - `tenantId` string, required
  - `type` 'instagram' | 'messenger' | 'whatsapp', required
  - `provider` 'meta', required
  - `status` 'pending' | 'authorizing' | 'processing' | 'selecting' | 'completed' | 'partial' | 'failed' | 'expired', required
  - `expiresAt` string, date-time, required
  - `channelIds` string[], required
  - `failureCode` string
  - `nextAction` string, required
  - `connectionUrl` string, uri: Temporary browser link. Share with the intended business admin; do not log, index or expose to third parties.
  - `failures` object[]: Saved failed provider resources and safe reason codes. Resolve ownership_conflict with the owning business; missing_messaging_task requires provider messaging permission; activation_failed requires WhatsApp activation checks; persistence failures require reconciliation before another attempt. Raw provider text is omitted.
    - `resourceId` string, required
    - `reason` 'ownership_conflict' | 'missing_messaging_task' | 'activation_failed' | 'channel_upsert_failed' | 'binding_write_failed' | 'resource_failed', required

## Other responses

- `default`: Structured error

---

[API](https://skmtc.dev/visitoai/apis/visito-m2m-api.md) - [All operations](https://skmtc.dev/visitoai/apis/visito-m2m-api/llms.txt) - [OpenAPI document](https://skmtc.dev/visitoai/apis/visito-m2m-api/revisions/98377d35c234?raw)
