Domains
Register and verify sender domains (SPF, DKIM, DMARC)
8 endpoints
Endpoints
| Method | Path | Description |
| GET | /v1/domains | GET /v1/domains |
| POST | /v1/domains | POST /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-domain | PUT /v1/domains/:id/tracking-domain — Set the vanity tracking domain. |
| DELETE | /v1/domains/{id}/tracking-domain | DELETE /v1/domains/:id/tracking-domain — Remove the vanity tracking domain. |
| POST | /v1/domains/{id}/verify | POST /v1/domains/:id/verify - Trigger DNS verification |
| POST | /v1/domains/{id}/verify-tracking | POST /v1/domains/:id/verify-tracking — Verify the tracking domain CNAME. |
GET /v1/domains
GET /v1/domains
Parameters
| Name | In | Type | Required | Description |
page | query | integer | No | Page number (default: 1) |
per_page | query | integer | No | Items per page (default: 25) |
Responses
| Status | Description |
| 200 | Paginated list of registered domains |
| 401 | Unauthorized |
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
| Field | Type | Required | Description |
domain | string | Yes | |
Responses
| Status | Description |
| 201 | Domain registered with DNS records |
| 401 | Unauthorized |
| 409 | Domain 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
| Name | In | Type | Required | Description |
id | path | string | Yes | Domain ID |
Responses
| Status | Description |
| 200 | Domain details |
| 401 | Unauthorized |
| 404 | Domain 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
| Name | In | Type | Required | Description |
id | path | string | Yes | Domain ID |
Responses
| Status | Description |
| 204 | Domain deleted |
| 401 | Unauthorized |
| 404 | Domain 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
| Name | In | Type | Required | Description |
id | path | string | Yes | Domain ID |
Request Body
| Field | Type | Required | Description |
tracking_domain | string | Yes | |
Responses
| Status | Description |
| 200 | Tracking domain set |
| 401 | Unauthorized |
| 404 | Domain not found |
| 409 | Tracking 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
| Name | In | Type | Required | Description |
id | path | string | Yes | Domain ID |
Responses
| Status | Description |
| 200 | Tracking domain removed |
| 401 | Unauthorized |
| 404 | Domain 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
| Name | In | Type | Required | Description |
id | path | string | Yes | Domain ID |
Responses
| Status | Description |
| 200 | DNS verification results |
| 401 | Unauthorized |
| 404 | Domain 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
| Name | In | Type | Required | Description |
id | path | string | Yes | Domain ID |
Responses
| Status | Description |
| 200 | Tracking domain verification result |
| 401 | Unauthorized |
| 404 | Domain not found |
| 422 | No 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_...")