---
title: "Check messaging capabilities"
method: POST
path: "/capabilities"
---

# Check messaging capabilities

`POST /capabilities`

## Request

- Base URL: `https://osis.co/api/v1/comms`
- URL: `https://osis.co/api/v1/comms/capabilities`
- Auth: HTTP bearer

See if a phone number or email can get iMessage, RCS, or WhatsApp, without sending anything. Needs comms_read. You don't need your own line. Each channel comes back true, false, or null (unknown). The answer is only true right now and doesn't promise delivery. Emails are only checked for iMessage, so RCS comes back false and WhatsApp comes back null, both with recipient_unsupported. WhatsApp answers are cached for a few hours and rate limited.

## Request body

- object
  - `to` string, required: A phone number, or an email address used for iMessage. Up to 254 characters.
  - `default_country` string: Two-letter country code. Needed if the number is local and has no country code.

## Response `200`

What Comms found right now. null means unknown. It never means false.

- object
  - `to` string, required: The phone number in E.164 format, or the email in lowercase.
  - `imessage` boolean, nullable, required: true: yes. false: no. null: unknown.
  - `rcs` boolean, nullable, required: true: yes. false: no. null: unknown.
  - `whatsapp` boolean, nullable, required: true: the number has a WhatsApp account. false: it doesn't. null: unknown.
  - `checked_at` string, date-time, required: When Comms checked.
  - `reasons` object, required: Why a channel came back false or null. Channels that came back true have no reason.
    - `imessage` 'recipient_unregistered' | 'recipient_unsupported' | 'lookup_inconclusive' | 'recipient_lookup_unavailable'
    - `rcs` 'recipient_unregistered' | 'recipient_unsupported' | 'lookup_inconclusive' | 'recipient_lookup_unavailable'
    - `whatsapp` 'recipient_unregistered' | 'recipient_unsupported' | 'recipient_lookup_unavailable'

## Other responses

- `400`: Bad request.
- `401`: API key is missing or wrong.
- `403`: Key doesn't have the comms_read scope.
- `429`: Too many requests.
- `502`: The check couldn't finish.
- `503`: Checks are down for a moment. Try again soon.

---

[API](https://skmtc.dev/osis/apis/comms-api.md) · [All operations](https://skmtc.dev/osis/apis/comms-api/llms.txt) · [OpenAPI document](https://skmtc.dev/osis/apis/comms-api/revisions/59a4c0ba8936?raw)
