Done For You

Search and check domains, then order ready-to-send domains and mailboxes and track the order.

Check one exact domain

get https://api.emailchaser.com/r/dfy/domains/check
Works with a read-only key

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.

  • domain string required in query

    The full domain to check, extension included

Fields in the 200 response
  • available boolean
    Example: true
  • domain string
    Example: acme-outreach.com
  • price number
    Example: 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 string
    Example: 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

post https://api.emailchaser.com/r/dfy/domains/check
Works with a read-only key

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.

  • domains array of string required
    Example: ["acme-outreach.com","acme-outreach.org"]
Fields in the 200 response
  • domains array of CheckDfyDomainResponse
    6 fields inside domains
    • available boolean
      Example: true
    • domain string
      Example: acme-outreach.com
    • price number
      Example: 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 string
      Example: 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
    }
  ]
}

List done-for-you orders

get https://api.emailchaser.com/r/dfy/orders
Works with a read-only key

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.

  • limit integer in query

    Page size (default 50, max 200)

  • page integer in query

    Page number, 1-based (default 1)

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 string
      Example: 2026-07-01T10:30:00Z
    • domains object
    • externalOrderId string
      Example: cmr_order_456
    • failureReason string
    • forwardingDomain object
    • id integer
      Example: 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 integer
    Example: 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

post https://api.emailchaser.com/r/dfy/orders

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.

  • Idempotency-Key string in header

    Repeat this key to retry the same order safely (max 255 characters)

  • domains array of DfyDomainInput
    1 field inside domains
    • domainName string required
      Example: 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 required
      Example: acme-mail.com
    • firstName string required
      Example: John
    • lastName string required
      Example: Doe
    • profilePicture string
    • username string required
      Example: john
Fields in the 202 response
  • 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 string
      Example: 2026-07-01T10:30:00Z
    • domains object
    • externalOrderId string
      Example: cmr_order_456
    • failureReason string
    • forwardingDomain object
    • id integer
      Example: 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

get https://api.emailchaser.com/r/dfy/orders/{id}
Works with a read-only key

Returns one order. Orders belonging to other workspaces are reported as not found.

  • id integer required in path

    Order ID

Fields in the 200 response
  • 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 string
      Example: 2026-07-01T10:30:00Z
    • domains object
    • externalOrderId string
      Example: cmr_order_456
    • failureReason string
    • forwardingDomain object
    • id integer
      Example: 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.