cURL
curl --request GET \
--url https://api.contiguity.com/otp/reverse/verify/{otp_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.contiguity.com/otp/reverse/verify/{otp_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.contiguity.com/otp/reverse/verify/{otp_id}', 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://api.contiguity.com/otp/reverse/verify/{otp_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.contiguity.com/otp/reverse/verify/{otp_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.contiguity.com/otp/reverse/verify/{otp_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.contiguity.com/otp/reverse/verify/{otp_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "req_xxxxxxxxxxxxxxxx",
"timestamp": 1785380854155,
"api_version": "v2026.7.29",
"object": "response",
"data": {
"otp_id": "r_otp_123456",
"expires_at": "2025-02-01T12:00:00.000Z"
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1785380854155,
"api_version": "v2026.7.29",
"object": "error",
"data": {
"error": "Bad Request",
"status": 400
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1785380854155,
"api_version": "v2026.7.29",
"object": "error",
"data": {
"error": "Unauthorized",
"status": 401
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1785380854155,
"api_version": "v2026.7.29",
"object": "error",
"data": {
"error": "Forbidden",
"status": 403
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1785380854155,
"api_version": "v2026.7.29",
"object": "error",
"data": {
"error": "Internal Server Error",
"status": 500
}
}Reverse OTP
Check the session's verification status
GET
/
reverse
/
verify
/
{otp_id}
cURL
curl --request GET \
--url https://api.contiguity.com/otp/reverse/verify/{otp_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.contiguity.com/otp/reverse/verify/{otp_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.contiguity.com/otp/reverse/verify/{otp_id}', 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://api.contiguity.com/otp/reverse/verify/{otp_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.contiguity.com/otp/reverse/verify/{otp_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.contiguity.com/otp/reverse/verify/{otp_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.contiguity.com/otp/reverse/verify/{otp_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "req_xxxxxxxxxxxxxxxx",
"timestamp": 1785380854155,
"api_version": "v2026.7.29",
"object": "response",
"data": {
"otp_id": "r_otp_123456",
"expires_at": "2025-02-01T12:00:00.000Z"
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1785380854155,
"api_version": "v2026.7.29",
"object": "error",
"data": {
"error": "Bad Request",
"status": 400
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1785380854155,
"api_version": "v2026.7.29",
"object": "error",
"data": {
"error": "Unauthorized",
"status": 401
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1785380854155,
"api_version": "v2026.7.29",
"object": "error",
"data": {
"error": "Forbidden",
"status": 403
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1785380854155,
"api_version": "v2026.7.29",
"object": "error",
"data": {
"error": "Internal Server Error",
"status": 500
}
}Rapidly polling this endpoint in production is not recommended. It is recommended to await the
otp.reverse.verified webhook event, or adjust your polling interval to 20 seconds or more.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Reverse OTP session ID
Example:
"r_otp_123456"
Was this page helpful?
⌘I