List Domains
Retrieve a paginated list of your organization's sending domains and whether each one is verified. Any address at a verified domain can be used as the from of an email.
Domains are added and verified in the Arsel Dashboard under Settings > Domains. See Domains for the DNS records involved.
Endpoint
GET /email/domains
Headers
| Header | Value | Required |
|---|---|---|
Authorization | Bearer <your-api-key> | Yes |
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | number | 20 | Items per page (min: 1, max: 100) |
after | string | — | Cursor — return items after this id (exclusive). |
before | string | — | Cursor — return items before this id (exclusive). |
Results are returned newest first. See Pagination for cursor details.
Response
{
"object": "list",
"has_more": false,
"data": [
{
"id": "01957e3a-4b5c-7d8e-9f0a-1b2c3d4e5f6a",
"name": "mail.acme.com",
"status": "verified",
"verified_at": "2026-03-02T08:00:00.000Z",
"created_at": "2026-03-01T10:00:00.000Z"
},
{
"id": "01957e3a-4b5c-7d8e-9f0a-1b2c3d4e5f6b",
"name": "news.acme.com",
"status": "pending",
"verified_at": null,
"created_at": "2026-03-08T11:55:00.000Z"
}
]
}
Domain fields
| Field | Type | Description |
|---|---|---|
id | string | The domain ID |
name | string | The domain name |
status | string | pending, verified or failed. Only a verified domain can send. |
verified_at | string | null | When the domain was verified (ISO 8601) |
created_at | string | When the domain was added (ISO 8601) |
DNS records and DKIM tokens are not returned; they are shown in the dashboard. Sender addresses that were verified individually, without their domain, are not listed here.
Examples
- cURL
- JavaScript
- Python
- C#
- PHP
curl "https://api.arsel.sa/v1/email/domains" \
-H "Authorization: Bearer be_your_api_key"
const response = await fetch(
"https://api.arsel.sa/v1/email/domains",
{
headers: { Authorization: "Bearer be_your_api_key" },
}
);
const { data } = await response.json();
const verified = data.filter((domain) => domain.status === "verified");
console.log(verified.map((domain) => domain.name));
import requests
response = requests.get(
"https://api.arsel.sa/v1/email/domains",
headers={"Authorization": "Bearer be_your_api_key"},
)
domains = response.json()["data"]
verified = [d["name"] for d in domains if d["status"] == "verified"]
print(verified)
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer be_your_api_key");
var response = await client.GetAsync("https://api.arsel.sa/v1/email/domains");
Console.WriteLine(await response.Content.ReadAsStringAsync());
<?php
$ch = curl_init("https://api.arsel.sa/v1/email/domains");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer be_your_api_key"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
echo $response;
curl_close($ch);
Error Responses
- 401 Unauthorized
{
"status_code": 401,
"name": "unauthorized",
"message": "Invalid or missing API key"
}