---
title: "Capability lookup"
method: POST
path: "/v1/projects/{project_id}/capability:query"
tags: ["Capability"]
---

# Capability lookup

`POST /v1/projects/{project_id}/capability:query`

This method is asynchronous - it immediately returns the requested Capability registration. Capability check is then delivered as a callback to registered webhooks with trigger CAPABILITY for every reachable channel.

## Request body

- QueryCapability
  - `app_id` string, required — The ID of the app to use for capability lookup.
  - `recipient` union, required
    - object
      - `identified_by` ChannelIdentities
        - `channel_identities` ChannelRecipientIdentity[], required — A list of specific channel identities. The API will use these identities when sending to specific channels.
          - `channel` 'SMS' | 'RCS' | 'WHATSAPP' | 'MMS' | 'KAKAOTALK' | 'KAKAOTALKCHAT' | 'VIBERBM' | 'LINE' | 'INSTAGRAM' | 'MESSENGER' | 'WECHAT' | 'TELEGRAM' | 'APPLEBC', required — The identifier of the channel you want to include. Must be one of the enum values.
          - `identity` string, required — The channel recipient identity.
    - object
      - `contact_id` string — The ID of the contact.
  - `request_id` string — ID for the asynchronous response, will be generated if not set. Currently this field is not used for idempotency.

## Response `200`

A successful response.

- QueryCapabilityResponse — A CapabilityResponse contains the identity of the recipient for which a capability lookup will be performed.
  - `app_id` string — The ID of the app to use for capability lookup.
  - `recipient` union
    - object
      - `identified_by` ChannelIdentities
        - `channel_identities` ChannelRecipientIdentity[], required — A list of specific channel identities. The API will use these identities when sending to specific channels.
          - `channel` 'SMS' | 'RCS' | 'WHATSAPP' | 'MMS' | 'KAKAOTALK' | 'KAKAOTALKCHAT' | 'VIBERBM' | 'LINE' | 'INSTAGRAM' | 'MESSENGER' | 'WECHAT' | 'TELEGRAM' | 'APPLEBC', required — The identifier of the channel you want to include. Must be one of the enum values.
          - `identity` string, required — The channel recipient identity.
    - object
      - `contact_id` string — The ID of the contact.
  - `request_id` string — ID for the asynchronous response, will be generated if not set.

## Other responses

- `400` — Malformed request. See [common error responses](https://developers.sinch.com/docs/conversation/api-reference/#common-error-responses) for more information.
- `401` — Incorrect credentials. See [common error responses](https://developers.sinch.com/docs/conversation/api-reference/#common-error-responses) for more information.
- `403` — Correct credentials but you don't have access to the requested resource. See [common error responses](https://developers.sinch.com/docs/conversation/api-reference/#common-error-responses) for more information.
- `500` — Correct credentials but you don't have access to the requested resource. See [common error responses](https://developers.sinch.com/docs/conversation/api-reference/#common-error-responses) for more information.
- `501` — Something went wrong on our end, try again with exponential back-off. See [common error responses](https://developers.sinch.com/docs/conversation/api-reference/#common-error-responses) for more information.

---

[API](https://skmtc.net/sinch/apis/conversation-api-sinch.md) · [All operations](https://skmtc.net/sinch/apis/conversation-api-sinch/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sinch/conversation-api-sinch/revisions/bdb3e0c48bf7/schema)
