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 arependingrather thanfailed. The cataloguefixfordomain_not_verifiedsays "checks continue for 72 hours."partially_failed— at least one required row resolves and at least one required row isfailed: 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 frompendingtoverifiedwhen DKIM and both return-path rows resolve, and a split among its required rows readspartially_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": []
}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.