Partner API

Let your customers claim name.dotin.site from your own website or panel. JSON over HTTPS.

Base URL: https://dotin.site/api/v1

Authentication

Send your API key in the Authorization header. Keys look like sdk_ab12cd34_…. Keep them secret and use them only from your server.

curl https://dotin.site/api/v1/domains \
  -H "Authorization: Bearer YOUR_API_KEY"

Rate limits

Each partner has a limit of requests per minute (default 60). Every response includes X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. When exceeded you get 429 with a Retry-After header.

Errors

Errors use standard HTTP status codes and a JSON body:

{ "error": { "code": "name_taken", "message": "This name is already taken. Try another one." } }
StatusCodes
400invalid_json
401unauthorized
403client_suspended, domain_not_allowed, quota_exceeded, record_limit
404not_found
409name_taken, name_reserved, subdomain_suspended
422invalid_domain, invalid_name, invalid_type, invalid_content, invalid_external_ref
429rate_limited, too_many_failed_attempts
502 / 503dns_provider_error, maintenance

List domains

GET /domains

{ "data": [ { "name": "dotin.site" } ] }

Subdomains

Check a name – GET /subdomains/check?label=acme&domain=dotin.site

{ "name": "acme.dotin.site", "available": true, "reason": null }

Create – POST /subdomains. external_ref is optional: your own customer ID.

curl -X POST https://dotin.site/api/v1/subdomains \
  -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" \
  -d '{"label":"acme","domain":"dotin.site","external_ref":"customer-42"}'

201 { "subdomain": { "id": 17, "name": "acme.dotin.site", "label": "acme", "domain": "dotin.site",
  "status": "active", "external_ref": "customer-42", "records": 0, "created_at": "2026-01-01T10:00:00Z" } }

List – GET /subdomains?external_ref=customer-42&limit=50&offset=0
Get – GET /subdomains/{id}
Delete – DELETE /subdomains/{id} (removes all its DNS records, returns 204)

DNS records

Types: A, AAAA, CNAME, MX, TXT. name is relative: @ for the subdomain itself, or e.g. www. ttl: 1 or "auto", 300, 3600, 86400. priority is for MX.

POST /subdomains/17/records
{ "type": "A", "name": "@", "content": "203.0.113.10" }

201 { "record": { "id": 91, "type": "A", "name": "acme.dotin.site", "content": "203.0.113.10", "ttl": 1, "priority": null, "created_at": "..." } }

GET /subdomains/{id}/records · GET|PATCH /subdomains/{id}/records/{recordId} (change content, ttl, priority) · DELETE /subdomains/{id}/records/{recordId} (204)

Usage

GET /usage returns your requests and errors in the last 24 hours, subdomain count, quota and rate limit.

Abuse policy

You are responsible for subdomains created through your key. Phishing, malware, spam and illegal content are not allowed. We may suspend a subdomain or an API client that is used for abuse. Reserved names are refused and quotas apply.

Get access

Partner access is granted manually. Contact us with your company name, website and expected volume.