Skip to content
LinqCopy agent prompt

Check RCS capability

client.Capability.CheckRCS(ctx, body) (*HandleCheckResponse, error)
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
HandleCheck param.Field[HandleCheck]
ReturnsExpand Collapse
type HandleCheckResponse struct{…}
Address string

The recipient address that was checked

Available bool

Whether the recipient supports the checked messaging service

Reason HandleCheckResponseReasonOptional

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.

SelectedService stringOptional

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

package main

import (
  "context"
  "fmt"

  "github.com/linq-team/linq-go"
  "github.com/linq-team/linq-go/option"
)

func main() {
  client := linqgo.NewClient(
    option.WithAPIKey("My API Key"),
  )
  handleCheckResponse, err := client.Capability.CheckRCS(context.TODO(), linqgo.CapabilityCheckRCSParams{
    HandleCheck: linqgo.HandleCheckParam{
      Address: "+15551234567",
    },
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", 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
}