Telecom
The telecom endpoints support two types of verification:
- Phone Possession — establishes that the user has possession of a given phone number
- Identity — matches a phone number and birth date against carrier records to return the user’s current address
ID.me recommends performing a Possession Check on the phone number prior to calling the Identity endpoint.
All telecom endpoints accept an optional verification_id in the request body. If one is not provided, a new verification will be created and returned in the response.
You can check the status of a telecom verification at either the GET /api/v2/telecom/:transaction_id endpoint or the GET /api/v2/verification/:verification_id endpoint.
If a webhook is configured for your organization, ID.me will return the initial telecom verification result to the Telecom Verification Result Webhook. The webhook POST body is the same format as the GET /api/v2/telecom/:transaction_id response.
Watch the telecom endpoints demo and the telecom mocks and errors demo for walkthroughs.
Possession - SMS
POST /api/v2/telecom/possession/sms/send
Sends a six-digit OTP to the provided phone number to establish possession. The SMS Send and SMS Confirm endpoints share the same transaction_id and together form a single transaction.
After sending, use the Possession Confirmation - SMS endpoint with the returned transaction_id to validate the code the user received.
Mocks
To simulate a failure, pass a phone number with area code 999. The last four digits of the phone number should be the error code you want to trigger. For example, to simulate error 3104 (max retries exceeded), pass the phone 9995553104.
To simulate success on the Confirm endpoint, pass any valid phone number that does not begin with 999 to the Send endpoint, then submit code 123123 to the Confirm endpoint.
Parameters
Example request
Example response
Error responses
Possession confirmation - SMS
POST /api/v2/telecom/possession/sms/confirm
Validates the OTP submitted by the user. Requires a transaction_id from a prior Possession - SMS Send request. By default, users have 5 attempts to provide the correct code before the transaction is marked as failed.
The SMS Send and SMS Confirm endpoints share the same transaction_id and together form a single transaction.
Mocks
To simulate success, submit code 123123. To simulate multiple failures, submit any code other than 123123. Failure behavior on the Send endpoint is controlled by the phone number’s area code — see Possession - SMS for details.
Parameters
Example request
Example response
Error responses
Identity
POST /api/v2/telecom/identity
Matches a phone number and birth date against carrier records. Returns the user’s current address if a match is found. Both phone and birth_date are required.
Mocks
Pass a phone number with area code 888 to trigger a success mock response. Pass a phone number with area code 999 to trigger a failure mock response.
Parameters
Example request
Example response
Failed identity verification response
A failed verification returns HTTP 200 and includes an errors array in the result. An additional_info field may be present with further detail.
Possible additional_info values for telecom identity:
- Phone cannot be reached.
- Mobile data for phone number is inaccessible.
- No data available for mobile subscriber.
- Carrier information received does not match the information on file.
- Cannot reach third party data provider.
- Invalid phone number, review number and retry.
birth_datedoes not match data on file.ssndoes not match data on file.
Error responses
Telecom verification status
GET /api/v2/telecom/:transaction_id
Returns the current status of a telecom transaction.