mapier docs

POST /v1/handle-check

Ask Apple whether an address can receive iMessages, before you try to send.

POST /v1/handle-check

Asks Apple's directory whether an address is reachable on iMessage. Use it to avoid sending into a void — a number that is Android-only, or an Apple ID that does not exist.

Unlike commands, this is a synchronous read. The answer is in the HTTP response; nothing arrives on the stream.

Request

Prop

Type

curl $MAPIER_BASE_URL/v1/handle-check \
  -H "Authorization: Bearer $MAPIER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "address": "+14155550100" }'

Response

200 — reachable
{ "address": "+14155550100", "available": true, "idStatus": 1 }
200 — not reachable
{ "address": "+14155550100", "available": false, "idStatus": 0 }

Prop

Type

When the check cannot run

A 503 with a reason explains why. Every reason is retry-later except invalid_target, which is a definitive answer that the address was refused.

503
{ "error": "handle_check_unavailable", "reason": "read_in_flight" }
reasonMeaningRetry?
read_in_flightAnother check is already running — reads are single-flight per MacYes, shortly
connector_offlineThe Mac is not connectedYes, with backoff
not_configuredHandle checking is not provisioned for this accountNo — contact Mapier
capability_unavailableThe Mac does not support handle checksNo
deadline_exceededApple did not answer in timeYes
session_closedThe session ended mid-readYes
response_rejectedThe response failed validationYes
read_failedThe read failed on the hostYes
invalid_targetApple refused the addressNo — treat as unreachable

Because reads are single-flight per Mac, the rate limit here is deliberately modest and read_in_flight is common under concurrency. Check addresses serially, or cache the result — reachability rarely changes.

Errors

StatusCodeCause
400invalid_addressNot E.164 or a lowercase email, or the body was not valid JSON
401unauthenticatedNo credential
405method_not_allowedNot a POST
429rate_limited30 requests per minute
503handle_check_unavailableSee the reason table above

On this page