Quickstart

From an API key to a record resolving on the public internet. You will create a zone, prove you own the domain, delegate it to the Quathos Monitor nameservers and publish an A record.

1. Create your account and organization

Sign up in the dashboard and verify your e-mail. Every account gets an organization: all zones, records and API keys belong to it, and its numeric id appears in every API path as {org_id}.

E-mail verification required

API keys can only be issued once your e-mail is verified (403 verify_email_first_api_keys otherwise).

2. Create an API key

In the dashboard, go to API Keys (/painel/tokens) and create a key. The full secret starts with qfx_ and is shown only once: copy it now. See Authentication for scopes and details.

Terminal
export QUATHOS_KEY="qfx_1a2b3c4d_..."
export ORG_ID="7"
export BASE="https://api.monitor.quathos.com/v1"

3. Create the zone

Register your apex domain. The zone starts as pending: it is recorded in your organization, but nothing is published on the nameservers until ownership and delegation are both confirmed.

cURL
curl -s -X POST "$BASE/orgs/$ORG_ID/zones" \
  -H "Authorization: Bearer $QUATHOS_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "example.com" }'
response · 201 Created
{
  "id": 42,
  "org_id": 7,
  "name": "example.com",
  "status": "pending",
  "nameservers": ["ns1.monitor.quathos.com", "ns2.monitor.quathos.com"],
  "dnssec_enabled": false,
  "checked_at": null,
  "created_at": "2026-07-22T14:03:22.418093"
}

4. Get the setup instructions

The setup endpoint returns the nameservers to configure at your registrar (assigned_ns), what the public DNS reports today (current_ns) and the TXT record that proves you own the domain (ownership_record).

cURL
curl -s "$BASE/orgs/$ORG_ID/zones/42/setup" \
  -H "Authorization: Bearer $QUATHOS_KEY"
response · 200 OK
{
  "zone_id": 42,
  "name": "example.com",
  "status": "pending",
  "assigned_ns": ["ns1.monitor.quathos.com", "ns2.monitor.quathos.com"],
  "zone_ns": ["ns1.monitor.quathos.com", "ns2.monitor.quathos.com"],
  "current_ns": ["ns1.oldprovider.net", "ns2.oldprovider.net"],
  "delegated": false,
  "ownership_token": "kP3vQ8...",
  "ownership_verified": false,
  "ownership_record": {
    "name": "_quathos-challenge.example.com",
    "type": "TXT",
    "value": "kP3vQ8..."
  },
  "instructions": ["…"]
}

5. Prove you own the domain

Publish ownership_record as a TXT record at your current DNS provider, before switching nameservers, then ask the API to read it:

TXT record
_quathos-challenge.example.com.  3600  IN  TXT  "kP3vQ8..."
cURL
curl -s -X POST "$BASE/orgs/$ORG_ID/zones/42/verify-ownership" \
  -H "Authorization: Bearer $QUATHOS_KEY"
response · 200 OK
{
  "zone_id": 42,
  "name": "example.com",
  "ownership_verified": true
}

Delegation alone is not proof

The nameservers are shared by every customer, so pointing a domain at them proves nothing about who controls it. Without the TXT proof the zone stays pending even after the nameservers point at us. Once proven, it stays proven.

6. Switch nameservers at your registrar

At your domain registrar, replace the current NS entries with the assigned ones:

  • Review the records first (create them, or import them) so nothing goes dark during the switch.
  • If DNSSEC is enabled at your old provider, disable it at the registrar before switching.
  • Replace the nameservers with ns1.monitor.quathos.com and ns2.monitor.quathos.com.
  • Wait for propagation, from minutes up to 24h. Quathos Monitor re-checks every 5 minutes.

7. Check the delegation

Don't want to wait for the automatic check? Trigger one on demand. When every observed NS is ours and ownership is proven, the zone is published on the nameservers with its records and flips to active (and the organization owner gets an e-mail).

cURL
curl -s -X POST "$BASE/orgs/$ORG_ID/zones/42/check-delegation" \
  -H "Authorization: Bearer $QUATHOS_KEY"
response · 200 OK
{
  "id": 42,
  "org_id": 7,
  "name": "example.com",
  "status": "active",
  "nameservers": ["ns1.monitor.quathos.com", "ns2.monitor.quathos.com"],
  "dnssec_enabled": false,
  "checked_at": "2026-07-22T15:10:05.207731",
  "created_at": "2026-07-22T14:03:22.418093"
}

8. Create a record

Use a relative name (www), @ for the apex, or the full FQDN. On an active zone the change is pushed to the nameservers as part of the request; on a pending zone it is stored and published at activation.

cURL
curl -s -X POST "$BASE/orgs/$ORG_ID/zones/42/records" \
  -H "Authorization: Bearer $QUATHOS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "www",
    "type": "A",
    "content": "203.0.113.10",
    "ttl": 3600
  }'
response · 201 Created
{
  "id": 1001,
  "zone_id": 42,
  "name": "www.example.com",
  "type": "A",
  "content": "203.0.113.10",
  "ttl": 3600,
  "priority": null,
  "disabled": false,
  "created_at": "2026-07-22T15:12:40.660215"
}

9. Verify with dig

Ask the Quathos Monitor nameserver directly for the answer it serves:

Terminal
dig +short www.example.com A @ns1.monitor.quathos.com
# 203.0.113.10

Next steps