Create Custom Domain¶
POST/
DNS Protection API · Custom Domains List
Creates a new Custom Domain and returns the newly created Custom Domain. There is a limit of 50 Custom Domains per account.
Parameters¶
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Tenant-ID | header | string (uuid) | Yes | Tenant ID. |
Request body¶
Content type: application/json
Request body fields
namestringrequiredThe name of this Custom Domains List.
Must match the pattern
Must match the pattern
^[a-zA-Z0-9\-_ ]+$. Must be 1–100 characters long.idstring (uuid)The unique ID of this Custom Domains List.
descriptionstringThe description of this Custom Domains List.
Must be at most 250 characters long.
Must be at most 250 characters long.
domainsarray of stringThe Domains (or Websites) associated with this List.
Must contain at most 1000 items. Items must be unique. Each item must be 1–255 characters long.
Must contain at most 1000 items. Items must be unique. Each item must be 1–255 characters long.
createdAtstring (date-time)The date/time when this custom domains list was created.
updatedAtstring (date-time)The date/time when this custom domains list was updated.
Request samples¶
curl -X POST "https://api-<data-region>.central.sophos.com/dns-protection/v2/custom-domains" -H "Authorization: Bearer <access-token>" -H "X-Tenant-ID: <tenant-id>" -H "Content-Type: application/json" -d "{
\"name\": \"My websites\",
\"id\": \"d4e1aee7-6c4e-4c9e-a8e2-1b1f4f7c4e3e\",
\"description\": \"Example Custom Domain List for a series of owned FQDN\",
\"domains\": [
\"example.com\",
\"example.org\",
\"example.net\"
],
\"createdAt\": \"2025-01-01T12:00:00.686+00:00\",
\"updatedAt\": \"2025-08-01T08:30:00.200+00:00\"
}"
import requests
response = requests.post(
"https://api-<data-region>.central.sophos.com/dns-protection/v2/custom-domains",
headers={
"Authorization": "Bearer <access-token>",
"X-Tenant-ID": "<tenant-id>",
"Content-Type": "application/json",
},
json={ 'name': 'My websites',
'id': 'd4e1aee7-6c4e-4c9e-a8e2-1b1f4f7c4e3e',
'description': 'Example Custom Domain List for a series of owned FQDN',
'domains': ['example.com', 'example.org', 'example.net'],
'createdAt': '2025-01-01T12:00:00.686+00:00',
'updatedAt': '2025-08-01T08:30:00.200+00:00'},
)
print(response.json())
$headers = @{
"Authorization" = "Bearer <access-token>"
"X-Tenant-ID" = "<tenant-id>"
"Content-Type" = "application/json"
}
$body = '{
"name": "My websites",
"id": "d4e1aee7-6c4e-4c9e-a8e2-1b1f4f7c4e3e",
"description": "Example Custom Domain List for a series of owned FQDN",
"domains": [
"example.com",
"example.org",
"example.net"
],
"createdAt": "2025-01-01T12:00:00.686+00:00",
"updatedAt": "2025-08-01T08:30:00.200+00:00"
}'
Invoke-RestMethod -Method POST -Uri "https://api-<data-region>.central.sophos.com/dns-protection/v2/custom-domains" -Headers $headers -Body $body -ContentType "application/json"
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
req, err := http.NewRequest("POST", "https://api-<data-region>.central.sophos.com/dns-protection/v2/custom-domains", strings.NewReader(`{
"name": "My websites",
"id": "d4e1aee7-6c4e-4c9e-a8e2-1b1f4f7c4e3e",
"description": "Example Custom Domain List for a series of owned FQDN",
"domains": [
"example.com",
"example.org",
"example.net"
],
"createdAt": "2025-01-01T12:00:00.686+00:00",
"updatedAt": "2025-08-01T08:30:00.200+00:00"
}`))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer <access-token>")
req.Header.Set("X-Tenant-ID", "<tenant-id>")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
const response = await fetch("https://api-<data-region>.central.sophos.com/dns-protection/v2/custom-domains", {
method: "POST",
headers: {
"Authorization": "Bearer <access-token>",
"X-Tenant-ID": "<tenant-id>",
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "My websites",
"id": "d4e1aee7-6c4e-4c9e-a8e2-1b1f4f7c4e3e",
"description": "Example Custom Domain List for a series of owned FQDN",
"domains": [
"example.com",
"example.org",
"example.net"
],
"createdAt": "2025-01-01T12:00:00.686+00:00",
"updatedAt": "2025-08-01T08:30:00.200+00:00"
}),
});
const data = await response.json();
console.log(data);
Responses¶
201 — Created.¶
Response fields
namestringrequiredThe name of this Custom Domains List.
Must match the pattern
Must match the pattern
^[a-zA-Z0-9\-_ ]+$. Must be 1–100 characters long.idstring (uuid)The unique ID of this Custom Domains List.
descriptionstringThe description of this Custom Domains List.
Must be at most 250 characters long.
Must be at most 250 characters long.
domainsarray of stringThe Domains (or Websites) associated with this List.
Must contain at most 1000 items. Items must be unique. Each item must be 1–255 characters long.
Must contain at most 1000 items. Items must be unique. Each item must be 1–255 characters long.
createdAtstring (date-time)The date/time when this custom domains list was created.
updatedAtstring (date-time)The date/time when this custom domains list was updated.
Errors¶
| Status | Meaning |
|---|---|
400 | Bad request. |
401 | Unauthorized. |
403 | Forbidden. |
409 | Conflict. |
500 | Unexpected error. |
All error responses share the same shape — see the error response object.
Response examples¶
201¶
{
"name": "My websites",
"id": "d4e1aee7-6c4e-4c9e-a8e2-1b1f4f7c4e3e",
"description": "Example Custom Domain List for a series of owned FQDN",
"domains": [
"example.com",
"example.org",
"example.net"
],
"createdAt": "2025-01-01T12:00:00.686+00:00",
"updatedAt": "2025-08-01T08:30:00.200+00:00"
}
See the guide for a narrative walkthrough of this API.