Issue a challenge
Your service sends a phone number with an API key. Taiwan Verify returns a random 6-digit code and the receiving SMS number selected from the active regional pool.
SMS Verification Infrastructure
A verification API that issues one-time SMS challenges, listens across multiple inbound routes, then reports successful matches to your notifyURL.
Pricing
This is not a free service. We have invested substantial equipment, capital, and operating work to build and maintain our telephone network system. Each user is charged USD 10 every 30 days with automatic billing as the service usage fee.
Privacy protection
All phone verification data automatically expires and is deleted after 15 minutes. Even in the unlikely event of a database intrusion, only the data from that short 15-minute window could be affected.
We also apply multiple layers of defensive controls to protect service data and reduce that risk to an extremely low level.
Your service sends a phone number with an API key. Taiwan Verify returns a random 6-digit code and the receiving SMS number selected from the active regional pool.
Inbound messages are accepted from configured regional receiving channels. Senders are normalized internally so local formats and E.164 numbers match the same request.
When the correct code arrives before expiration, Taiwan Verify calls your notifyURL with a concise JSON payload such as {"number":"0912345678","status":"OK"}.
PHP integration
Send the target phone number with your API key. Store the returned code on your side only if you need audit visibility; Taiwan Verify will match incoming SMS and call your notifyURL when the user sends the correct code.
<?php
$apiKey = "tvk_live_your_api_key";
$payload = json_encode([
"number" => "+886912345678",
], JSON_UNESCAPED_SLASHES);
$ch = curl_init("https://taiwanverify.com/api/request");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: " . $apiKey,
],
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);
if ($status !== 200) {
throw new RuntimeException($response ?: "Taiwan Verify request failed");
}
$result = json_decode($response, true);
echo "Ask user to SMS {$result["number"]} to {$result["receive_number"]}";
Routing model
Taiwan Verify maps each requested e168 phone prefix to the most appropriate local receiving number. Active routing rules decide which number is returned and how the verified phone number is formatted in the callback.