Renew Business Verification
curl --request POST \
--url https://api.tracklysms.com/api/v2/business-profiles/{profile_id}/verification \
--header 'X-Api-Key: <api-key>'import requests
url = "https://api.tracklysms.com/api/v2/business-profiles/{profile_id}/verification"
headers = {"X-Api-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://api.tracklysms.com/api/v2/business-profiles/{profile_id}/verification', 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.tracklysms.com/api/v2/business-profiles/{profile_id}/verification",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.tracklysms.com/api/v2/business-profiles/{profile_id}/verification"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.tracklysms.com/api/v2/business-profiles/{profile_id}/verification")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tracklysms.com/api/v2/business-profiles/{profile_id}/verification")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_bodyBusiness Verification (v2)
Renew Business Verification
Explicitly renew expired matching provider verification on the same business.
POST
/
v2
/
business-profiles
/
{profile_id}
/
verification
Renew Business Verification
curl --request POST \
--url https://api.tracklysms.com/api/v2/business-profiles/{profile_id}/verification \
--header 'X-Api-Key: <api-key>'import requests
url = "https://api.tracklysms.com/api/v2/business-profiles/{profile_id}/verification"
headers = {"X-Api-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://api.tracklysms.com/api/v2/business-profiles/{profile_id}/verification', 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.tracklysms.com/api/v2/business-profiles/{profile_id}/verification",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.tracklysms.com/api/v2/business-profiles/{profile_id}/verification"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.tracklysms.com/api/v2/business-profiles/{profile_id}/verification")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tracklysms.com/api/v2/business-profiles/{profile_id}/verification")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_bodyRequires an account-owned live API key with an associated user. The business must belong to that account and be non-archived and unlocked. The customer must confirm the current identity before a renewal can be queued.
Only these two fields are accepted.
After renewal, inspect each number request’s
{
"expectedIdentityRevision": 1,
"confirmed": true
}
expectedIdentityRevision is the current positive integer revision; confirmed must be the JSON boolean true.
Renewal is available for matching successful provider verification whose recorded decision is at least 365 days old. A status label or edited expiry timestamp alone does not establish renewal eligibility. Other unproven or historical manual businesses need the appropriate review path.
Response and retry
Returns202 with {"businessProfile": {...}}. Queue acceptance does not mean verification has completed. Poll Get Business Profile, read submission history, or follow the existing status webhooks.
A request already pending returns 202 without another submission. Concurrent renewal attempts share the guarded verification lifecycle and cannot independently pay for the same renewal. Account holds, attempt limits, and daily verification caps remain enforced.
Errors
| HTTP | Code | Meaning |
|---|---|---|
| 400 | invalid_body / business_confirmation_required | The body is invalid or explicit confirmation is missing. |
| 403 | sandbox_read_only / api_key_has_no_owner | This key cannot renew verification. |
| 403 | Compliance hold or cap code | Resolve the stated account or business restriction. |
| 404 | not_found | The business is unavailable in this account. |
| 409 | business_identity_changed | Fetch and confirm the current revision. |
| 409 | business_verification_renewal_unavailable | Current matching expired provider evidence is not available. |
businessVerification summary and reconfirm its binding when required.