Skip to main content

Sandbox

We also offer a sandbox environment where you can test all our endpoints with all the responses that may occur while using any of our Mobile Identity services.

The URL for the sandbox environment is https://api.cm.com/mobile-identity-sandbox/v1 followed by the service's endpoint. The authentication is the same as the regular services, for more information see Authentication.

To get started using the sandbox environment, request credentials via the Mobile Identity Services Registration.

Identity Match​

Below is the data that you can test matching a request to. For more information regarding Identity Match, and its endpoint, see Identity Match.

By combining the phone number, identity data, and a service type (match or score), you can either get true or false for service type match; or 100 or 0 for service type score depending on the data below.

phoneNumberfirstNamelastNameaddresspostalCodedateOfBirth
+31610000001JorisVerhoeven1231234 AB1963-12-31
+31610000002AnnaJansen4565678 CD2019-03-01
+31610000003LarsDe Vries7899012 EF1995-07-15
+4915100000001HansMueller123123452018-12-31
+4915100000002GretaSchmidt456678901968-03-22
+4915100000003FelixWagner789543211987-11-09
+447710000001JamesSmith123AB12 3CD1980-09-28
+447710000002EmmaBrown456EF45 6GH2016-12-31
+447710000003OliverTaylor789IJ78 9KL1992-05-17
+33610000001PierreDubois123123451988-04-12
+33610000002SophieMartin456678902020-12-31
+33610000003AntoineLeroy789543212001-09-03

Example​

Request
POST https://api.cm.com/mobile-identity-sandbox/v1/identity-match
Request headers
Content-Type: application/json
Authorization: Bearer GENERATED_TOKEN_HERE
Request body
{
"phoneNumber": "+31610000001",
"serviceType": "match",
"firstName": "John",
"lastName": "Verhoeven",
"address": "123",
"postalCode": "1234 AB",
"dateOfBirth": "1963-12-31"
}
Response body
{
"state": "success",
"firstNameMatch": false,
"lastNameMatch": true,
"nameMatch": false,
"addressMatch": true,
"postalCodeMatch": true,
"dateOfBirthMatch": true
}

Takeover Protection (SIM Swap)​

Depending on the phone number and service type you use from the options in the table below, you can get one of the responses below.

For more information regarding Takeover Protection, and its endpoint, see Takeover Protection (SIM Swap).

phoneNumberserviceTypeResponse
+31610000001, +33610000001, +447710000001, +4915100000001timestamp2010-03-08T09:17:36+00:00
+31610000001, +33610000001, +447710000001, +491510000000124hfalse
+31610000002, +33610000002, +447710000002, +4915100000002timestampYYYY-MM-DDT00:00:00+00:00 (Today's date at 00:00:00)
+31610000002, +33610000002, +447710000002, +491510000000224htrue
+31610000003, +33610000003, +447710000003, +4915100000003timestamp2015-07-19T18:42:53+00:00
+31610000003, +33610000003, +447710000003, +491510000000324hfalse

Example​

Request
POST https://api.cm.com/mobile-identity-sandbox/v1/sim-swap
Request headers
Content-Type: application/json
Authorization: Bearer GENERATED_TOKEN_HERE
Request body
{
"phoneNumber": "+31610000001",
"serviceType": "timestamp"
}
Response body
{
"state": "success",
"timestamp": "2010-03-08T09:17:36+00:00"
}

Number Verify​

You can test the expected number verify flow with the phone numbers in the table below.

Contrary to the regular Number Verify flow, the returned sessionUrl does not need to be opened on a mobile phone using mobile data.

For more information regarding Number Verify, and its endpoint, see Number Verify.

phoneNumberReturned MatchReturned State
+31610000001, +33610000001, +447710000001, +4915100000001truecompleted
+31610000002, +33610000002, +447710000002, +4915100000002falsecompleted
+31610000003, +33610000003, +447710000003, +4915100000003nullunavailable

Example request​

Request
POST https://api.cm.com/mobile-identity-sandbox/v1/number-verify
Request headers
Content-Type: application/json
Authorization: Bearer GENERATED_TOKEN_HERE
Request body
{
"phoneNumber": "+31610000001",
"callbackUrl": "https://mycallbackurl"
}
Response body
{
"id": "52d66faa-3d14-4941-9155-41d981e7a620",
"state": "pending",
"match": null,
"sessionUrl": "https://api.cm.com/mobile-identity-sandbox/v1/number-verify/52d66faa-3d14-4941-9155-41d981e7a620/sandbox-session?match=true"
}

Example callback​

After opening the sessionUrl, a callback event will be dispatched to the provided callbackUrl with the following header and body:

Request headers
Authorization: HMAC 296ptE2trRxX0fFtdMB/vHt8UOb1BvZTv70UxAjspKQ=
Content-Type: application/json
Request body
{
"id": "e0d3232b-47fc-4619-b91b-e71a5cf50561",
"type": "numberVerify.state",
"created": "2026-08-29T09:22:58+00:00",
"numberVerify": {
"id": "52d66faa-3d14-4941-9155-41d981e7a620",
"state": "completed",
"match": true
}
}

See Events for more information regarding the callback event.

Example status​

Then a GET request can be made to retrieve the completed number verify transaction:

Request
GET https://api.cm.com/mobile-identity-sandbox/v1/number-verify/6f8d0a9d-b85c-4c3f-9e69-5699f1e00f49
Request headers
Content-Type: application/json
Authorization: Bearer GENERATED_TOKEN_HERE
Response body
{
"id": "52d66faa-3d14-4941-9155-41d981e7a620",
"state": "completed",
"match": true
}

Simulate Errors​

Using the Mobile Identity Services involves using a phone number and its connection to its operator. As such, there are a few errors that may occur.

In the table below are some phone numbers that, regardless of the service used (Takeover Protection, Number Verify, Identity Match), will result in one of these errors.

More information regarding the error codes can be found here.

phoneNumberReturned Status CodeReturned Error MessageReturned Error Code
+31620000001, +33620000001, +447720000001, +4915200000001500Supplier error.1002
+31620000002, +33620000002, +447720000002, +4915200000002422Phone number is not active.3001
+31620000003, +33620000003, +447720000003, +4915200000003422Service not supported by operator.3000
+31620000004, +33620000004, +447720000004, +4915200000004500Transaction could not be started.1002

Example​

Request
POST https://api.cm.com/mobile-identity-sandbox/v1/sim-swap
Request headers
Content-Type: application/json
Authorization: Bearer GENERATED_TOKEN_HERE
Request body
{
"phoneNumber": "+31620000003",
"serviceType": "timestamp"
}
Response body
{
"status": 422,
"message": "Service not supported by operator.",
"code": 3000
}