curl --request POST \
--url https://api.helloannie.com/v1/organizations/{orgId}/business-verification \
--header 'Content-Type: application/json' \
--data '
{
"business": {
"legalBusinessName": "<string>",
"ein": "<string>",
"businessType": "llc",
"dba": "<string>",
"websiteUrl": "<string>",
"address": {
"addressLine1": "<string>",
"city": "<string>",
"state": "<string>",
"zip": "<string>",
"country": "US",
"addressLine2": "<string>"
}
},
"authorizedRepresentative": {
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"businessTitle": "<string>",
"jobPosition": "Director"
},
"messaging": {
"documents": {
"privacyPolicyUrl": "<string>",
"termsAndConditionsUrl": "<string>",
"patientIntakeFormUrl": "<string>"
},
"attestations": {
"hasPrivacyPolicyOptIn": true,
"hasTcpaCompliance": true
}
},
"calling": {
"cnamDisplayName": "<string>"
}
}
'import requests
url = "https://api.helloannie.com/v1/organizations/{orgId}/business-verification"
payload = {
"business": {
"legalBusinessName": "<string>",
"ein": "<string>",
"businessType": "llc",
"dba": "<string>",
"websiteUrl": "<string>",
"address": {
"addressLine1": "<string>",
"city": "<string>",
"state": "<string>",
"zip": "<string>",
"country": "US",
"addressLine2": "<string>"
}
},
"authorizedRepresentative": {
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"businessTitle": "<string>",
"jobPosition": "Director"
},
"messaging": {
"documents": {
"privacyPolicyUrl": "<string>",
"termsAndConditionsUrl": "<string>",
"patientIntakeFormUrl": "<string>"
},
"attestations": {
"hasPrivacyPolicyOptIn": True,
"hasTcpaCompliance": True
}
},
"calling": { "cnamDisplayName": "<string>" }
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
business: {
legalBusinessName: '<string>',
ein: '<string>',
businessType: 'llc',
dba: '<string>',
websiteUrl: '<string>',
address: {
addressLine1: '<string>',
city: '<string>',
state: '<string>',
zip: '<string>',
country: 'US',
addressLine2: '<string>'
}
},
authorizedRepresentative: {
firstName: '<string>',
lastName: '<string>',
email: '<string>',
phone: '<string>',
businessTitle: '<string>',
jobPosition: 'Director'
},
messaging: {
documents: {
privacyPolicyUrl: '<string>',
termsAndConditionsUrl: '<string>',
patientIntakeFormUrl: '<string>'
},
attestations: {hasPrivacyPolicyOptIn: true, hasTcpaCompliance: true}
},
calling: {cnamDisplayName: '<string>'}
})
};
fetch('https://api.helloannie.com/v1/organizations/{orgId}/business-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.helloannie.com/v1/organizations/{orgId}/business-verification",
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([
'business' => [
'legalBusinessName' => '<string>',
'ein' => '<string>',
'businessType' => 'llc',
'dba' => '<string>',
'websiteUrl' => '<string>',
'address' => [
'addressLine1' => '<string>',
'city' => '<string>',
'state' => '<string>',
'zip' => '<string>',
'country' => 'US',
'addressLine2' => '<string>'
]
],
'authorizedRepresentative' => [
'firstName' => '<string>',
'lastName' => '<string>',
'email' => '<string>',
'phone' => '<string>',
'businessTitle' => '<string>',
'jobPosition' => 'Director'
],
'messaging' => [
'documents' => [
'privacyPolicyUrl' => '<string>',
'termsAndConditionsUrl' => '<string>',
'patientIntakeFormUrl' => '<string>'
],
'attestations' => [
'hasPrivacyPolicyOptIn' => true,
'hasTcpaCompliance' => true
]
],
'calling' => [
'cnamDisplayName' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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://api.helloannie.com/v1/organizations/{orgId}/business-verification"
payload := strings.NewReader("{\n \"business\": {\n \"legalBusinessName\": \"<string>\",\n \"ein\": \"<string>\",\n \"businessType\": \"llc\",\n \"dba\": \"<string>\",\n \"websiteUrl\": \"<string>\",\n \"address\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"zip\": \"<string>\",\n \"country\": \"US\",\n \"addressLine2\": \"<string>\"\n }\n },\n \"authorizedRepresentative\": {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"businessTitle\": \"<string>\",\n \"jobPosition\": \"Director\"\n },\n \"messaging\": {\n \"documents\": {\n \"privacyPolicyUrl\": \"<string>\",\n \"termsAndConditionsUrl\": \"<string>\",\n \"patientIntakeFormUrl\": \"<string>\"\n },\n \"attestations\": {\n \"hasPrivacyPolicyOptIn\": true,\n \"hasTcpaCompliance\": true\n }\n },\n \"calling\": {\n \"cnamDisplayName\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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://api.helloannie.com/v1/organizations/{orgId}/business-verification")
.header("Content-Type", "application/json")
.body("{\n \"business\": {\n \"legalBusinessName\": \"<string>\",\n \"ein\": \"<string>\",\n \"businessType\": \"llc\",\n \"dba\": \"<string>\",\n \"websiteUrl\": \"<string>\",\n \"address\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"zip\": \"<string>\",\n \"country\": \"US\",\n \"addressLine2\": \"<string>\"\n }\n },\n \"authorizedRepresentative\": {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"businessTitle\": \"<string>\",\n \"jobPosition\": \"Director\"\n },\n \"messaging\": {\n \"documents\": {\n \"privacyPolicyUrl\": \"<string>\",\n \"termsAndConditionsUrl\": \"<string>\",\n \"patientIntakeFormUrl\": \"<string>\"\n },\n \"attestations\": {\n \"hasPrivacyPolicyOptIn\": true,\n \"hasTcpaCompliance\": true\n }\n },\n \"calling\": {\n \"cnamDisplayName\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.helloannie.com/v1/organizations/{orgId}/business-verification")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"business\": {\n \"legalBusinessName\": \"<string>\",\n \"ein\": \"<string>\",\n \"businessType\": \"llc\",\n \"dba\": \"<string>\",\n \"websiteUrl\": \"<string>\",\n \"address\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"zip\": \"<string>\",\n \"country\": \"US\",\n \"addressLine2\": \"<string>\"\n }\n },\n \"authorizedRepresentative\": {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"businessTitle\": \"<string>\",\n \"jobPosition\": \"Director\"\n },\n \"messaging\": {\n \"documents\": {\n \"privacyPolicyUrl\": \"<string>\",\n \"termsAndConditionsUrl\": \"<string>\",\n \"patientIntakeFormUrl\": \"<string>\"\n },\n \"attestations\": {\n \"hasPrivacyPolicyOptIn\": true,\n \"hasTcpaCompliance\": true\n }\n },\n \"calling\": {\n \"cnamDisplayName\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"orgId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "missing_information",
"canUpdate": true,
"reason": "<string>",
"issues": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"steps": {
"businessProfile": {
"status": "missing_information",
"reason": "<string>",
"providerStatus": "<string>"
},
"calling": {
"status": "missing_information",
"reason": "<string>",
"providerStatus": "<string>"
},
"messaging": {
"status": "missing_information",
"reason": "<string>",
"providerStatus": "<string>"
}
},
"submittedAt": "2023-11-07T05:31:56Z",
"reviewedAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"success": false,
"data": {},
"message": "<string>"
}{
"success": false,
"data": {},
"message": "<string>"
}{
"success": false,
"data": {},
"message": "<string>"
}{
"success": false,
"data": {},
"message": "<string>"
}{
"success": false,
"data": {},
"message": "<string>"
}Submit business verification
Submits an organization’s business verification request for asynchronous processing. Annie validates the required business identity, authorized representative, calling configuration, and messaging documents, then submits the request to the verification and carrier review flow. This verification is required before Annie can complete trusted calling setup and SMS/A2P registration, because carriers require proof that the sender/caller is a real business with proper patient messaging consent. Only one request exists per organization; a later POST updates the same request when canUpdate is true. The API requires all messaging document URLs, and those URLs must be publicly reachable so Annie can snapshot stable copies for carrier review.
curl --request POST \
--url https://api.helloannie.com/v1/organizations/{orgId}/business-verification \
--header 'Content-Type: application/json' \
--data '
{
"business": {
"legalBusinessName": "<string>",
"ein": "<string>",
"businessType": "llc",
"dba": "<string>",
"websiteUrl": "<string>",
"address": {
"addressLine1": "<string>",
"city": "<string>",
"state": "<string>",
"zip": "<string>",
"country": "US",
"addressLine2": "<string>"
}
},
"authorizedRepresentative": {
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"businessTitle": "<string>",
"jobPosition": "Director"
},
"messaging": {
"documents": {
"privacyPolicyUrl": "<string>",
"termsAndConditionsUrl": "<string>",
"patientIntakeFormUrl": "<string>"
},
"attestations": {
"hasPrivacyPolicyOptIn": true,
"hasTcpaCompliance": true
}
},
"calling": {
"cnamDisplayName": "<string>"
}
}
'import requests
url = "https://api.helloannie.com/v1/organizations/{orgId}/business-verification"
payload = {
"business": {
"legalBusinessName": "<string>",
"ein": "<string>",
"businessType": "llc",
"dba": "<string>",
"websiteUrl": "<string>",
"address": {
"addressLine1": "<string>",
"city": "<string>",
"state": "<string>",
"zip": "<string>",
"country": "US",
"addressLine2": "<string>"
}
},
"authorizedRepresentative": {
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"businessTitle": "<string>",
"jobPosition": "Director"
},
"messaging": {
"documents": {
"privacyPolicyUrl": "<string>",
"termsAndConditionsUrl": "<string>",
"patientIntakeFormUrl": "<string>"
},
"attestations": {
"hasPrivacyPolicyOptIn": True,
"hasTcpaCompliance": True
}
},
"calling": { "cnamDisplayName": "<string>" }
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
business: {
legalBusinessName: '<string>',
ein: '<string>',
businessType: 'llc',
dba: '<string>',
websiteUrl: '<string>',
address: {
addressLine1: '<string>',
city: '<string>',
state: '<string>',
zip: '<string>',
country: 'US',
addressLine2: '<string>'
}
},
authorizedRepresentative: {
firstName: '<string>',
lastName: '<string>',
email: '<string>',
phone: '<string>',
businessTitle: '<string>',
jobPosition: 'Director'
},
messaging: {
documents: {
privacyPolicyUrl: '<string>',
termsAndConditionsUrl: '<string>',
patientIntakeFormUrl: '<string>'
},
attestations: {hasPrivacyPolicyOptIn: true, hasTcpaCompliance: true}
},
calling: {cnamDisplayName: '<string>'}
})
};
fetch('https://api.helloannie.com/v1/organizations/{orgId}/business-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.helloannie.com/v1/organizations/{orgId}/business-verification",
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([
'business' => [
'legalBusinessName' => '<string>',
'ein' => '<string>',
'businessType' => 'llc',
'dba' => '<string>',
'websiteUrl' => '<string>',
'address' => [
'addressLine1' => '<string>',
'city' => '<string>',
'state' => '<string>',
'zip' => '<string>',
'country' => 'US',
'addressLine2' => '<string>'
]
],
'authorizedRepresentative' => [
'firstName' => '<string>',
'lastName' => '<string>',
'email' => '<string>',
'phone' => '<string>',
'businessTitle' => '<string>',
'jobPosition' => 'Director'
],
'messaging' => [
'documents' => [
'privacyPolicyUrl' => '<string>',
'termsAndConditionsUrl' => '<string>',
'patientIntakeFormUrl' => '<string>'
],
'attestations' => [
'hasPrivacyPolicyOptIn' => true,
'hasTcpaCompliance' => true
]
],
'calling' => [
'cnamDisplayName' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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://api.helloannie.com/v1/organizations/{orgId}/business-verification"
payload := strings.NewReader("{\n \"business\": {\n \"legalBusinessName\": \"<string>\",\n \"ein\": \"<string>\",\n \"businessType\": \"llc\",\n \"dba\": \"<string>\",\n \"websiteUrl\": \"<string>\",\n \"address\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"zip\": \"<string>\",\n \"country\": \"US\",\n \"addressLine2\": \"<string>\"\n }\n },\n \"authorizedRepresentative\": {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"businessTitle\": \"<string>\",\n \"jobPosition\": \"Director\"\n },\n \"messaging\": {\n \"documents\": {\n \"privacyPolicyUrl\": \"<string>\",\n \"termsAndConditionsUrl\": \"<string>\",\n \"patientIntakeFormUrl\": \"<string>\"\n },\n \"attestations\": {\n \"hasPrivacyPolicyOptIn\": true,\n \"hasTcpaCompliance\": true\n }\n },\n \"calling\": {\n \"cnamDisplayName\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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://api.helloannie.com/v1/organizations/{orgId}/business-verification")
.header("Content-Type", "application/json")
.body("{\n \"business\": {\n \"legalBusinessName\": \"<string>\",\n \"ein\": \"<string>\",\n \"businessType\": \"llc\",\n \"dba\": \"<string>\",\n \"websiteUrl\": \"<string>\",\n \"address\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"zip\": \"<string>\",\n \"country\": \"US\",\n \"addressLine2\": \"<string>\"\n }\n },\n \"authorizedRepresentative\": {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"businessTitle\": \"<string>\",\n \"jobPosition\": \"Director\"\n },\n \"messaging\": {\n \"documents\": {\n \"privacyPolicyUrl\": \"<string>\",\n \"termsAndConditionsUrl\": \"<string>\",\n \"patientIntakeFormUrl\": \"<string>\"\n },\n \"attestations\": {\n \"hasPrivacyPolicyOptIn\": true,\n \"hasTcpaCompliance\": true\n }\n },\n \"calling\": {\n \"cnamDisplayName\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.helloannie.com/v1/organizations/{orgId}/business-verification")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"business\": {\n \"legalBusinessName\": \"<string>\",\n \"ein\": \"<string>\",\n \"businessType\": \"llc\",\n \"dba\": \"<string>\",\n \"websiteUrl\": \"<string>\",\n \"address\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"zip\": \"<string>\",\n \"country\": \"US\",\n \"addressLine2\": \"<string>\"\n }\n },\n \"authorizedRepresentative\": {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"businessTitle\": \"<string>\",\n \"jobPosition\": \"Director\"\n },\n \"messaging\": {\n \"documents\": {\n \"privacyPolicyUrl\": \"<string>\",\n \"termsAndConditionsUrl\": \"<string>\",\n \"patientIntakeFormUrl\": \"<string>\"\n },\n \"attestations\": {\n \"hasPrivacyPolicyOptIn\": true,\n \"hasTcpaCompliance\": true\n }\n },\n \"calling\": {\n \"cnamDisplayName\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"orgId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "missing_information",
"canUpdate": true,
"reason": "<string>",
"issues": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"steps": {
"businessProfile": {
"status": "missing_information",
"reason": "<string>",
"providerStatus": "<string>"
},
"calling": {
"status": "missing_information",
"reason": "<string>",
"providerStatus": "<string>"
},
"messaging": {
"status": "missing_information",
"reason": "<string>",
"providerStatus": "<string>"
}
},
"submittedAt": "2023-11-07T05:31:56Z",
"reviewedAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"success": false,
"data": {},
"message": "<string>"
}{
"success": false,
"data": {},
"message": "<string>"
}{
"success": false,
"data": {},
"message": "<string>"
}{
"success": false,
"data": {},
"message": "<string>"
}{
"success": false,
"data": {},
"message": "<string>"
}Path Parameters
Organization ID
Body
Business verification proves the legal organization, responsible representative, calling identity, and messaging consent materials before Annie can complete carrier setup for calls and SMS. Submit this payload to create the org's single verification request or update it when the current status allows changes.
Legal business identity. Verification providers and carriers require this information to confirm the sender/caller is a real organization before approving telephony and messaging.
Show child attributes
Show child attributes
Person authorized to submit the business for provider/carrier verification.
Show child attributes
Show child attributes
Messaging registration details. Carriers require consent, terms, and privacy materials before approving application-to-person SMS traffic.
Show child attributes
Show child attributes
Calling configuration tied to business verification. Calling setup lets outbound calls display a verified business identity.
Show child attributes
Show child attributes
Response
Response returned when submitting or checking business verification. Use the top-level status for product logic and steps/issues for user-facing detail.
true Business verification proves the legal organization, responsible representative, calling identity, and messaging consent materials before Annie can complete carrier setup for calls and SMS. This object is designed for polling after submission and for showing users what action, if any, is required.
Show child attributes
Show child attributes