A multi-tenant domain registrar service. This page is a quick-start overview of the public API; every endpoint returns JSON and uses standard HTTP verbs and status codes.
For request and response examples for each endpoint, see the full API documentation.
Authorization: Bearer <token>.Every endpoint listed below is documented with example requests and responses in the API documentation.
The server implements OAuth 2.1 with PKCE, refresh-token rotation with reuse detection, and unauthenticated Dynamic Client Registration.
GET /.well-known/oauth-authorization-serverGET /oauth/authorizePOST /oauth/authorize/totpPOST /oauth/tokenPOST /oauth/introspectPOST /oauth/revokePOST /oauth/registerAll tenant-scoped endpoints are rooted at /api/v1/tenants/:tenant_id/.
POST /domains/check — availability check; accepts a single name or a list of names spanning multiple TLDs (the service fans out per registry binding). Optional: idn_language, fee_commands, fee_period, client_transaction_id.POST /domains — register (ICANN TLDs require a quote and an agreement acceptance block)GET /domains — list the tenant's domainsGET /domains/:name — show a single domainPOST /domains/:name/renew — renew for a supplied number of yearsPOST /domains/:name/update_nameservers — replace the nameserver set (external names auto-provision as host rows)POST /domains/:name/update_ds_records — replace the DNSSEC DS record set (full-replacement semantics bridged onto EPP secDNS-1.1 deltas)DELETE /domains/:name/ds_records — clear all DS recordsPOST /domains/:name/update_contacts — assign admin / tech / billing contactsPOST /domains/:name/transfer_in — initiate an inbound transferPOST /domains/:name/approve_transfer_out — approve a pending outbound transferPOST /domains/:name/reject_transfer_out — reject a pending outbound transferPOST /domains/:name/auth_code/rotate — rotate the transfer auth codePOST /domains/:name/transfer_lock — apply clientTransferProhibitedDELETE /domains/:name/transfer_lock — release the transfer lockPOST /domains/:name/apply_hold — place a registrar holdPOST /domains/:name/release_hold — release a registrar holdDELETE /domains/:name — delete the domainPOST /domains/:name/restore — restore a deleted domain during RGPPOST /domains/:name/reconcile — pull registry state back onto the local rowGET /domains/:name/events — audit logGET /transfers — list inter-registrar transfers (in + out)GET /transfers/:id — show a single transferPOST /transfers/:id/cancel — cancel a pending inbound transferPOST /contacts/check — validate a contact handle's availabilityGET /contacts — list the tenant's contactsGET /contacts/:handle — show a single contactPOST /contacts — create a contactPATCH /contacts/:handle — update a contactDELETE /contacts/:handle — delete a contactPOST /contacts/:handle/transfer — transfer a contact between tenantsGET /hosts — list the tenant's hostsGET /hosts/:name — show a single hostPOST /hosts — create a host (subordinate hosts need IPs; external hosts take none)PATCH /hosts/:name — update a host's IPsPOST /hosts/:name/rename — rename a hostDELETE /hosts/:name — delete a hostPOST /hosts/:name/reconcile — pull registry state (statuses + IPs) back onto the local rowGET /tld_associations/:id/certificate — retrieve metadata + public PEM (never the key)PUT /tld_associations/:id/certificate — upload or rotate (key is write-only)DELETE /tld_associations/:id/certificate — remove the stored certificateGET /rate_card — list active rate cards across this tenant's TLDsGET /tlds/:tld/rate_card — show the active rate card for a TLDPOST /quotes — mint a single-use quote (required for ICANN-TLD register / renew / transfer_in / restore; informational for trade)POST /agreement_versions — create a draft agreement versionGET /agreement_versions — list agreement versionsGET /agreement_versions/:id — show a single agreement versionPOST /agreement_versions/:id/publish — publish a draftPOST /agreement_versions/:id/retire — retire a published versionPOST /domains/:name/acceptance — record an acceptanceGET /domains/:name/acceptance — show the active acceptancePOST /domains/:name/acceptance/terminate — terminate the active acceptance (start the 45-day deletion clock)GET /domains/:name/acceptance/history — list every acceptance recorded for the domainPATCH /api/v1/tenants/:tenant_id — update mutable tenant attributes (also accepts PUT)GET /members — list membersGET /members/:user_id — show a single memberDELETE /members/:user_id — remove a memberPUT /members/:user_id/role — change a member's rolePUT /members/:user_id/activate — activate a memberPUT /members/:user_id/deactivate — deactivate a memberGET /invitations — list pending invitationsPOST /invitations — invite a userDELETE /invitations/:id — revoke an invitationGET /oauth_clients — list the tenant's OAuth clientsGET /oauth_clients/:id — show a single OAuth clientPOST /oauth_clients — register a new OAuth clientDELETE /oauth_clients/:id — revoke an OAuth clientPOST /oauth_clients/:id/rotate_secret — rotate a confidential client's secretGET /sessions — list active sessionsDELETE /sessions/:id — revoke a sessionGET /api/v1/user/tenants — list tenants the calling user can authenticate intoGET /api/v1/user/totp — TOTP enrollment statusPOST /api/v1/user/totp/enrollments — start TOTP enrollment (returns secret + otpauth URI)POST /api/v1/user/totp/enrollments/confirm — confirm with a code (returns recovery codes once)DELETE /api/v1/user/totp — disable TOTP (requires a current code or recovery code)GET /disputes — list disputesGET /disputes/:id — show a single disputePOST /api/v1/abuse_reports — public abuse intake (unauthenticated)GET /abuse_cases — list the tenant's abuse cases (read-only)GET /abuse_cases/:id — show a single abuse case
Public read-only lookups under /directory/v1/ — no
bearer token required, rate-limited per source IP. Returns only
the fields each contact's disclosure flags permit.
GET /directory/v1/domains/by_name/:name — look up a domain by FQDNGET /directory/v1/contacts/:handle — look up a contact by handleGET /directory/v1/hosts/by_name/:name — look up a host by FQDNGET /directory/v1/registrars/by_iana_id/:iana_id — look up a registrar by IANA idUnauthenticated endpoints that complete a workflow started by a server-sent token — typically delivered to the end user via email or SMS. Each carries its token in the URL or body and requires no bearer token; calling them is the confirmation action itself.
POST /api/v1/invitations/:token/accept — accept a tenant invitationPOST /api/v1/tenants/:tenant_id/contacts/:handle/verify — confirm a contact's email or phoneGET /verify/:tenant_id/:handle — registrar-hosted verification page (HTML fallback when the tenant has no custom verification URL template)POST /verify/:tenant_id/:handle — form submission target for the hosted verification page