Intent-DNS REST API

v1 Public Reference

Programmatic REST API for managing authoritative PowerDNS zones, records, apex ALIAS flattening, and Anycast CDN Reverse Proxy.

Open Public API Access
The Intent-DNS REST API is available to all registered users. Create a free account or sign in to generate your API token and automate your DNS infrastructure.
Base URL & Authentication

All API requests must be made over HTTPS to the base endpoint:

https://panel.dns.int.yt/api/v1 HTTPS Only

Include your persistent API key as a Bearer token in the HTTP Authorization header:

Authorization: Bearer idns_live_your_api_key_token
How to obtain an API Key:
  1. Exchange your account username/email and password via POST /api/v1/auth/token, or
  2. Generate a token directly in the web dashboard under Settings & API Keys.
API Endpoints Reference
POST /api/v1/auth/token Generate a new API token via credentials

Exchange your account credentials for a persistent API key token (no existing Bearer token required).

curl -X POST https://panel.dns.int.yt/api/v1/auth/token \
  -H "Content-Type: application/json" \
  -d '{"login": "username_or_email", "password": "yourpassword", "name": "CI/CD Token"}'
// Response 200 OK
{
  "ok": true,
  "token": "idns_live_0123456789abcdef...",
  "prefix": "idns_live_0123",
  "user": { "id": 2, "username": "sreep", "role": "admin", "plan": "unlimited" }
}
GET /api/v1/user Account profile, quotas, and current resource usage
curl https://panel.dns.int.yt/api/v1/user \
  -H "Authorization: Bearer idns_live_..."
// Response 200 OK
{
  "ok": true,
  "account": {
    "id": 2,
    "username": "sreep",
    "domain_count": 5,
    "dns_record_count": 28,
    "limits": { "plan": "unlimited", "is_unlimited": true, "max_domains_display": "Unlimited" }
  }
}
GET POST /api/v1/domains List or create authoritative domain zones

Creates an authoritative DNS zone synchronized across anycast nameservers dns1.int.yt, dns2.int.yt, dns3.int.yt, and dns4.int.yt.

# List domains
curl https://panel.dns.int.yt/api/v1/domains -H "Authorization: Bearer idns_live_..."

# Create domain
curl -X POST https://panel.dns.int.yt/api/v1/domains \
  -H "Authorization: Bearer idns_live_..." \
  -H "Content-Type: application/json" \
  -d '{"domain": "example.com"}'
GET DELETE /api/v1/domains/{domain_id} Retrieve details or delete a domain zone
# Delete domain
curl -X DELETE https://panel.dns.int.yt/api/v1/domains/42 \
  -H "Authorization: Bearer idns_live_..."
GET POST PUT DELETE /api/v1/domains/{domain_id}/records DNS Records Management

Supports all standard DNS record types: A, AAAA, CNAME, ALIAS (Apex CNAME Flattening), MX, TXT, NS, SRV, and CAA.

# List records for domain
curl https://panel.dns.int.yt/api/v1/domains/42/records \
  -H "Authorization: Bearer idns_live_..."

# Create an apex ALIAS record (CNAME Flattening)
curl -X POST https://panel.dns.int.yt/api/v1/domains/42/records \
  -H "Authorization: Bearer idns_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name": "@", "type": "ALIAS", "content": "myapp.herokuapp.com", "ttl": 300}'

# Update record
curl -X PUT https://panel.dns.int.yt/api/v1/domains/42/records/128 \
  -H "Authorization: Bearer idns_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name": "@", "type": "A", "content": "192.0.2.1", "ttl": 300}'

# Delete record
curl -X DELETE https://panel.dns.int.yt/api/v1/domains/42/records/128 \
  -H "Authorization: Bearer idns_live_..."
GET POST PUT DELETE /api/v1/domains/{domain_id}/proxy CDN Edge Ingress

Programmatically manage Anycast Reverse Proxy and CDN edge acceleration. Traffic routes through Anycast cluster IP 192.255.149.52 and 2605:6400:30:fbf5::2, offering automated Let's Encrypt SSL/TLS termination, HTTP/2 acceleration, Gzip/Brotli compression, and origin IP concealment.

Edge Acceleration Features
  • Automated Let's Encrypt SSL/TLS termination
  • HTTP/2 multiplexing & protocol negotiation
  • Origin IP shielding & concealment
  • Built-in SSRF protection (validates public IPs only)
Proxy States (Orange vs Grey Cloud)
  • Enabled (Orange Cloud): Anycast ingress proxy handles traffic; origin hidden.
  • Disabled (Grey Cloud): Standard direct DNS resolution to origin IP.
GET /api/v1/domains/{domain_id}/proxy Retrieve reverse proxy status and origin settings
curl https://panel.dns.int.yt/api/v1/domains/42/proxy \
  -H "Authorization: Bearer idns_live_..."
// Response 200 OK
{
  "ok": true,
  "domain": { "id": 42, "domain": "example.com" },
  "proxy": {
    "domain_id": 42,
    "is_enabled": 1,
    "origin_host": "203.0.113.50",
    "origin_port": 443,
    "origin_protocol": "https",
    "ssl_status": "active",
    "ssl_issued_at": "2026-09-09 22:45:00",
    "ssl_expires_at": "2026-12-08 22:45:00",
    "ssl_error": null
  }
}
POST /api/v1/domains/{domain_id}/proxy Configure or update reverse proxy origin

Parameters: origin (or origin_host), port (default: 443), protocol (http or https). Origin must be a valid public IPv4, IPv6, or hostname (SSRF protection strictly rejects private/loopback/internal IPs).

curl -X POST https://panel.dns.int.yt/api/v1/domains/42/proxy \
  -H "Authorization: Bearer idns_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "origin": "203.0.113.50",
    "port": 443,
    "protocol": "https"
  }'
POST /api/v1/domains/{domain_id}/proxy/toggle Enable or disable reverse proxy routing (Cloud toggle)

Parameters: enable: true (proxies traffic through Anycast edge) or enable: false (direct DNS to origin).

# Enable proxy (Orange Cloud)
curl -X POST https://panel.dns.int.yt/api/v1/domains/42/proxy/toggle \
  -H "Authorization: Bearer idns_live_..." \
  -H "Content-Type: application/json" \
  -d '{"enable": true}'
POST /api/v1/domains/{domain_id}/proxy/ssl Issue or renew Let's Encrypt SSL certificate
curl -X POST https://panel.dns.int.yt/api/v1/domains/42/proxy/ssl \
  -H "Authorization: Bearer idns_live_..."
DELETE /api/v1/domains/{domain_id}/proxy Remove reverse proxy configuration & restore direct DNS
curl -X DELETE https://panel.dns.int.yt/api/v1/domains/42/proxy \
  -H "Authorization: Bearer idns_live_..."
HTTP Status Codes & Error Handling

All API responses use conventional HTTP status codes and standard JSON envelope format:

Status Code Description
200 OK The request was successful. Response body contains ok: true and requested data.
400 Bad Request Malformed JSON payload or invalid request syntax.
401 Unauthorized Missing, expired, or invalid Bearer token / credentials.
403 Forbidden API access disabled for account or insufficient permission role.
404 Not Found Requested domain, DNS record, or endpoint does not exist.
409 Conflict Domain zone already exists, account limit reached, or conflicting DNS record (e.g. CNAME at apex).
422 Unprocessable Validation failed (e.g. private/reserved IP in reverse proxy origin, invalid hostname, bad TTL).
429 Rate Limited Too many requests submitted. Back off and retry with exponential delay.