Verify a Domain
curl --request POST \
--url https://api.thepurplebox.io/v1/domains/verify \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: <content-type>'import requests
url = "https://api.thepurplebox.io/v1/domains/verify"
headers = {
"Content-Type": "<content-type>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': '<content-type>', Authorization: 'Bearer <token>'}
};
fetch('https://api.thepurplebox.io/v1/domains/verify', 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.thepurplebox.io/v1/domains/verify",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: <content-type>"
],
]);
$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.thepurplebox.io/v1/domains/verify"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Content-Type", "<content-type>")
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.post("https://api.thepurplebox.io/v1/domains/verify")
.header("Content-Type", "<content-type>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.thepurplebox.io/v1/domains/verify")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '<content-type>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": 200,
"message": "verification triggered successfully.",
"data": {
"id": "xxxxx",
"value": "yourdomain.com",
"team_id": "xxxxx",
"status": "success",
"identity_type": "domain",
"created_at": "2025-11-21T10:23:14.737725Z",
"verified_at": "2025-11-21T10:30:45.123456Z",
"attributes": {
"dkim_attributes": {
"name": "thepurplebox._domainkey.yourdomain",
"record_type": "TXT",
"value": "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsBL1UV+VVUqIlNrkhBBC...xxxxx",
"ttl": "auto",
"status": "success"
},
"mail_from_attributes": [
{
"name": "send.yourdomain",
"record_type": "TXT",
"value": "xxxxx",
"ttl": "60",
"status": "success"
},
{
"name": "bounce.yourdomain",
"record_type": "CNAME",
"value": "xxxx",
"ttl": "60",
"status": "success"
}
],
"dmarc_attributes": {
"name": "_dmarc",
"record_type": "TXT",
"value": "v=DMARC1;p=none;",
"ttl": "auto",
"status": "success"
},
"verification_status": "success",
"verified_for_sending_status": true,
"error_type": ""
},
"last_status_checked_at": "2025-11-21T10:30:45.123456Z"
}
}
Domains
Verify a Domain
Trigger verification of DNS records for a domain identity.
POST
/
v1
/
domains
/
verify
Verify a Domain
curl --request POST \
--url https://api.thepurplebox.io/v1/domains/verify \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: <content-type>'import requests
url = "https://api.thepurplebox.io/v1/domains/verify"
headers = {
"Content-Type": "<content-type>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': '<content-type>', Authorization: 'Bearer <token>'}
};
fetch('https://api.thepurplebox.io/v1/domains/verify', 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.thepurplebox.io/v1/domains/verify",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: <content-type>"
],
]);
$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.thepurplebox.io/v1/domains/verify"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Content-Type", "<content-type>")
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.post("https://api.thepurplebox.io/v1/domains/verify")
.header("Content-Type", "<content-type>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.thepurplebox.io/v1/domains/verify")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '<content-type>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": 200,
"message": "verification triggered successfully.",
"data": {
"id": "xxxxx",
"value": "yourdomain.com",
"team_id": "xxxxx",
"status": "success",
"identity_type": "domain",
"created_at": "2025-11-21T10:23:14.737725Z",
"verified_at": "2025-11-21T10:30:45.123456Z",
"attributes": {
"dkim_attributes": {
"name": "thepurplebox._domainkey.yourdomain",
"record_type": "TXT",
"value": "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsBL1UV+VVUqIlNrkhBBC...xxxxx",
"ttl": "auto",
"status": "success"
},
"mail_from_attributes": [
{
"name": "send.yourdomain",
"record_type": "TXT",
"value": "xxxxx",
"ttl": "60",
"status": "success"
},
{
"name": "bounce.yourdomain",
"record_type": "CNAME",
"value": "xxxx",
"ttl": "60",
"status": "success"
}
],
"dmarc_attributes": {
"name": "_dmarc",
"record_type": "TXT",
"value": "v=DMARC1;p=none;",
"ttl": "auto",
"status": "success"
},
"verification_status": "success",
"verified_for_sending_status": true,
"error_type": ""
},
"last_status_checked_at": "2025-11-21T10:30:45.123456Z"
}
}
Headers
string
required
application/jsonQuery Parameters
string
required
The domain name to verify (e.g.,
yourdomain.com).Response
number
HTTP status code. Returns
200 when the verification check is triggered successfully.string
A human-readable message describing the result of the verification check.
object
Contains the updated domain verification status after the check.
Show properties
Show properties
string
Unique identifier for the domain identity.
string
The domain name that was verified.
string
The team ID that owns this domain identity.
string
Updated status of the domain after verification. Possible values:
not_started, pending, success, failed, temporary_failure.string
Type of identity. Always
domain for domain identities.string
ISO 8601 timestamp when the domain identity was created.
string | null
ISO 8601 timestamp when the domain was verified. Null if not yet verified.
object
DNS configuration attributes with updated verification statuses.
Show properties
Show properties
object
DKIM record configuration with updated verification status.
array
object
string
Overall verification status after the check. Possible values:
not_started, pending, success, failed, temporary_failure.boolean
Indicates whether the domain is verified and ready to send emails. Returns
true when all DNS records are verified.string
Error type if verification fails. Empty string when no errors are present.
string
ISO 8601 timestamp of the verification check (updated to current time).
{
"status": 200,
"message": "verification triggered successfully.",
"data": {
"id": "xxxxx",
"value": "yourdomain.com",
"team_id": "xxxxx",
"status": "success",
"identity_type": "domain",
"created_at": "2025-11-21T10:23:14.737725Z",
"verified_at": "2025-11-21T10:30:45.123456Z",
"attributes": {
"dkim_attributes": {
"name": "thepurplebox._domainkey.yourdomain",
"record_type": "TXT",
"value": "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsBL1UV+VVUqIlNrkhBBC...xxxxx",
"ttl": "auto",
"status": "success"
},
"mail_from_attributes": [
{
"name": "send.yourdomain",
"record_type": "TXT",
"value": "xxxxx",
"ttl": "60",
"status": "success"
},
{
"name": "bounce.yourdomain",
"record_type": "CNAME",
"value": "xxxx",
"ttl": "60",
"status": "success"
}
],
"dmarc_attributes": {
"name": "_dmarc",
"record_type": "TXT",
"value": "v=DMARC1;p=none;",
"ttl": "auto",
"status": "success"
},
"verification_status": "success",
"verified_for_sending_status": true,
"error_type": ""
},
"last_status_checked_at": "2025-11-21T10:30:45.123456Z"
}
}
⌘I