Twilio Verify API: "Requested URL was not found"

1.2k Views Asked by At

I am using curl to perform a request to the Twilio Verify API, following the instructions here: https://www.twilio.com/verify/api

Using these instructions, I've created two php files to perform the curl request -- one to get a verification code (get_code.php), and another to check the verification code (check_code.php). These scripts are called using an ajax post to send the parameters, and the two scripts are nearly identical, save for the URL ("/start" vs. "/check").

I believe I am specifying the correct URLs, and get_code.php works, but check_code.php throws the following error:

Requested URL was not found. Please check http://docs.authy.com/ to see the valid URLs.

get_code.php

<?php

$USER_PHONE = htmlspecialchars($_POST["phone"]);

$ch = curl_init();
$curlConfig = array(
    CURLOPT_URL            => "https://api.authy.com/protected/json/phones/verification/start",
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS     => array(
        'country_code' => '1',
        'via' => 'sms',
        'phone_number' => $USER_PHONE,
    ),
    CURLOPT_HTTPHEADER => array('X-Authy-API-Key: MY_KEY')
);
curl_setopt_array($ch, $curlConfig);
$result = curl_exec($ch);
curl_close($ch);

echo $result;
?>

check_code.php

<?php

$USER_PHONE = htmlspecialchars($_POST["phone"]);
$VERIFY_CODE = htmlspecialchars($_POST["code"]);    

$ch = curl_init();
$curlConfig = array(
    CURLOPT_URL            => "https://api.authy.com/protected/json/phones/verification/check",
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS     => array(
        'country_code' => '1',
        'phone_number' => $USER_PHONE,
        'verification_code' => $VERIFY_CODE
    ),
    CURLOPT_HTTPHEADER => array('X-Authy-API-Key: MY_KEY')
);
curl_setopt_array($ch, $curlConfig);
$result = curl_exec($ch);
curl_close($ch);

echo $result;
?>

I performed a curl manually in terminal using the same URL and parameters, and it worked.

curl "https://api.authy.com/protected/json/phones/verification/check?phone_number=MY_PHONE&country_code=1&verification_code=MY_CODE" -H "X-Authy-API-Key: MY_KEY"

I don't know what I could be doing wrong?

1

There are 1 best solutions below

1
On

OK, well I have no idea why this worked, but I got it working and maybe someone else can explain why. I built the CURL URL as a string and I removed the CURLOPT_RETURNTRANSFER and CURLOPT_POST arguments.

<?php

$USER_COUNTRY = "1";
$USER_PHONE = htmlspecialchars($_POST["phone"]);
$VERIFY_CODE = htmlspecialchars($_POST["code"]);

$URL = "https://api.authy.com/protected/json/phones/verification/check?country_code=1&phone_number=".$USER_PHONE."&verification_code=".$VERIFY_CODE;

$ch = curl_init();
$curlConfig = array(
    CURLOPT_URL            => $URL,
    CURLOPT_HTTPHEADER => array('X-Authy-API-Key: MY_KEY')
);
curl_setopt_array($ch, $curlConfig);
$result = curl_exec($ch);
curl_close($ch);

echo $result;

?>