Skip to content
LinqCopy agent prompt

Check RCS capability

client.capability.checkRCS(CapabilityCheckRCSParams { address, from } body, RequestOptionsoptions?): HandleCheckResponse { address, available, reason, selected_service }
POST/v3/capability/check_rcs

Check whether a recipient address (phone number) supports RCS messaging.

address must be an E.164 phone number. RCS has no email addressing, so an email is rejected with a 400 rather than attempted.

A 200 means the check ran and the answer is about the recipient. A 503 means the check could not produce an answer because of a fault on the sender line — 4004 (RCS not turned on for the line), 4009 (line has no RCS account), or 4010 (the check could not run). Treat all three as “unknown”, never as “the recipient does not support RCS”, and do not cache them as a negative result.

ParametersExpand Collapse
body: CapabilityCheckRCSParams { address, from }
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?: string

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

ReturnsExpand Collapse
HandleCheckResponse { address, available, reason, selected_service }
address: string

The recipient address that was checked

available: boolean

Whether the recipient supports the checked messaging service

reason?: "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.

selected_service?: 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.

Check RCS capability

import LinqAPIV3 from '@linqapp/sdk';

const client = new LinqAPIV3({
  apiKey: process.env['LINQ_API_V3_API_KEY'], // This is the default and can be omitted
});

const handleCheckResponse = await client.capability.checkRCS({ address: '+15551234567' });

console.log(handleCheckResponse.address);
{
  "address": "+15551234567",
  "available": true
}
{
  "error": {
    "status": 400,
    "code": 1002,
    "message": "Phone number must be in E.164 format",
    "doc_url": "https://docs.linqapp.com/error/codes/1xxx/1002/"
  },
  "success": false
}
{
  "error": {
    "status": 401,
    "code": 2004,
    "message": "Unauthorized - missing or invalid authentication token",
    "doc_url": "https://docs.linqapp.com/error/codes/2xxx/2004/"
  },
  "success": false
}
{
  "error": {
    "status": 403,
    "code": 2005,
    "message": "Access denied - insufficient permissions for this resource",
    "doc_url": "https://docs.linqapp.com/error/codes/2xxx/2005/"
  },
  "success": false
}
{
  "error": {
    "status": 429,
    "code": 1007,
    "message": "Rate limited. Try again in 45 seconds.",
    "doc_url": "https://docs.linqapp.com/error/codes/1xxx/1007/",
    "retry_after": 45
  },
  "success": false
}
{
  "error": {
    "status": 500,
    "code": 3006,
    "message": "Internal server error",
    "doc_url": "https://docs.linqapp.com/error/codes/3xxx/3006/"
  },
  "success": false
}
{
  "error": {
    "status": 503,
    "code": 4004,
    "message": "RCS capability check is temporarily unavailable.",
    "doc_url": "https://docs.linqapp.com/error/codes/4xxx/4004/"
  },
  "success": false
}
{
  "error": {
    "status": 503,
    "code": 4009,
    "message": "This line has no RCS account configured, so RCS capability cannot be determined.",
    "doc_url": "https://docs.linqapp.com/error/codes/4xxx/4009/"
  },
  "success": false
}
{
  "error": {
    "status": 503,
    "code": 4010,
    "message": "The RCS capability check could not run on this line.",
    "doc_url": "https://docs.linqapp.com/error/codes/4xxx/4010/"
  },
  "success": false
}
Returns Examples
{
  "address": "+15551234567",
  "available": true
}
{
  "error": {
    "status": 400,
    "code": 1002,
    "message": "Phone number must be in E.164 format",
    "doc_url": "https://docs.linqapp.com/error/codes/1xxx/1002/"
  },
  "success": false
}
{
  "error": {
    "status": 401,
    "code": 2004,
    "message": "Unauthorized - missing or invalid authentication token",
    "doc_url": "https://docs.linqapp.com/error/codes/2xxx/2004/"
  },
  "success": false
}
{
  "error": {
    "status": 403,
    "code": 2005,
    "message": "Access denied - insufficient permissions for this resource",
    "doc_url": "https://docs.linqapp.com/error/codes/2xxx/2005/"
  },
  "success": false
}
{
  "error": {
    "status": 429,
    "code": 1007,
    "message": "Rate limited. Try again in 45 seconds.",
    "doc_url": "https://docs.linqapp.com/error/codes/1xxx/1007/",
    "retry_after": 45
  },
  "success": false
}
{
  "error": {
    "status": 500,
    "code": 3006,
    "message": "Internal server error",
    "doc_url": "https://docs.linqapp.com/error/codes/3xxx/3006/"
  },
  "success": false
}
{
  "error": {
    "status": 503,
    "code": 4004,
    "message": "RCS capability check is temporarily unavailable.",
    "doc_url": "https://docs.linqapp.com/error/codes/4xxx/4004/"
  },
  "success": false
}
{
  "error": {
    "status": 503,
    "code": 4009,
    "message": "This line has no RCS account configured, so RCS capability cannot be determined.",
    "doc_url": "https://docs.linqapp.com/error/codes/4xxx/4009/"
  },
  "success": false
}
{
  "error": {
    "status": 503,
    "code": 4010,
    "message": "The RCS capability check could not run on this line.",
    "doc_url": "https://docs.linqapp.com/error/codes/4xxx/4010/"
  },
  "success": false
}