Appearance
Get a domain claim
Poll a claim's status while you wait for its TXT record to propagate.
http
GET /v1/domains/{id}/claimRequires 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. |
The path takes the placeholder domain's id, not the claim's own id. That id came back as domain_id when you opened the claim.
Example
bash
curl "https://api.sendgrail.com/v1/domains/$DOMAIN_ID/claim" \
-H "Authorization: Bearer $SENDGRAIL_API_KEY"js
const res = await fetch(
`https://api.sendgrail.com/v1/domains/${domainId}/claim`,
{ headers: { Authorization: `Bearer ${process.env.SENDGRAIL_API_KEY}` } },
);
const claim = await res.json();Response
The latest claim for the domain — the same shape returned by Claim a domain.
json
{
"object": "domain_claim",
"id": "9a3c1e64-1b17-4f8c-9f0e-3b6c1e0f5c31",
"name": "example.com",
"status": "pending",
"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"
}See Claim a domain for the field-by-field breakdown.
This call only reads the claim — it doesn't re-check DNS. To actually run the ownership check, call Verify a domain claim; use this endpoint to poll the result afterwards.
No claim on this domain — 404
If the domain has never had a claim opened against it, there's nothing to return:
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.