Done For You
Search and check domains, then order ready-to-send domains and mailboxes and track the order.
Check one exact domain
Checks whether one specific domain can be registered, rather than searching the names the registrar suggests. Use this to buy a domain the customer chose. Only .com and .org are supported.
A domain that simply cannot be bought - taken, malformed, an extension we do not register - answers 200 with available false and a reason. A non-2xx means the check itself could not be made, which is not the same as the domain being taken.
Parameters
- domain string required in query
The full domain to check, extension included
Responses
- 200 Availability of that exact domain · CheckDfyDomainResponse
- 400 Missing domain parameter · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 502 Domain search service unavailable · ErrorResponse
Fields in the 200 response
- available booleanExample:
true - domain stringExample:
acme-outreach.com - price numberExample:
13.99 - reason string
Reason says why the domain cannot be bought, in words that can be shown to a person. Empty when available is true.
Example:That domain is already registered. - tld stringExample:
com - unconfirmed boolean
Unconfirmed is true when we could not get an answer at all rather than the answer "no". Do not report these as taken; offer a retry.
Example:false
Request
curl -X GET "https://api.emailchaser.com/r/dfy/domains/check?domain=value" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"available": true,
"domain": "acme-outreach.com",
"price": 13.99,
"reason": "That domain is already registered.",
"tld": "com",
"unconfirmed": false
}Check a list of exact domains
Checks up to 100 exact domains in one call, for a caller who already has the list. One answer per unique domain, in the order given, each following the single check's rules. A registrar failure on one name marks it unconfirmed rather than failing the list; the call fails only when nothing could be checked.
Request bodyJSON · CheckDfyDomainsRequest
- domains array of string requiredExample:
["acme-outreach.com","acme-outreach.org"]
Responses
- 200 Availability of each domain · CheckDfyDomainsResponse
- 400 Empty list, or more than 100 domains · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 502 Domain search service unavailable · ErrorResponse
Fields in the 200 response
- domains array of CheckDfyDomainResponse
6 fields inside domains
- available booleanExample:
true - domain stringExample:
acme-outreach.com - price numberExample:
13.99 - reason string
Reason says why the domain cannot be bought, in words that can be shown to a person. Empty when available is true.
Example:That domain is already registered. - tld stringExample:
com - unconfirmed boolean
Unconfirmed is true when we could not get an answer at all rather than the answer "no". Do not report these as taken; offer a retry.
Example:false
Request
curl -X POST "https://api.emailchaser.com/r/dfy/domains/check" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"domains": [
"acme-outreach.com",
"acme-outreach.org"
]
}'Response
{
"domains": [
{
"available": true,
"domain": "acme-outreach.com",
"price": 13.99,
"reason": "That domain is already registered.",
"tld": "com",
"unconfirmed": false
}
]
}Search available domains
Checks availability and pricing of domains derived from a brand name. Only .com and .org are supported.
Parameters
- query string required in query
Brand name to derive domains from
- tlds string in query
Comma-separated TLDs (default: com,org)
- limit integer in query
Maximum suggestions to return
Responses
- 200 Availability results · SearchDfyDomainsResponse
- 400 Invalid search input · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 502 Domain search service unavailable · ErrorResponse
Fields in the 200 response
- domains array of DfyDomainSuggestion
4 fields inside domains
- available booleanExample:
true - domain stringExample:
acme-mail.com - price numberExample:
13.99 - tld stringExample:
com
- totalAvailable integerExample:
7 - totalChecked integerExample:
10
Request
curl -X GET "https://api.emailchaser.com/r/dfy/domains/search?query=value" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"domains": [
{
"available": true,
"domain": "acme-mail.com",
"price": 13.99,
"tld": "com"
}
],
"totalAvailable": 7,
"totalChecked": 10
}List done-for-you orders
Lists the workspace's done-for-you orders, newest first. Each order carries the same fields as GET /dfy/orders/{id}: status, cost breakdown and the caller-supplied order shape; internal billing and provider sub-records are never exposed.
Parameters
- limit integer in query
Page size (default 50, max 200)
- page integer in query
Page number, 1-based (default 1)
Responses
- 200 Orders and total count · ListDfyOrdersResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 500 Failed to retrieve the orders · ErrorResponse
Fields in the 200 response
- orders array of DfyOrderResponse
11 fields inside orders
- completedAt string
CompletedAt is when the order completed (RFC3339), or null.
Example:2026-07-01T10:35:00Z - cost_breakdown object
- createdAt stringExample:
2026-07-01T10:30:00Z - domains object
- externalOrderId stringExample:
cmr_order_456 - failureReason string
- forwardingDomain object
- id integerExample:
9 - mailboxes object
- processedAt string
ProcessedAt is when the order started processing (RFC3339), or null.
Example:2026-07-01T10:30:00Z - status string
Status is one of: created, pending_approval, processing, completed, failed, partially_completed, canceled.
Example:created
- total integerExample:
3
Request
curl -X GET "https://api.emailchaser.com/r/dfy/orders" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"orders": [
{
"completedAt": "2026-07-01T10:35:00Z",
"cost_breakdown": null,
"createdAt": "2026-07-01T10:30:00Z",
"domains": null,
"externalOrderId": "cmr_order_456",
"failureReason": "string",
"forwardingDomain": null,
"id": 9,
"mailboxes": null,
"processedAt": "2026-07-01T10:30:00Z",
"status": "created"
}
],
"total": 3
}Create a done-for-you order
Orders domains and pre-warmed mailboxes for the caller's workspace. The order is accepted and provisioned asynchronously; poll GET /dfy/orders/{id} for progress.
This call buys domains and charges the card, and it can take longer than the connection is held open — a timeout or a 502 does NOT mean the order failed. Send an Idempotency-Key header and repeat the identical request to find out: a repeat of a key that already placed an order returns that order instead of buying anything again. Reuse the key to retry safely; use a NEW key only when you intend a genuinely different order.
Without a key the order is still checked against the workspace's live orders, and one that would buy a domain or a mailbox address already bought is refused with 409 and the id of the order that has it.
Parameters
- Idempotency-Key string in header
Repeat this key to retry the same order safely (max 255 characters)
Request bodyJSON · CreateDfyOrderRequest
- domains array of DfyDomainInput
1 field inside domains
- domainName string requiredExample:
acme-mail.com
- forwardingDomain string
ForwardingDomain is where the purchased domains redirect visitors.
Example:acme.com - mailboxes array of DfyMailboxInput
5 fields inside mailboxes
- domainName string requiredExample:
acme-mail.com - firstName string requiredExample:
John - lastName string requiredExample:
Doe - profilePicture string
- username string requiredExample:
john
Responses
- 202 The accepted order, or the order a previous attempt with the same Idempotency-Key already placed · DfyOrderResult
- 400 Invalid order · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 409 A live order already covers one of these domains or mailboxes · DfyOrderConflictResponse
- 500 Failed to create the order · ErrorResponse
Fields in the 202 response
- order DfyOrderResponse
11 fields inside order
- completedAt string
CompletedAt is when the order completed (RFC3339), or null.
Example:2026-07-01T10:35:00Z - cost_breakdown object
- createdAt stringExample:
2026-07-01T10:30:00Z - domains object
- externalOrderId stringExample:
cmr_order_456 - failureReason string
- forwardingDomain object
- id integerExample:
9 - mailboxes object
- processedAt string
ProcessedAt is when the order started processing (RFC3339), or null.
Example:2026-07-01T10:30:00Z - status string
Status is one of: created, pending_approval, processing, completed, failed, partially_completed, canceled.
Example:created
Request
curl -X POST "https://api.emailchaser.com/r/dfy/orders" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"domains": [
{
"domainName": "acme-mail.com"
}
],
"forwardingDomain": "acme.com",
"mailboxes": [
{
"domainName": "acme-mail.com",
"firstName": "John",
"lastName": "Doe",
"profilePicture": "string",
"username": "john"
}
]
}'Response
{
"order": {
"completedAt": "2026-07-01T10:35:00Z",
"cost_breakdown": null,
"createdAt": "2026-07-01T10:30:00Z",
"domains": null,
"externalOrderId": "cmr_order_456",
"failureReason": "string",
"forwardingDomain": null,
"id": 9,
"mailboxes": null,
"processedAt": "2026-07-01T10:30:00Z",
"status": "created"
}
}Get a done-for-you order
Returns one order. Orders belonging to other workspaces are reported as not found.
Parameters
- id integer required in path
Order ID
Responses
- 200 The order · DfyOrderResult
- 400 Invalid order id · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 404 Order not found · ErrorResponse
- 500 Failed to retrieve the order · ErrorResponse
Fields in the 200 response
- order DfyOrderResponse
11 fields inside order
- completedAt string
CompletedAt is when the order completed (RFC3339), or null.
Example:2026-07-01T10:35:00Z - cost_breakdown object
- createdAt stringExample:
2026-07-01T10:30:00Z - domains object
- externalOrderId stringExample:
cmr_order_456 - failureReason string
- forwardingDomain object
- id integerExample:
9 - mailboxes object
- processedAt string
ProcessedAt is when the order started processing (RFC3339), or null.
Example:2026-07-01T10:30:00Z - status string
Status is one of: created, pending_approval, processing, completed, failed, partially_completed, canceled.
Example:created
Request
curl -X GET "https://api.emailchaser.com/r/dfy/orders/123" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"order": {
"completedAt": "2026-07-01T10:35:00Z",
"cost_breakdown": null,
"createdAt": "2026-07-01T10:30:00Z",
"domains": null,
"externalOrderId": "cmr_order_456",
"failureReason": "string",
"forwardingDomain": null,
"id": 9,
"mailboxes": null,
"processedAt": "2026-07-01T10:30:00Z",
"status": "created"
}
}Generated from the Emailchaser API's own OpenAPI definition, so it always matches the running API.