Questions · Updated 2026-09-28

What does partially_verified mean for a domain?

partially_verified means some of a domain's DNS records resolve and the rest do not, and the rows still missing are not the ones sending waits on. POST /emails accepts a From on a domain whose status is verified or partially_verified; GET /domains/{id} lists each record with its own status and fix.

partially_verified means some of the domain's DNS records resolve and the rest do not, and the rows still missing are not the ones sending waits on. POST /emails accepts a From address on a domain whose status is verified or partially_verified. A domain that is pending, failed or partially_failed is refused with domain_not_verified. GET /domains/{id} shows every record with its own status, observed and fix, so the outstanding rows are named there.

The five statuses

status on GET /domains/{id} is one of pending, verified, failed, partially_verified or partially_failed. Every record row carries required, and the roll-up reads only the required rows. Domains and DNS states the rule: "A new domain is verified when DKIM and both return-path records resolve. Root SPF, DMARC, tracking, and Tracking CAA never move the domain's status in either direction."

  • verified — every required row resolves.
  • pending — nothing required has resolved yet, or the required rows still outstanding are pending rather than failed. The catalogue fix for domain_not_verified says "checks continue for 72 hours."
  • partially_failed — at least one required row resolves and at least one required row is failed: it answered with a value other than the one on the sheet, or it was absent once the window closed.
  • partially_verified — the partial state on the sending side of that line. The send path keeps it as a sendable status for domains checked under an earlier rule. A domain added today moves from pending to verified when DKIM and both return-path rows resolve, and a split among its required rows reads partially_failed.
  • failed — no required row resolves once the window closes, or a required row answered with the wrong value on a check and still did on a later one.

Which rows are outstanding

Each row on GET /domains/{id} has status (pending, verified, failed or recommended), observed (what DNS returned on the last check), reason, fix and checked_at. A recommended row is advice: root SPF and DMARC read recommended until they resolve, and they never change the domain's status. Read the rows where required is true and status is not verified; fix on each says what to publish.

curl -sS -X GET https://api.agentisend.com/domains/9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42 \
  -H "Authorization: Bearer $AGENTISEND_API_KEY"
200
{
  "click_tracking": true,
  "created_at": "2026-09-04T09:14:00Z",
  "dkim_selector": "string",
  "id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "yourdomain.com",
  "open_tracking": true,
  "provider_hints": {},
  "recent_events": []
}
Response

POST /domains/{id}/verify re-checks now; its summary is "Re-check every record and update the domain’s status." GET /domains/{id}/wait reports progress.required_verified of progress.required_total, and it returns before its timeout only for verified or failed, so a partial status comes back when the timeout runs out.

Sending meanwhile

A partially_verified domain sends. A partially_failed one does not: POST /emails answers domain_not_verified, whose message names the status and how many required records have resolved, and whose fix names GET /domains/{id} and POST /domains/{id}/verify. The guide adds one consequence for either partial state: "Return-path is used for the envelope sender only after both of its records resolve." A send to an address ending in @simulator.agentisend.com works in every status.

Next