this is an ajaira post
Partner API

Give your users a subdomain, from your own product

Claim subdomains and manage their DNS programmatically. Bearer tokens, JSON in and out, no SDK required.

This API is not self-service. Tokens are issued to vetted partners, not to every account. An open API on a free subdomain service is a resale business waiting to happen — someone wraps it, hands out name.ajaira.site under their own brand, and the abuse reports land with us. Partners are known to us and accountable for what they provision.

Who this is for

You run something with users of your own — a hosting panel, a bootcamp, a developer community, a deployment product — and you want to hand each of them a name.ajaira.site without asking them to sign up here separately.

If you just want to script your own subdomains, that is not what this is for yet. The dashboard does everything the API does, and we would rather hear what you are trying to automate — tell us and it may change our mind.

Getting a token

Email us with what you are building and roughly how many subdomains you expect. If it fits, we issue a token against your existing account — with a raised quota and rate limit — and it appears in your dashboard. It is shown once.

Send it on every request:

curl https://dev.ajaira.site/api/v1/me \
  -H "Authorization: Bearer ajr_live_xxxxxxxxxx_yyyyyyyy"

Scopes

ScopeLets a token
subdomain:readSee the subdomains this token can reach
subdomain:writeClaim and release subdomains
dns:readRead DNS records
dns:writeCreate, edit and delete DNS records

Grant the narrowest set that does the job. A token with only dns:read cannot delete anything, whoever ends up holding it.

Endpoints

MethodPathDoes
GET/api/v1/meToken and account info
GET/api/v1/availability?name=xIs a name free?
GET/api/v1/subdomainsList yours
POST/api/v1/subdomainsClaim one
GET/api/v1/subdomains/{id}One, with its records
DELETE/api/v1/subdomains/{id}Release it
GET/api/v1/subdomains/{id}/recordsIts DNS records
POST/api/v1/subdomains/{id}/recordsAdd a record
PATCH/api/v1/records/{id}Change one
DELETE/api/v1/records/{id}Delete one

Claiming a subdomain

curl -X POST https://dev.ajaira.site/api/v1/subdomains \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "mursalin", "external_ref": "customer-4821"}'
{
  "id": 12,
  "name": "mursalin",
  "fqdn": "mursalin.ajaira.site",
  "status": "active",
  "external_ref": "customer-4821",
  "days_left": 7
}

external_ref is yours to use — put your own user or order id there and filter on it later with ?external_ref=. We never look at it.

Adding a record

curl -X POST https://dev.ajaira.site/api/v1/subdomains/12/records \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type": "A", "name": "@", "content": "203.0.113.10", "ttl": 3600}'

Types: A, AAAA, CNAME, TXT, MX, NS. Use @ for the subdomain itself. MX takes a priority. NS delegates the name away — see bring your own nameservers.

PATCH only needs the fields you are changing; everything else stays as it was.

Errors

{
  "error": {
    "code": "name_taken",
    "message": "Already taken. Try another name."
  }
}
StatusMeans
401Token missing, expired or revoked
403Token lacks the scope for this call
404No such resource on this account
409Conflicts with the current state
422Rejected — read details
429Over your hourly rate limit

Rate limits and quota

Set per token when we issue it, sized to what you told us you need. Going over returns 429 with a Retry-After header; nothing is penalised beyond the wait. If you outgrow it, ask — we would rather raise it than have you retry in a loop.

The trade

Subdomains you provision belong to your account. That is what makes one integration possible instead of every one of your users signing up here — and it means you are accountable for what they serve under the Acceptable Use Policy.

  • Abuse on a name you provisioned comes to you first. We expect you to act on it.
  • Reselling access, or passing your token to a third party, ends the partnership.
  • We can revoke a token instantly, and a revoked token stops mid-integration.
  • Your subdomains renew on the same terms as everyone's — keep signing in, or ask us about a longer term for provisioned names.