Autentizace
Všechny API požadavky vyžadují autentizaci pomocí API klíče. Předejte klíč v hlavičce Authorization jako Bearer token. API klíč musí začínat předponou nxd_.
Authorization: Bearer nxd_your_api_key_here
API firewall je bezstavový – každý požadavek je autentizován nezávisle. Neexistují žádné relace ani cookies.
Udržujte svůj API klíč v tajnosti. Nesdílejte ho v klientském kódu, veřejných repozitářích ani URL adresách. Pokud dojde ke kompromitaci klíče, okamžitě ho zneplatněte a vytvořte nový.
Chyby autentizace
| Stav | Příčina |
|---|---|
401 |
Chybějící nebo neplatný API klíč, prošlý klíč nebo zrušený účet |
403 |
API klíč nemá požadované oprávnění pro daný endpoint |
Formát odpovědi
Všechny odpovědi jsou ve formátu JSON. Úspěšné odpovědi mají následující strukturu:
Jednotlivý zdroj
{
"status": "success",
"data": {
"id": 42,
"public_id": "xK9mP2",
"name": "example.com",
...
}
}
Stránkovaný seznam
{
"status": "success",
"data": [ ... ],
"meta": {
"total": 150,
"page": 1,
"per_page": 25,
"last_page": 6
}
}
Chybová odpověď
{
"status": "error",
"error": {
"code": "validation_error",
"message": "Validation failed.",
"details": {
"name": ["Domain name is required."]
}
}
}
Veřejná ID
Každý zdroj je identifikován neprůhledným id (například xK9mQ2), které se používá v URL cestách. Numerická databázová ID nejsou nikdy vystavena ani přijímána.
Stránkování
Endpointy pro výpis, které vrací stránkované výsledky, přijímají následující parametry dotazu:
| Parametr | Typ | Výchozí | Popis |
|---|---|---|---|
page |
integer | 1 | Číslo stránky (minimálně 1) |
per_page |
integer | 25 | Položek na stránku (1–100) |
Zóny
Správa DNS zón. Vyžaduje zones.read pro operace čtení a zones.write pro operace zápisu.
GET /v1/zones
Výpis všech zón autentizovaného uživatele.
Parametry dotazu
search– filtrování zón podle názvupage,per_page– stránkování
Pole odpovědi
Pole odpovědi: id, name, type (master/slave), status, ns_group, created_at, updated_at
GET /v1/zones/{id}
Získání podrobných informací o konkrétní zóně, včetně dat SOA, nameserverů a počtu záznamů.
Další pole odpovědi
records_count, soa (primary_ns, admin_email, serial, refresh, retry, expire, minimum), nameservers (pole), ns_group (id, slug, name)
POST /v1/zones
Vytvoření nové DNS zóny. Vytváření zón je zablokováno, pokud má uživatel neuhrazené faktury.
Tělo požadavku (JSON)
{
"name": "example.com",
"type": "master",
"ns_group_id": 1,
"master_ip": ""
}
name(povinné) – název doménytype–"master"(výchozí) nebo"slave"ns_group– NS skupina, ke které bude zóna přiřazena (volitelné, pokud není uvedeno, použije se výchozí)master_ip– povinné pro podřízené zóny; musí být platná IP adresa
Vrací 201 Created s objektem zóny.
DELETE /v1/zones/{id}
Smazání zóny a všech jejích záznamů.
Vrací 204 No Content při úspěchu.
GET /v1/zones/{id}/export
Export zóny ve formátu BIND nebo jako strukturovaný JSON.
Parametry dotazu
format–"bind"(výchozí) vrací text souboru zóny BIND;"json"vrací strukturované pole záznamů s name, type, content a ttl
Záznamy
Správa DNS záznamů v rámci zóny. Všechny endpointy pro záznamy jsou vnořeny pod zónu. Vyžaduje records.read pro operace čtení a records.write pro operace zápisu.
GET /v1/zones/{zoneId}/records
Výpis všech záznamů v zóně.
Parametry dotazu
type– filtrování podle typu záznamu (např.A,CNAME,MX)name– filtrování podle názvu záznamu (hledání podřetězce)search– vyhledávání v názvu i obsahu
Pole odpovědi
id, name, type, content, ttl, disabled, fields (rozparsovaná pole podle typu)
GET /v1/zones/{zoneId}/records/{recordId}
Získání jednoho záznamu podle jeho ID.
POST /v1/zones/{zoneId}/records
Vytvoření nového DNS záznamu.
Tělo požadavku (JSON)
{
"type": "A",
"name": "www",
"ttl": 3600,
"content": "93.184.216.34"
}
type(povinné) – typ záznamu (A, AAAA, CNAME, MX, TXT, SRV, CAA, NS, PTR, ALIAS, DNAME, DS, TLSA)name– název záznamu relativní k zóně (výchozí:@pro apex zóny)ttl– doba životnosti v sekundách (výchozí: 3600)content– hodnota záznamu (IP pro A/AAAA, název hostitele pro CNAME/NS/PTR, text pro TXT, poštovní server pro MX)
Pole specifická pro typ
- MX:
priority(výchozí: 10) - SRV:
priority,weight,port(hodnoty záznamu) - CAA:
flags(výchozí: 0),tag(výchozí: „issue") - DS:
keytag,algorithm,digest_type(hodnoty záznamu) - TLSA:
usage,selector,matching_type(hodnoty záznamu)
Vrací 201 Created s objektem záznamu.
PUT /v1/zones/{zoneId}/records/{recordId}
Aktualizace existujícího záznamu. Uveďte pouze pole, která chcete změnit; vynechaná pole si zachovají aktuální hodnoty.
{
"content": "93.184.216.35",
"ttl": 7200
}
Vrací 200 OK s aktualizovaným objektem záznamu. Poznámka: ID záznamu se může po aktualizaci změnit, protože je vypočítáno z názvu, typu a obsahu záznamu.
DELETE /v1/zones/{zoneId}/records/{recordId}
Smazání záznamu ze zóny.
Vrací 204 No Content při úspěchu.
DNSSEC
Správa DNSSEC pro vaše zóny. Vyžaduje zones.read pro zobrazení stavu a zones.write pro aktivaci nebo deaktivaci.
GET /v1/zones/{id}/dnssec
Získání stavu DNSSEC pro zónu, včetně klíčů a záznamů DS.
Pole odpovědi
enabled (boolean), keys (pole záznamů DNSKEY), ds_records (pole záznamů DS pro nastavení u registrátora)
POST /v1/zones/{id}/dnssec/enable
Aktivace DNSSEC pro zónu. Automaticky vygeneruje podepisovací klíče.
Vrací stav DNSSEC s vygenerovanými klíči a záznamy DS.
POST /v1/zones/{id}/dnssec/disable
Deaktivace DNSSEC pro zónu. Odstraní všechny podepisovací klíče.
Vrací {"enabled": false, "keys": [], "ds_records": []}.
Skupiny NS
Vypíše dostupné skupiny name serverů. Použijte id skupiny jako ns_group při vytváření zóny. Tento endpoint může číst jakýkoli platný API klíč.
GET /v1/ns-groups
Vypíše aktivní skupiny name serverů.
Pole odpovědi pro každou skupinu
id, name, slug
Účet
Zobrazení informací o účtu a správa API klíčů.
GET /v1/account
Získání aktuálních informací o účtu, včetně údajů o předplatném.
Pole odpovědi
Pole odpovědi: id (UUID), email, name, role, status, language, timezone, created_at
subscription – objekt s plan, billing_cycle, status, current_period_start, current_period_end (nebo null, pokud nemáte předplatné)
GET /v1/account/api-keys
Výpis všech API klíčů autentizovaného uživatele.
Pole odpovědi pro každý klíč
id, name, key_prefix (prvních 8 znaků), permissions (pole), last_used_at, expires_at, created_at
POST /v1/account/api-keys
Vytvoření nového API klíče.
Tělo požadavku (JSON)
{
"name": "CI/CD Pipeline",
"permissions": ["zones.read", "records.read", "records.write"],
"expires_at": "2027-01-01"
}
name(povinné) – lidsky čitelný název (max. 255 znaků)permissions(povinné) – pole oprávnění (alespoň jedno je vyžadováno):zones.read,zones.write,records.read,records.write,webhooks.read,webhooks.writeexpires_at– volitelné datum expirace (ISO 8601 neboYYYY-MM-DD); musí být v budoucnosti
Odpověď obsahuje úplný API klíč v poli
key. Toto je jediný okamžik, kdy je úplný klíč zobrazen. Uložte ho bezpečně.
Vrací 201 Created s detaily klíče včetně úplné hodnoty key.
DELETE /v1/account/api-keys/{id}
Zneplatnění (trvalé smazání) API klíče.
Vrací 204 No Content při úspěchu.
Fakturace
Zobrazení předplatného, tarifů a faktur. Tyto endpointy jsou pouze pro čtení.
GET /v1/billing/subscription
Získání aktuálních údajů o předplatném. Vrací null, pokud není aktivní předplatné.
Pole odpovědi
Pole odpovědi: id, plan, billing_cycle, status, current_period_start, current_period_end, created_at
GET /v1/billing/plans
Výpis všech dostupných tarifů s cenami a funkcemi.
Pole odpovědi pro každý tarif
id, name, slug, description, price_monthly, price_yearly, currency, max_domains, max_records, features (pole)
GET /v1/billing/invoices
Vypíše faktury autentizovaného uživatele, nejnovější první.
Parametry dotazu
status– filtrování podle stavu (draft,issued,sent,void)page,per_page– stránkování
GET /v1/billing/invoices/{id}
Získá jednu fakturu podle jejího <code>id</code>.
Pole odpovědi
Pole odpovědi: id, number, status, amount (s daní), net_amount (bez daně), tax_amount, tax_rate, currency, issued_at, created_at. Peněžní hodnoty jsou jednoduché desetinné řetězce.
Webhooks
Správa odchozích webhook odběrů pro příjem oznámení o změnách zón a záznamů v reálném čase. Vyžaduje webhooks.read pro čtení a webhooks.write pro vytváření, úpravu nebo mazání.
GET /v1/webhooks
Vypíše všechny webhook odběry autentizovaného uživatele.
Pole odpovědi pro každý webhook
id, url, events (pole), description, is_active, failure_count, last_triggered_at, created_at
POST /v1/webhooks
Vytvoří webhook odběr.
Tělo požadavku (JSON)
{
"url": "https://example.com/webhook",
"events": ["zone.created", "record.created"],
"description": "Production webhook"
}
url(povinné) – HTTPS endpoint, který bude přijímat data událostíevents(povinné) – pole typů událostí k odběrudescription– volitelný čitelný popisek
Odpověď obsahuje
secretpro ověření podpisů webhooku (HMAC). Toto je jediný okamžik, kdy je secret vrácen. Uložte jej na bezpečné místo.
Vrací 201 Created s id a secret webhooku.
GET /v1/webhooks/{id}
Získá jeden webhook odběr spolu s jeho nejnovějšími doručeními.
PUT /v1/webhooks/{id}
Upraví webhook odběr. Uveďte pouze pole, která chcete změnit.
Vrací 200 OK s aktualizovaným objektem webhooku.
DELETE /v1/webhooks/{id}
Smaže webhook odběr.
Vrací 204 No Content při úspěchu.
POST /v1/webhooks/{id}/test
Odešle testovací událost na endpoint webhooku pro ověření dostupnosti.
Zařadí do fronty testovací doručení s daty "type": "test".
Dostupné typy událostí
Přihlaste se k odběru libovolné kombinace těchto typů událostí:
zone.created, zone.deleted, record.created, record.updated, record.deleted, dnssec.enabled, dnssec.disabled, zone.health.problem, zone.health.resolved
Chybové kódy
Všechny chyby mají jednotný formát s řetězcem chybového code a lidsky čitelnou message.
| HTTP stav | Chybový kód | Popis |
|---|---|---|
400 |
validation_error |
Tělo požadavku neprošlo validací. Zkontrolujte details pro chyby u konkrétních polí. |
401 |
unauthorized |
Chybějící, neplatný nebo prošlý API klíč. |
403 |
forbidden |
API klíč nemá požadované oprávnění, nebo akce není povolena (např. neuhrazené faktury blokují vytváření zón). |
404 |
not_found |
Požadovaný zdroj neexistuje nebo není přístupný autentizovanému uživateli. |
409 |
conflict |
Zdroj již existuje (např. duplicitní název zóny). |
429 |
rate_limit_exceeded |
Příliš mnoho požadavků. Zkontrolujte hlavičku Retry-After. |
500 |
server_error |
Došlo k neočekávané interní chybě. Zkuste to prosím znovu, nebo kontaktujte podporu, pokud chyba přetrvává. |
Příklady kódu
Všechny příklady používají curl. Nahraďte nxd_your_api_key svým skutečným API klíčem.
Výpis vašich zón
curl -s "https://api.nexdns.tech/v1/zones" \
-H "Authorization: Bearer nxd_your_api_key"
Vytvoření zóny
curl -s -X POST "https://api.nexdns.tech/v1/zones" \
-H "Authorization: Bearer nxd_your_api_key" \
-H "Content-Type: application/json" \
-d '{"name": "example.com"}'
Přidání záznamu A
curl -s -X POST "https://api.nexdns.tech/v1/zones/{zoneId}/records" \
-H "Authorization: Bearer nxd_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"type": "A",
"name": "www",
"ttl": 3600,
"content": "93.184.216.34"
}'
Přidání záznamu MX
curl -s -X POST "https://api.nexdns.tech/v1/zones/{zoneId}/records" \
-H "Authorization: Bearer nxd_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"type": "MX",
"name": "@",
"ttl": 3600,
"content": "mail.example.com",
"priority": 10
}'
Aktualizace záznamu
curl -s -X PUT "https://api.nexdns.tech/v1/zones/{zoneId}/records/{recordId}" \
-H "Authorization: Bearer nxd_your_api_key" \
-H "Content-Type: application/json" \
-d '{"content": "93.184.216.35", "ttl": 7200}'
Smazání záznamu
curl -s -X DELETE "https://api.nexdns.tech/v1/zones/{zoneId}/records/{recordId}" \
-H "Authorization: Bearer nxd_your_api_key"
Export zóny (formát BIND)
curl -s "https://api.nexdns.tech/v1/zones/{zoneId}/export" \
-H "Authorization: Bearer nxd_your_api_key"
Aktivace DNSSEC
curl -s -X POST "https://api.nexdns.tech/v1/zones/{zoneId}/dnssec/enable" \
-H "Authorization: Bearer nxd_your_api_key"
Vytvoření API klíče
curl -s -X POST "https://api.nexdns.tech/v1/account/api-keys" \
-H "Authorization: Bearer nxd_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Read-only key",
"permissions": ["zones.read", "records.read"],
"expires_at": "2027-12-31"
}'
Informace o účtu
curl -s "https://api.nexdns.tech/v1/account" \
-H "Authorization: Bearer nxd_your_api_key"