Skip to main content

Create Domain

curl -X POST https://inbound.new/api/e2/domains \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "example.com"
  }'

POST /api/e2/domains

Add a new domain for email receiving. Automatically initiates verification and returns required DNS records. Subdomains inherit verification from their verified parent domain.

Request Parameters

domain
string
required
Domain name to add (e.g., example.com or mail.example.com).Must be between 1-253 characters and match valid domain format.

Response

id
string
Unique identifier for the domain.
domain
string
Domain name.
status
string
Verification status: pending, verified, or failed.
canReceiveEmails
boolean
Whether the domain can currently receive emails.
hasMxRecords
boolean
Whether MX records have been detected.
domainProvider
string
Detected DNS provider (e.g., Cloudflare, GoDaddy).
providerConfidence
string
Confidence level of provider detection.
mailFromDomain
string
Custom MAIL FROM domain (e.g., mail.example.com).
mailFromDomainStatus
string
Status of MAIL FROM domain verification.
dnsRecords
array
Array of DNS records to add.
dnsConflict
object
DNS conflict information if existing records were detected.
createdAt
string
ISO 8601 timestamp when the domain was added.
updatedAt
string
ISO 8601 timestamp when the domain was last updated.
parentDomain
string
Parent domain name (only for subdomains).
message
string
Additional information about the domain creation.
{
  "id": "dom_abc123",
  "domain": "example.com",
  "status": "pending",
  "canReceiveEmails": false,
  "hasMxRecords": false,
  "domainProvider": "Cloudflare",
  "providerConfidence": "high",
  "mailFromDomain": "mail.example.com",
  "mailFromDomainStatus": "Pending",
  "dnsRecords": [
    {
      "type": "MX",
      "name": "example.com",
      "value": "10 inbound-smtp.us-east-2.amazonaws.com",
      "description": "Required for receiving emails",
      "isRequired": true
    },
    {
      "type": "TXT",
      "name": "_amazonses.example.com",
      "value": "abc123def456",
      "description": "Domain verification token",
      "isRequired": true
    },
    {
      "type": "TXT",
      "name": "example.com",
      "value": "v=spf1 include:amazonses.com ~all",
      "description": "SPF record for sending authentication",
      "isRequired": true
    },
    {
      "type": "MX",
      "name": "mail.example.com",
      "value": "10 feedback-smtp.us-east-2.amazonses.com",
      "description": "MAIL FROM domain MX record",
      "isRequired": true
    },
    {
      "type": "TXT",
      "name": "mail.example.com",
      "value": "v=spf1 include:amazonses.com ~all",
      "description": "MAIL FROM domain SPF record",
      "isRequired": true
    }
  ],
  "createdAt": "2024-01-15T10:30:00Z",
  "updatedAt": "2024-01-15T10:30:00Z"
}

List Domains

curl -X GET "https://inbound.new/api/e2/domains?limit=50" \
  -H "Authorization: Bearer YOUR_API_KEY"

GET /api/e2/domains

Get paginated list of domains for authenticated user with optional filtering.

Query Parameters

limit
integer
default:"50"
Maximum number of domains to return (1-100).
offset
integer
default:"0"
Number of domains to skip for pagination.
status
string
Filter by verification status: pending, verified, or failed.
canReceive
string
Filter by email receiving capability: true or false.
check
string
Perform live DNS and SES verification check. Set to true to enable.

Response

data
array
Array of domain objects.
pagination
object
Pagination metadata.
{
  "data": [
    {
      "id": "dom_abc123",
      "domain": "example.com",
      "status": "verified",
      "canReceiveEmails": true,
      "hasMxRecords": true,
      "domainProvider": "Cloudflare",
      "providerConfidence": "high",
      "lastDnsCheck": "2024-01-15T10:30:00Z",
      "lastSesCheck": "2024-01-15T10:30:00Z",
      "isCatchAllEnabled": true,
      "catchAllEndpointId": "ep_xyz789",
      "mailFromDomain": "mail.example.com",
      "mailFromDomainStatus": "Success",
      "mailFromDomainVerifiedAt": "2024-01-15T10:30:00Z",
      "receiveDmarcEmails": false,
      "createdAt": "2024-01-15T10:00:00Z",
      "updatedAt": "2024-01-15T10:30:00Z",
      "userId": "usr_abc123",
      "stats": {
        "totalEmailAddresses": 5,
        "activeEmailAddresses": 4,
        "hasCatchAll": true
      },
      "catchAllEndpoint": {
        "id": "ep_xyz789",
        "name": "Webhook Endpoint",
        "type": "webhook",
        "isActive": true
      }
    }
  ],
  "pagination": {
    "limit": 50,
    "offset": 0,
    "total": 1,
    "hasMore": false
  }
}

Get Domain

curl -X GET "https://inbound.new/api/e2/domains/dom_abc123?check=true" \
  -H "Authorization: Bearer YOUR_API_KEY"

GET /api/e2/domains/:id

Get detailed information about a specific domain including DNS records. Use ?check=true for a live verification check.

Query Parameters

check
string
Perform live DNS and SES verification check. Set to true to enable.

Response

Same structure as individual domain object in List Domains response, plus:
dnsRecords
array
Array of all DNS records for this domain.
authRecommendations
object
Recommended authentication records (SPF, DMARC) if not configured.
inheritsFromParent
boolean
Whether this subdomain inherits verification from parent.
parentDomain
string
Parent domain name (for subdomains).

Update Domain

curl -X PATCH https://inbound.new/api/e2/domains/dom_abc123 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "isCatchAllEnabled": true,
    "catchAllEndpointId": "ep_xyz789"
  }'

PATCH /api/e2/domains/:id

Update catch-all email settings for a domain. Catch-all receives emails sent to any address on your domain. Domain must be verified first.

Request Parameters

isCatchAllEnabled
boolean
required
Enable or disable catch-all for this domain.
catchAllEndpointId
string
ID of the endpoint to route catch-all emails to. Required when enabling catch-all.

Response

id
string
Domain ID.
domain
string
Domain name.
status
string
Verification status.
isCatchAllEnabled
boolean
Whether catch-all is now enabled.
catchAllEndpointId
string
ID of the catch-all endpoint.
catchAllEndpoint
object
Catch-all endpoint details.
updatedAt
string
ISO 8601 timestamp of the update.
{
  "id": "dom_abc123",
  "domain": "example.com",
  "status": "verified",
  "isCatchAllEnabled": true,
  "catchAllEndpointId": "ep_xyz789",
  "catchAllEndpoint": {
    "id": "ep_xyz789",
    "name": "Webhook Endpoint",
    "type": "webhook",
    "isActive": true
  },
  "updatedAt": "2024-01-15T10:35:00Z"
}

Delete Domain

curl -X DELETE https://inbound.new/api/e2/domains/dom_abc123 \
  -H "Authorization: Bearer YOUR_API_KEY"

DELETE /api/e2/domains/:id

Delete a domain and all associated resources including email addresses, DNS records, and SES configurations. Root domains with subdomains must have subdomains deleted first.

Response

success
boolean
Whether the deletion was successful.
message
string
Human-readable message about the deletion result.
deletedResources
object
Summary of deleted resources.
{
  "success": true,
  "message": "Successfully deleted domain example.com and all associated resources",
  "deletedResources": {
    "domain": "example.com",
    "emailAddresses": 5,
    "dnsRecords": 8,
    "blockedEmails": 2,
    "sesIdentity": true,
    "sesReceiptRules": true
  }
}

Build docs developers (and LLMs) love