Skip to Content
SeyloDocs

Add a custom domain

POST
/api/v1/domains.add

Adds a custom domain (and optional path) to a service and returns it together with the DNS record to create. The route goes live once DNS points at the service's node and a certificate is issued. Set forward to make it a redirect-only domain, for example www to the apex.

Needs domains.edit on the service (a grant on its project covers it). Available to MCP clients and the assistant.

Authorization

cookieseylo_session<token>

Request Body

application/json
  1. body
serviceId*string

Panel-issued id.

Match^[a-z0-9]{16}$
host*string

Lower-case host name without scheme or port, for example shop.example.com.

Match^([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z][a-z0-9-]{0,62}$
Length3 <= length <= 253
pathPrefix?string

Only requests under this path match. "/" is the whole host.

Match^/[A-Za-z0-9._~!$&'()*+,;=:@%/-]*$
Length1 <= length <= 200
stripPrefix?boolean
targetPort?integer

Port the container listens on.

Range1 <= value <= 65535
https?string|string|string
forward?
primary?boolean

Response Body

Success.

application/json
  1. response
domain*
dns*
Example Request
curl -X POST 'https://example.com/api/v1/domains.add' \  -H 'Content-Type: application/json' \  -d '{  "serviceId": "string",  "host": "string"}'
Example Response
{  "domain": {    "id": "string",    "serviceId": "string",    "host": "string",    "pathPrefix": "string",    "stripPrefix": true,    "targetPort": 1,    "https": "acme",    "redirectToHttps": true,    "auto": true,    "primary": true,    "forward": {      "url": "stringst",      "permanent": true,      "keepPath": true    },    "middlewares": {      "basicAuth": {        "usernames": [          "string"        ]      },      "ipAllowList": [        "string"      ],      "rateLimit": {        "average": 1,        "burst": 1,        "periodSeconds": 1      },      "redirects": [        {          "from": "string",          "to": "string",          "permanent": true        }      ]    },    "dnsStatus": "unknown",    "dnsCheckedAt": "2019-08-24T14:15:22Z",    "certificate": {      "status": "none",      "expiresAt": "2019-08-24T14:15:22Z",      "issuer": "string",      "error": "string"    },    "liveAt": "2019-08-24T14:15:22Z",    "url": "string",    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z"  },  "dns": {    "domainId": "string",    "host": "string",    "status": "unknown",    "message": "string",    "expected": [      {        "type": "A",        "name": "string",        "value": "string"      }    ],    "found": [      {        "type": "A",        "name": "string",        "value": "string"      }    ],    "zone": "string",    "cloudflareManaged": true,    "cloudflareDnsUrl": "string",    "checkedAt": "2019-08-24T14:15:22Z"  }}