curl -X PATCH "https://api.scanova.io/custom-domain/42/" \
-H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
-H "Content-Type: application/json" \
-d '{
"root_action": "url_redirect",
"redirect": "https://example.com/landing"
}'
{
"id": 42,
"domain": "https://links.example.com",
"is_default": false,
"disable_slug_case": false,
"txt_value": "scanova-verification=abc123...",
"is_txt_verified": true,
"is_cname_verified": true,
"is_migrated": false,
"dns_provider": { "name": "Cloudflare", "placeholders": { "cname": { "content": { "label": "Target" } } } },
"txt_error": null,
"cname_error": null,
"root_action": "url_redirect",
"redirect": "https://example.com/landing",
"template": null,
"protocol": "https",
"remove_qr_query": false,
"cname_target": "shortcname.scanova.io",
"domain_connect_supported": false,
"domain_connect_checked_at": null,
"created": "2026-09-08T10:00:00Z",
"modified": "2026-09-08T10:00:00Z"
}
Custom Domains
Update a custom domain
PATCH /custom-domain//
PATCH
/
custom-domain
/
{pk}
/
curl -X PATCH "https://api.scanova.io/custom-domain/42/" \
-H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
-H "Content-Type: application/json" \
-d '{
"root_action": "url_redirect",
"redirect": "https://example.com/landing"
}'
{
"id": 42,
"domain": "https://links.example.com",
"is_default": false,
"disable_slug_case": false,
"txt_value": "scanova-verification=abc123...",
"is_txt_verified": true,
"is_cname_verified": true,
"is_migrated": false,
"dns_provider": { "name": "Cloudflare", "placeholders": { "cname": { "content": { "label": "Target" } } } },
"txt_error": null,
"cname_error": null,
"root_action": "url_redirect",
"redirect": "https://example.com/landing",
"template": null,
"protocol": "https",
"remove_qr_query": false,
"cname_target": "shortcname.scanova.io",
"domain_connect_supported": false,
"domain_connect_checked_at": null,
"created": "2026-09-08T10:00:00Z",
"modified": "2026-09-08T10:00:00Z"
}
Updates a custom domain’s configuration, on the Management API host (
api.scanova.io), authenticated with your raw Management API key.
PUT https://api.scanova.io/custom-domain/{pk}/
PATCH https://api.scanova.io/custom-domain/{pk}/
Authorization: 401f7ac837da42b97f613d789819ff93537bee6a
integer
required
The domain’s
id.boolean
Whether new QR Codes use this domain by default.
string
What to do when someone visits the bare domain (no QR slug):
no_action (default), url_redirect, or custom_page.string
The URL to send visitors to when
root_action is url_redirect.integer
A
CustomDomainTemplate id to serve as the root page when root_action is custom_page — see List custom domain root-page templates.string
none, http, or https. Blank defaults to https.boolean
Strips the
?qr=1 tracking parameter from short-link URLs when set.curl -X PATCH "https://api.scanova.io/custom-domain/42/" \
-H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
-H "Content-Type: application/json" \
-d '{
"root_action": "url_redirect",
"redirect": "https://example.com/landing"
}'
{
"id": 42,
"domain": "https://links.example.com",
"is_default": false,
"disable_slug_case": false,
"txt_value": "scanova-verification=abc123...",
"is_txt_verified": true,
"is_cname_verified": true,
"is_migrated": false,
"dns_provider": { "name": "Cloudflare", "placeholders": { "cname": { "content": { "label": "Target" } } } },
"txt_error": null,
"cname_error": null,
"root_action": "url_redirect",
"redirect": "https://example.com/landing",
"template": null,
"protocol": "https",
"remove_qr_query": false,
"cname_target": "shortcname.scanova.io",
"domain_connect_supported": false,
"domain_connect_checked_at": null,
"created": "2026-09-08T10:00:00Z",
"modified": "2026-09-08T10:00:00Z"
}
Most fields are read-only here
Onlyis_default, root_action, redirect, template, protocol, and remove_qr_query can be written through this endpoint — every other field, including domain itself, is read-only once the domain is created. 404 if pk isn’t a domain owned by this account.
Related
- Retrieve a custom domain — view before updating.
- List custom domain root-page templates — find a
templateid forcustom_page. - Management API overview — the auth scheme and quota rules that apply to this endpoint.
Authorizations
Send your Management API key as the raw value of the Authorization header — no "Bearer " or "Token " prefix, and no other characters. Example: Authorization: 401f7ac837da42b97f613d789819ff93537bee6a. A header containing more than one space-separated part is rejected outright. Requests also require the request's Host header to be the management API host (e.g. api.scanova.io) — the same key sent to the regular API host will not authenticate.
Path Parameters
Response
Domain updated.
Was this page helpful?