← All API sections

Domains

Register and verify sender domains (SPF, DKIM, DMARC)

8 endpoints

Endpoints

MethodPathDescription
GET/v1/domainsGET /v1/domains
POST/v1/domainsPOST /v1/domains - Register a new domain and generate DKIM keys
GET/v1/domains/{id}GET /v1/domains/:id
DELETE/v1/domains/{id}DELETE /v1/domains/:id
PUT/v1/domains/{id}/tracking-domainPUT /v1/domains/:id/tracking-domain — Set the vanity tracking domain.
DELETE/v1/domains/{id}/tracking-domainDELETE /v1/domains/:id/tracking-domain — Remove the vanity tracking domain.
POST/v1/domains/{id}/verifyPOST /v1/domains/:id/verify - Trigger DNS verification
POST/v1/domains/{id}/verify-trackingPOST /v1/domains/:id/verify-tracking — Verify the tracking domain CNAME.

GET /v1/domains

GET /v1/domains

Parameters

NameInTypeRequiredDescription
pagequeryintegerNoPage number (default: 1)
per_pagequeryintegerNoItems per page (default: 25)

Responses

StatusDescription
200Paginated list of registered domains
401Unauthorized

Example

curl -X GET https://api.euromail.dev/v1/domains \
  -H "X-EuroMail-Api-Key: em_live_..."
import { EuroMail } from "@euromail/sdk";

const euromail = new EuroMail({ apiKey: "em_live_..." });

const result = await euromail.listDomains();
from euromail import EuroMail

client = EuroMail(api_key="em_live_...")

result = client.list_domains()
use euromail::EuroMail;

let client = EuroMail::new("em_live_...");

let result = client.list_domains().await?;
client := euromail.NewClient("em_live_...")

result, err := client.ListDomains(ctx)

POST /v1/domains

POST /v1/domains - Register a new domain and generate DKIM keys

Request Body

FieldTypeRequiredDescription
domainstringYes

Responses

StatusDescription
201Domain registered with DNS records
401Unauthorized
409Domain already registered

Example

curl -X POST https://api.euromail.dev/v1/domains \
  -H "X-EuroMail-Api-Key: em_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "domain": "example.com" }'
import { EuroMail } from "@euromail/sdk";

const euromail = new EuroMail({ apiKey: "em_live_..." });

const result = await euromail.createDomain({
    domain: "example.com",
  });
from euromail import EuroMail

client = EuroMail(api_key="em_live_...")

result = client.create_domain(
    domain="example.com",
)
use euromail::EuroMail;

let client = EuroMail::new("em_live_...");

let result = client.create_domain(&CreateDomainParams {
    domain: "example.com".into(),
    ..Default::default()
}).await?;
client := euromail.NewClient("em_live_...")

result, err := client.CreateDomain(ctx, euromail.CreateDomainParams{
    Domain: "example.com",
})

GET /v1/domains/{id}

GET /v1/domains/:id

Parameters

NameInTypeRequiredDescription
idpathstringYesDomain ID

Responses

StatusDescription
200Domain details
401Unauthorized
404Domain not found

Example

curl -X GET https://api.euromail.dev/v1/domains/{id} \
  -H "X-EuroMail-Api-Key: em_live_..."
import { EuroMail } from "@euromail/sdk";

const euromail = new EuroMail({ apiKey: "em_live_..." });

const result = await euromail.getDomain("id_...");
from euromail import EuroMail

client = EuroMail(api_key="em_live_...")

result = client.get_domain("id_...")
use euromail::EuroMail;

let client = EuroMail::new("em_live_...");

let result = client.get_domain("id_...").await?;
client := euromail.NewClient("em_live_...")

result, err := client.GetDomain(ctx, "id_...")

DELETE /v1/domains/{id}

DELETE /v1/domains/:id

Parameters

NameInTypeRequiredDescription
idpathstringYesDomain ID

Responses

StatusDescription
204Domain deleted
401Unauthorized
404Domain not found

Example

curl -X DELETE https://api.euromail.dev/v1/domains/{id} \
  -H "X-EuroMail-Api-Key: em_live_..."
import { EuroMail } from "@euromail/sdk";

const euromail = new EuroMail({ apiKey: "em_live_..." });

const result = await euromail.deleteDomain("id_...");
from euromail import EuroMail

client = EuroMail(api_key="em_live_...")

result = client.delete_domain("id_...")
use euromail::EuroMail;

let client = EuroMail::new("em_live_...");

let result = client.delete_domain("id_...").await?;
client := euromail.NewClient("em_live_...")

result, err := client.DeleteDomain(ctx, "id_...")

PUT /v1/domains/{id}/tracking-domain

PUT /v1/domains/:id/tracking-domain — Set the vanity tracking domain.

Parameters

NameInTypeRequiredDescription
idpathstringYesDomain ID

Request Body

FieldTypeRequiredDescription
tracking_domainstringYes

Responses

StatusDescription
200Tracking domain set
401Unauthorized
404Domain not found
409Tracking domain already in use

Example

curl -X PUT https://api.euromail.dev/v1/domains/{id}/tracking-domain \
  -H "X-EuroMail-Api-Key: em_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "tracking_domain": "example.com" }'
import { EuroMail } from "@euromail/sdk";

const euromail = new EuroMail({ apiKey: "em_live_..." });

const result = await euromail.getDomainDetail({
    tracking_domain: "example.com",
  });
from euromail import EuroMail

client = EuroMail(api_key="em_live_...")

result = client.get_domain_detail(
    tracking_domain="example.com",
)
use euromail::EuroMail;

let client = EuroMail::new("em_live_...");

let result = client.get_domain_detail(&GetDomainDetailParams {
    tracking_domain: "example.com".into(),
    ..Default::default()
}).await?;
client := euromail.NewClient("em_live_...")

result, err := client.GetDomainDetail(ctx, euromail.GetDomainDetailParams{
    TrackingDomain: "example.com",
})

DELETE /v1/domains/{id}/tracking-domain

DELETE /v1/domains/:id/tracking-domain — Remove the vanity tracking domain.

Parameters

NameInTypeRequiredDescription
idpathstringYesDomain ID

Responses

StatusDescription
200Tracking domain removed
401Unauthorized
404Domain not found

Example

curl -X DELETE https://api.euromail.dev/v1/domains/{id}/tracking-domain \
  -H "X-EuroMail-Api-Key: em_live_..."
import { EuroMail } from "@euromail/sdk";

const euromail = new EuroMail({ apiKey: "em_live_..." });

const result = await euromail.getDomainDetail("id_...");
from euromail import EuroMail

client = EuroMail(api_key="em_live_...")

result = client.get_domain_detail("id_...")
use euromail::EuroMail;

let client = EuroMail::new("em_live_...");

let result = client.get_domain_detail("id_...").await?;
client := euromail.NewClient("em_live_...")

result, err := client.GetDomainDetail(ctx, "id_...")

POST /v1/domains/{id}/verify

POST /v1/domains/:id/verify - Trigger DNS verification

Parameters

NameInTypeRequiredDescription
idpathstringYesDomain ID

Responses

StatusDescription
200DNS verification results
401Unauthorized
404Domain not found

Example

curl -X POST https://api.euromail.dev/v1/domains/{id}/verify \
  -H "X-EuroMail-Api-Key: em_live_..."
import { EuroMail } from "@euromail/sdk";

const euromail = new EuroMail({ apiKey: "em_live_..." });

const result = await euromail.verifyDomain("id_...");
from euromail import EuroMail

client = EuroMail(api_key="em_live_...")

result = client.verify_domain("id_...")
use euromail::EuroMail;

let client = EuroMail::new("em_live_...");

let result = client.verify_domain("id_...").await?;
client := euromail.NewClient("em_live_...")

result, err := client.VerifyDomain(ctx, "id_...")

POST /v1/domains/{id}/verify-tracking

POST /v1/domains/:id/verify-tracking — Verify the tracking domain CNAME.

Parameters

NameInTypeRequiredDescription
idpathstringYesDomain ID

Responses

StatusDescription
200Tracking domain verification result
401Unauthorized
404Domain not found
422No tracking domain configured

Example

curl -X POST https://api.euromail.dev/v1/domains/{id}/verify-tracking \
  -H "X-EuroMail-Api-Key: em_live_..."
import { EuroMail } from "@euromail/sdk";

const euromail = new EuroMail({ apiKey: "em_live_..." });

const result = await euromail.getDomainDetail("id_...");
from euromail import EuroMail

client = EuroMail(api_key="em_live_...")

result = client.get_domain_detail("id_...")
use euromail::EuroMail;

let client = EuroMail::new("em_live_...");

let result = client.get_domain_detail("id_...").await?;
client := euromail.NewClient("em_live_...")

result, err := client.GetDomainDetail(ctx, "id_...")