Přejít k hlavnímu obsahu

Reference API

Základní URL: https://api.nexdns.tech/v1

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ázvu
  • page, 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ény
  • type"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.write
  • expires_at – volitelné datum expirace (ISO 8601 nebo YYYY-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ěru
  • description – volitelný čitelný popisek

Odpověď obsahuje secret pro 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"

Používáme soubory cookie k zajištění správného fungování těchto webových stránek a ke zlepšení Vašeho prohlížení. Některé soubory cookie jsou nezbytně nutné pro provoz webu, zatímco jiné jsou volitelné.

Můžete přijmout všechny soubory cookie, nebo omezit svůj výběr pouze na nezbytné. Podrobnosti naleznete v našich Zásadách ochrany osobních údajů a Zásadách cookies.