Appearance
Verify a domain claim
Check the ownership TXT record. On success the placeholder becomes your sending identity.
http
POST /v1/domains/{id}/claim/verifyRequires a Full access API key.
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The placeholder domain's id — the domain_id returned by Claim a domain. |
Example
bash
curl -X POST "https://api.sendgrail.com/v1/domains/$DOMAIN_ID/claim/verify" \
-H "Authorization: Bearer $SENDGRAIL_API_KEY"js
const res = await fetch(
`https://api.sendgrail.com/v1/domains/${domainId}/claim/verify`,
{
method: 'POST',
headers: { Authorization: `Bearer ${process.env.SENDGRAIL_API_KEY}` },
},
);
const claim = await res.json();Response
The claim, with its status updated to reflect the check.
json
{
"object": "domain_claim",
"id": "9a3c1e64-1b17-4f8c-9f0e-3b6c1e0f5c31",
"name": "example.com",
"status": "verified",
"domain_id": "5f1c3a9e-0d42-4b7c-9a63-2e8b41d7c015",
"region": "us-east-1",
"record": {
"type": "TXT",
"name": "example.com",
"value": "sendgrail-domain-verification=6f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c",
"ttl": "Auto"
},
"blocked_reason": null,
"failure_reason": null,
"created_at": "2026-07-14T19:44:32+00:00",
"expires_at": "2026-07-21T19:44:32+00:00"
}What the check does
Record found →
verified. Ownership is proven. The placeholder domain is provisioned as your own sending identity, with its own DKIM, andfailure_reasonis cleared.Record not found yet → stays
pending. The TXT record hasn't propagated (or isn't published).failure_reasonexplains it — try again once DNS has caught up:json{ "status": "pending", "failure_reason": "The verification TXT record was not found. It may not have propagated yet." }Claim expired →
failed. Pastexpires_at(7 days), the claim can no longer be verified;failure_reasonisThe claim has expired.Open a new claim with Claim a domain.
The call is safe to repeat while the claim is pending.
After a successful claim
verified here means ownership is proven — not that the domain can send yet. Your new identity has its own DKIM records to publish:
- Retrieve the domain (using
domain_id) to get its freshrecords. - Add them at your DNS provider.
- Run Verify a domain to move the domain itself to
verified, after which you can send from it.
No claim on this domain — 404
json
{
"message": "This domain has no claim.",
"code": "not_found",
"request_id": "8f2c1e64-1b17-4f8c-9f0e-3b6c1e0f5c31"
}A domain belonging to another team also answers 404. A Sending access key answers 403. See Errors.