Order new email accounts
Order new domains and pre-warmed Google email accounts through the API, and Emailchaser sets them up and connects them for you. It is the same done-for-you order as in the app, in four calls.
An order charges your card. Domains and the first month of the email accounts are charged to the card on file when you order, and the accounts join your monthly bill. If the order can't be set up, it is refunded automatically. Use a Read & write key.
1. Add your billing details once
Domain registration needs a contact, so set the workspace's billing profile before the first order:
curl -X PUT "https://api.emailchaser.com/r/space/billing-profile" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"company": "Acme",
"firstName": "Jane",
"lastName": "Doe",
"addressLineOne": "100 Main Street",
"city": "Austin",
"state": "TX",
"postalCode": "78701",
"country": "US",
"phoneCc": "1",
"phone": "4155550100"
}'country is a two-letter code. Without a billing profile, the order fails with missing billing details.
2. Find available domains
curl "https://api.emailchaser.com/r/dfy/domains/search?query=acme&tlds=com,org&limit=10" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"The answer lists available .com and .org domains with their price. To check names you already have in mind, call GET /dfy/domains/check?domain=acme-outreach.com, or POST /dfy/domains/check with up to 100 domains at once. Checking is free and works with a read-only key.
3. Place the order with an Idempotency-Key
List the domains, and the email accounts to create on them. Every domain in the order needs at least one email account, and every email account must sit on a domain in the order or one you already own through Emailchaser.
curl -X POST "https://api.emailchaser.com/r/dfy/orders" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6f1c2d4e-8a3b-4c5d-9e7f-0a1b2c3d4e5f" \
-d '{
"domains": [{ "domainName": "acme-outreach.com" }],
"mailboxes": [
{ "username": "jane", "firstName": "Jane", "lastName": "Doe", "domainName": "acme-outreach.com" },
{ "username": "j.doe", "firstName": "Jane", "lastName": "Doe", "domainName": "acme-outreach.com" }
],
"forwardingDomain": "acme.com"
}'usernameis the part before the@. It must be lowercase, valid for Google and unique in the order.forwardingDomainis optional: the new domains redirect their visitors to it, usually your main website.profilePictureon an email account is optional.- One order holds up to 100 domains and 500 email accounts, within your plan's email account limit.
The answer is 202 with the order and its status. Domains are registered for a year; email accounts are billed monthly.
Always send an Idempotency-Key, such as a new UUID per order. The call can take up to two minutes, so set your client timeout to at least 130 seconds. If it times out or answers 502, the order may still be going through: send the same request with the same key, and you get the first order back instead of a second charge. The same key with a different body answers 409, and so does a copy of an order that is still in progress, with its existingOrderId.
4. Wait for the order to finish
Poll GET /dfy/orders/{id}, or register a DfyOrderCompleted webhook and get told. The status moves through created, pending_approval and processing to one of:
| Status | What it means |
|---|---|
completed | Every domain and email account is set up and connected. |
partially_completed | Part of the order is set up. GET /sender-emails shows the email accounts that arrived. |
failed | Nothing could be set up, and the charge was refunded. failureReason says why. |
canceled | The order was canceled. |
Once an order completes, its email accounts appear in GET /sender-emails. Attach them to a campaign with POST /campaigns/{id}/sender-emails.
Questions about the API? Email support@emailchaser.com.