Verify SMS Verification Message
curl --request POST \
--url https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/phone-verification/verify \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"otp": "",
"trustFlowId": 0,
"trustValidationId": "{your_trust_validation_id}"
}
'import requests
url = "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/phone-verification/verify"
payload = {
"otp": "",
"trustFlowId": 0,
"trustValidationId": "{your_trust_validation_id}"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({otp: '', trustFlowId: 0, trustValidationId: '{your_trust_validation_id}'})
};
fetch('https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/phone-verification/verify', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/phone-verification/verify",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'otp' => '',
'trustFlowId' => 0,
'trustValidationId' => '{your_trust_validation_id}'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/phone-verification/verify"
payload := strings.NewReader("{\n \"otp\": \"\",\n \"trustFlowId\": 0,\n \"trustValidationId\": \"{your_trust_validation_id}\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/phone-verification/verify")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"otp\": \"\",\n \"trustFlowId\": 0,\n \"trustValidationId\": \"{your_trust_validation_id}\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/phone-verification/verify")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"otp\": \"\",\n \"trustFlowId\": 0,\n \"trustValidationId\": \"{your_trust_validation_id}\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Phone verification processed successfully",
"data": {
"referenceId": "0123456789ABCDEF0123456789ABCDEF",
"submitTime": "2026-05-14T10:01:00.000Z",
"status": {
"code": 200,
"description": "Verify success"
},
"verify": {
"codeState": "VALID",
"inputPhoneNumber": "+60182258491"
}
},
"verificationStatus": "VERIFIED",
"verificationStatusCode": 3,
"trustFlowId": 0,
"trustValidationId": "{your_trust_validation_id}",
"verificationType": "sms_verification",
"metadata": null
}Compliance
Verify SMS Verification Message
Verify the submitted SMS OTP and complete phone number verification.
POST
/
api
/
v3
/
verifications
/
phone-verification
/
verify
Verify SMS Verification Message
curl --request POST \
--url https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/phone-verification/verify \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"otp": "",
"trustFlowId": 0,
"trustValidationId": "{your_trust_validation_id}"
}
'import requests
url = "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/phone-verification/verify"
payload = {
"otp": "",
"trustFlowId": 0,
"trustValidationId": "{your_trust_validation_id}"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({otp: '', trustFlowId: 0, trustValidationId: '{your_trust_validation_id}'})
};
fetch('https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/phone-verification/verify', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/phone-verification/verify",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'otp' => '',
'trustFlowId' => 0,
'trustValidationId' => '{your_trust_validation_id}'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/phone-verification/verify"
payload := strings.NewReader("{\n \"otp\": \"\",\n \"trustFlowId\": 0,\n \"trustValidationId\": \"{your_trust_validation_id}\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/phone-verification/verify")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"otp\": \"\",\n \"trustFlowId\": 0,\n \"trustValidationId\": \"{your_trust_validation_id}\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/phone-verification/verify")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"otp\": \"\",\n \"trustFlowId\": 0,\n \"trustValidationId\": \"{your_trust_validation_id}\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Phone verification processed successfully",
"data": {
"referenceId": "0123456789ABCDEF0123456789ABCDEF",
"submitTime": "2026-05-14T10:01:00.000Z",
"status": {
"code": 200,
"description": "Verify success"
},
"verify": {
"codeState": "VALID",
"inputPhoneNumber": "+60182258491"
}
},
"verificationStatus": "VERIFIED",
"verificationStatusCode": 3,
"trustFlowId": 0,
"trustValidationId": "{your_trust_validation_id}",
"verificationType": "sms_verification",
"metadata": null
}Authorizations
Use Bearer {your_api_token} in the Authorization header.
Body
application/json
One-time passcode submitted by the user.
Trust flow identifier used to categorize or group requests for tracking or reporting.
Trust validation identifier for the verification request.
Optional reference identifier returned by the send step.
Optional country dialing code (for example, +60). Include if not already bound in session context.
Optional phone number without country code. Include if not already bound in session context.
Response
200 - application/json
SMS verification completed successfully
⌘I

