Verify Phone OTP and Connect
curl --request POST \
--url https://admin.snagsolutions.io/api/phone_verifications/connect \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"phoneNumber": "+14155552671",
"code": "123456",
"websiteId": "123e4567-e89b-12d3-a456-426614174000",
"userId": "123e4567-e89b-12d3-a456-426614174001",
"walletAddress": "0x1234567890abcdef1234567890abcdef12345678"
}
'import requests
url = "https://admin.snagsolutions.io/api/phone_verifications/connect"
payload = {
"phoneNumber": "+14155552671",
"code": "123456",
"websiteId": "123e4567-e89b-12d3-a456-426614174000",
"userId": "123e4567-e89b-12d3-a456-426614174001",
"walletAddress": "0x1234567890abcdef1234567890abcdef12345678"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
phoneNumber: '+14155552671',
code: '123456',
websiteId: '123e4567-e89b-12d3-a456-426614174000',
userId: '123e4567-e89b-12d3-a456-426614174001',
walletAddress: '0x1234567890abcdef1234567890abcdef12345678'
})
};
fetch('https://admin.snagsolutions.io/api/phone_verifications/connect', 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://admin.snagsolutions.io/api/phone_verifications/connect",
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([
'phoneNumber' => '+14155552671',
'code' => '123456',
'websiteId' => '123e4567-e89b-12d3-a456-426614174000',
'userId' => '123e4567-e89b-12d3-a456-426614174001',
'walletAddress' => '0x1234567890abcdef1234567890abcdef12345678'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$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://admin.snagsolutions.io/api/phone_verifications/connect"
payload := strings.NewReader("{\n \"phoneNumber\": \"+14155552671\",\n \"code\": \"123456\",\n \"websiteId\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"userId\": \"123e4567-e89b-12d3-a456-426614174001\",\n \"walletAddress\": \"0x1234567890abcdef1234567890abcdef12345678\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
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://admin.snagsolutions.io/api/phone_verifications/connect")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phoneNumber\": \"+14155552671\",\n \"code\": \"123456\",\n \"websiteId\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"userId\": \"123e4567-e89b-12d3-a456-426614174001\",\n \"walletAddress\": \"0x1234567890abcdef1234567890abcdef12345678\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://admin.snagsolutions.io/api/phone_verifications/connect")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phoneNumber\": \"+14155552671\",\n \"code\": \"123456\",\n \"websiteId\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"userId\": \"123e4567-e89b-12d3-a456-426614174001\",\n \"walletAddress\": \"0x1234567890abcdef1234567890abcdef12345678\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"success": true,
"message": "Phone number verified.",
"error": "MAXIMUM_ACCOUNT_LINKED",
"accountLinkData": "jwt_verification_token"
}
}{
"message": "Request body is invalid"
}"Forbidden, Could not validate api key"{
"success": false,
"message": "Internal server error",
"debugInfo": "Stack trace or additional error details"
}Identity
Verify Phone OTP and Connect
Verifies the OTP code and connects the phone number to the user profile.
POST
/
api
/
phone_verifications
/
connect
Verify Phone OTP and Connect
curl --request POST \
--url https://admin.snagsolutions.io/api/phone_verifications/connect \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"phoneNumber": "+14155552671",
"code": "123456",
"websiteId": "123e4567-e89b-12d3-a456-426614174000",
"userId": "123e4567-e89b-12d3-a456-426614174001",
"walletAddress": "0x1234567890abcdef1234567890abcdef12345678"
}
'import requests
url = "https://admin.snagsolutions.io/api/phone_verifications/connect"
payload = {
"phoneNumber": "+14155552671",
"code": "123456",
"websiteId": "123e4567-e89b-12d3-a456-426614174000",
"userId": "123e4567-e89b-12d3-a456-426614174001",
"walletAddress": "0x1234567890abcdef1234567890abcdef12345678"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
phoneNumber: '+14155552671',
code: '123456',
websiteId: '123e4567-e89b-12d3-a456-426614174000',
userId: '123e4567-e89b-12d3-a456-426614174001',
walletAddress: '0x1234567890abcdef1234567890abcdef12345678'
})
};
fetch('https://admin.snagsolutions.io/api/phone_verifications/connect', 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://admin.snagsolutions.io/api/phone_verifications/connect",
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([
'phoneNumber' => '+14155552671',
'code' => '123456',
'websiteId' => '123e4567-e89b-12d3-a456-426614174000',
'userId' => '123e4567-e89b-12d3-a456-426614174001',
'walletAddress' => '0x1234567890abcdef1234567890abcdef12345678'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$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://admin.snagsolutions.io/api/phone_verifications/connect"
payload := strings.NewReader("{\n \"phoneNumber\": \"+14155552671\",\n \"code\": \"123456\",\n \"websiteId\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"userId\": \"123e4567-e89b-12d3-a456-426614174001\",\n \"walletAddress\": \"0x1234567890abcdef1234567890abcdef12345678\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
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://admin.snagsolutions.io/api/phone_verifications/connect")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phoneNumber\": \"+14155552671\",\n \"code\": \"123456\",\n \"websiteId\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"userId\": \"123e4567-e89b-12d3-a456-426614174001\",\n \"walletAddress\": \"0x1234567890abcdef1234567890abcdef12345678\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://admin.snagsolutions.io/api/phone_verifications/connect")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phoneNumber\": \"+14155552671\",\n \"code\": \"123456\",\n \"websiteId\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"userId\": \"123e4567-e89b-12d3-a456-426614174001\",\n \"walletAddress\": \"0x1234567890abcdef1234567890abcdef12345678\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"success": true,
"message": "Phone number verified.",
"error": "MAXIMUM_ACCOUNT_LINKED",
"accountLinkData": "jwt_verification_token"
}
}{
"message": "Request body is invalid"
}"Forbidden, Could not validate api key"{
"success": false,
"message": "Internal server error",
"debugInfo": "Stack trace or additional error details"
}Authorizations
Body
application/json
Body
Request body for verifying OTP and connecting phone number
Phone number in E.164 format (e.g., +14155552671)
Pattern:
^\+[1-9]\d{1,14}$Example:
"+14155552671"
The OTP code received via SMS
Required string length:
4 - 10Example:
"123456"
The ID of the website
Example:
"123e4567-e89b-12d3-a456-426614174000"
The ID of the user
Example:
"123e4567-e89b-12d3-a456-426614174001"
The wallet address of the user
Example:
"0x1234567890abcdef1234567890abcdef12345678"
Response
200
Standard response wrapper after verifying OTP and connecting phone number
Response payload after verifying the OTP code and connecting the phone number
Show child attributes
Show child attributes
Was this page helpful?
⌘I