Websites
Get Website
Get sending-domain DNS details
GET
/
api
/
v1
/
websites
/
{domain}
Get Website
curl --request GET \
--url https://api.sequenzy.com/api/v1/websites/{domain} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sequenzy.com/api/v1/websites/{domain}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sequenzy.com/api/v1/websites/{domain}', 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.sequenzy.com/api/v1/websites/{domain}",
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.sequenzy.com/api/v1/websites/{domain}"
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.sequenzy.com/api/v1/websites/{domain}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/websites/{domain}")
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{
"success": true,
"website": {
"id": "domain_abc123",
"domain": "mail.example.com",
"status": "verified",
"dnsVerified": true,
"readyToSend": false,
"readiness": {
"status": "activating",
"reason": "activation_pending"
},
"dnsRecords": {},
"dkim": { "type": "byodkim", "status": "pending", "diagnostic": null },
"spf": { "status": "verified", "record": {}, "diagnostic": null },
"mailFrom": { "status": "verified", "domain": "send.mail.example.com", "mxRecord": {}, "diagnostic": null },
"appleEmailSources": ["send.mail.example.com", "example.com"],
"tracking": { "policy": "legacy", "required": false, "hostname": "links.example.com", "status": "verified", "ready": true, "error": null, "cnameRecord": { "type": "CNAME", "name": "links.example.com", "value": "links1.sequenzydns.com" } },
"lastVerifiedAt": "2026-05-01T10:30:00Z",
"nextVerificationAt": "2026-05-01T11:30:00Z",
"createdAt": "2026-05-01T10:30:00Z"
}
}
{
"success": false,
"error": "Unauthorized"
}
{
"success": false,
"code": "SENDING_DOMAIN_NOT_CONFIGURED",
"error": "Sending domain not configured",
"title": "Sending domain not configured",
"description": "The domain \"mail.example.com\" has not been added as a sending domain for this company, so it cannot be checked or verified yet.",
"resolution": "Call add_sending_domain with domain \"mail.example.com\" first, publish the DNS records it returns (DKIM, the bounce records described by website.bounceRecords, and DMARC when present), then call verify_sending_domain after DNS changes propagate.",
"docsUrl": "https://docs.sequenzy.com/api-reference/websites/create",
"details": {
"domain": "mail.example.com"
}
}
Get stored DNS verification, sending readiness,
expected DNS records, and normalized SPF, DKIM, and MAIL FROM diagnostics for a
sending domain. A domain can have
dnsVerified: true while readyToSend is
false while the domain is still activating. To run a fresh check, use
Verify Sending Domain.
Receiving mail is set up separately, with receiving
domains. Domains that had a reply setup from
before receiving domains may still return dnsRecords.inboundMxRecord,
inboundMxStatus, inboundVerificationRecord, inboundVerificationStatus,
inboundRoutingStatus and inboundRoutingError. These fields are deprecated:
they are no longer used to route mail, and that setup now appears as a
receiving domain. Read its status with Get Receiving
Domain instead.
website.tracking reports link tracking: the company tracking domain, which
every sending domain uses. hostname is null when links use Sequenzy’s shared
tracking domain, and ready is true once it verifies. It never affects the
domain’s status or sending. policy is always legacy and required always
false; both are deprecated. Manage it with
Set Tracking Domain.
Request
string
required
Sending domain.
curl "https://api.sequenzy.com/api/v1/websites/mail.example.com" \
-H "Authorization: Bearer YOUR_API_KEY"
Responses
{
"success": true,
"website": {
"id": "domain_abc123",
"domain": "mail.example.com",
"status": "verified",
"dnsVerified": true,
"readyToSend": false,
"readiness": {
"status": "activating",
"reason": "activation_pending"
},
"dnsRecords": {},
"dkim": { "type": "byodkim", "status": "pending", "diagnostic": null },
"spf": { "status": "verified", "record": {}, "diagnostic": null },
"mailFrom": { "status": "verified", "domain": "send.mail.example.com", "mxRecord": {}, "diagnostic": null },
"appleEmailSources": ["send.mail.example.com", "example.com"],
"tracking": { "policy": "legacy", "required": false, "hostname": "links.example.com", "status": "verified", "ready": true, "error": null, "cnameRecord": { "type": "CNAME", "name": "links.example.com", "value": "links1.sequenzydns.com" } },
"lastVerifiedAt": "2026-05-01T10:30:00Z",
"nextVerificationAt": "2026-05-01T11:30:00Z",
"createdAt": "2026-05-01T10:30:00Z"
}
}
{
"success": false,
"error": "Unauthorized"
}
{
"success": false,
"code": "SENDING_DOMAIN_NOT_CONFIGURED",
"error": "Sending domain not configured",
"title": "Sending domain not configured",
"description": "The domain \"mail.example.com\" has not been added as a sending domain for this company, so it cannot be checked or verified yet.",
"resolution": "Call add_sending_domain with domain \"mail.example.com\" first, publish the DNS records it returns (DKIM, the bounce records described by website.bounceRecords, and DMARC when present), then call verify_sending_domain after DNS changes propagate.",
"docsUrl": "https://docs.sequenzy.com/api-reference/websites/create",
"details": {
"domain": "mail.example.com"
}
}
⌘I
Get Website
curl --request GET \
--url https://api.sequenzy.com/api/v1/websites/{domain} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sequenzy.com/api/v1/websites/{domain}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sequenzy.com/api/v1/websites/{domain}', 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.sequenzy.com/api/v1/websites/{domain}",
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.sequenzy.com/api/v1/websites/{domain}"
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.sequenzy.com/api/v1/websites/{domain}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/websites/{domain}")
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{
"success": true,
"website": {
"id": "domain_abc123",
"domain": "mail.example.com",
"status": "verified",
"dnsVerified": true,
"readyToSend": false,
"readiness": {
"status": "activating",
"reason": "activation_pending"
},
"dnsRecords": {},
"dkim": { "type": "byodkim", "status": "pending", "diagnostic": null },
"spf": { "status": "verified", "record": {}, "diagnostic": null },
"mailFrom": { "status": "verified", "domain": "send.mail.example.com", "mxRecord": {}, "diagnostic": null },
"appleEmailSources": ["send.mail.example.com", "example.com"],
"tracking": { "policy": "legacy", "required": false, "hostname": "links.example.com", "status": "verified", "ready": true, "error": null, "cnameRecord": { "type": "CNAME", "name": "links.example.com", "value": "links1.sequenzydns.com" } },
"lastVerifiedAt": "2026-05-01T10:30:00Z",
"nextVerificationAt": "2026-05-01T11:30:00Z",
"createdAt": "2026-05-01T10:30:00Z"
}
}
{
"success": false,
"error": "Unauthorized"
}
{
"success": false,
"code": "SENDING_DOMAIN_NOT_CONFIGURED",
"error": "Sending domain not configured",
"title": "Sending domain not configured",
"description": "The domain \"mail.example.com\" has not been added as a sending domain for this company, so it cannot be checked or verified yet.",
"resolution": "Call add_sending_domain with domain \"mail.example.com\" first, publish the DNS records it returns (DKIM, the bounce records described by website.bounceRecords, and DMARC when present), then call verify_sending_domain after DNS changes propagate.",
"docsUrl": "https://docs.sequenzy.com/api-reference/websites/create",
"details": {
"domain": "mail.example.com"
}
}