Skip to content

Documentation

Add an own domain

POST/v1/domainsDomains

Adds a domain for the account's links. Then add a CNAME record from the hostname to customers.snip.link at your DNS provider; the domain turns active within minutes of the record resolving, certificate included, and links made with "domain": "go.example.com" on create_link answer at https://go.example.com/<ending>. Endings are per domain, so go.example.com/menu and snip.link/menu are different links. Pro holds 5; other plans answer 403 forbidden with details.upgrade.

Request body

JSON, sent with Content-Type: application/json.

FieldTypeRequiredDescription
hostnamestringrequiredA subdomain you control, such as go.yourbrand.com. A bare apex (yourbrand.com) cannot point a CNAME at us on most DNS providers.
root_urlstringoptionalWhere the bare domain sends visitors. Screened like a link destination.

Example request

curl -s -X POST "https://snip.link/v1/domains" \
  -H "Authorization: Bearer $SNIP_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Example response

{
  "domain": {
    "id": "dom_3c1f0a9e2b7d4c55",
    "hostname": "go.example.com",
    "status": "active",
    "detail": null,
    "cname_target": "customers.snip.link",
    "root_url": "https://example.com",
    "links": 42,
    "created_at": "2026-10-20T12:00:00.000Z"
  }
}

Response fields

FieldTypeDescription
domainDomain
domain.idstringStable id. Every domain route accepts it, or the hostname.
domain.hostnamestringThe domain links live on, without a scheme.
domain.statuspending | active | failedpending until the CNAME points at us and the certificate is issued, active once links on it answer, failed when verification gave up.
domain.detailstring, nullWhat a pending domain is waiting for, or why it failed. Null once active.
domain.cname_targetstringThe DNS record to add at your DNS provider: a CNAME from the hostname to this target (customers.snip.link).
domain.root_urlstring, nullWhere the bare domain (https://go.example.com/) sends visitors. Null answers 404.
domain.linksintegerLinks on this domain.
domain.created_atstring

Errors

StatusMeaning
400The body or query is invalid. details names each field.
401The API key is missing, malformed or revoked.
403The plan does not include this. details.upgrade names the plan that does.
409The domain is already in this or another account.
429Either the key exceeded its requests-per-second limit (honor Retry-After), or a daily or plan quota is used up (details.reason).
503Own domains are switched off for the service right now.

Back to the guide