## Check iMessage capability

**post** `/v3/capability/check_imessage`

Check whether a recipient address (phone number or email) is reachable via iMessage.

### Body Parameters

- `address: string`

  The recipient address to check. `check_imessage` accepts an E.164 phone number or an
  email address; `check_rcs` accepts an E.164 phone number only and rejects an email
  with a `400`, since RCS has no email addressing.

- `from: optional string`

  Optional sender phone number. If omitted, an available phone from your pool is used automatically.

### Returns

- `HandleCheckResponse object { address, available, reason, selected_service }`

  - `address: string`

    The recipient address that was checked

  - `available: boolean`

    Whether the recipient supports the checked messaging service

  - `reason: optional "not_supported"`

    Why `available` is `false`. Only present on a negative result.

    `not_supported` is the only value returned with a `200`, and it means the check
    completed and the recipient is genuinely not reachable over this service. On
    `check_rcs`, sender-side faults do not return `200` — they return `503` with a
    specific error code. `check_imessage` does not use this mapping.

    - `"not_supported"`

  - `selected_service: optional string`

    The service that would actually carry a message to this address right now, which is
    not always the service you checked — a recipient without RCS resolves to `SMS`.
    Absent when the check could not determine one.

### Example

```http
curl https://api.linqapp.com/api/partner/v3/capability/check_imessage \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $LINQ_API_V3_API_KEY" \
    -d '{
          "address": "+15551234567",
          "from": "+15559876543"
        }'
```

#### Response

```json
{
  "address": "+15551234567",
  "available": true
}
```
