Przejdź do głównej treści

Dokumentacja API

Bazowy URL: https://api.nexdns.tech/v1

Autoryzacja

Wszystkie zapytania API wymagają autoryzacji za pomocą klucza API. Przekaż klucz w nagłówku Authorization jako token Bearer. Klucz API musi zaczynać się od prefiksu nxd_.

Authorization: Bearer nxd_your_api_key_here

Warstwa autoryzacji API jest bezstanowa – każde zapytanie jest autoryzowane niezależnie. Nie ma sesji ani ciasteczek.

Przechowuj klucz API w tajemnicy. Nie udostępniaj go w kodzie po stronie klienta, publicznych repozytoriach ani adresach URL. Jeśli klucz zostanie skompromitowany, natychmiast go unieważnij i utwórz nowy.

Błędy autoryzacji

Kod statusu Przyczyna
401 Brakujący lub nieprawidłowy klucz API, wygasły klucz lub anulowane konto
403 Klucz API nie ma wymaganego uprawnienia dla tego endpointu

Format odpowiedzi

Wszystkie odpowiedzi są w formacie JSON. Pomyślne odpowiedzi mają następującą strukturę:

Pojedynczy zasób

{
    "status": "success",
    "data": {
        "id": 42,
        "public_id": "xK9mP2",
        "name": "example.com",
        ...
    }
}

Lista z paginacją

{
    "status": "success",
    "data": [ ... ],
    "meta": {
        "total": 150,
        "page": 1,
        "per_page": 25,
        "last_page": 6
    }
}

Odpowiedź z błędem

{
    "status": "error",
    "error": {
        "code": "validation_error",
        "message": "Validation failed.",
        "details": {
            "name": ["Domain name is required."]
        }
    }
}

Publiczne identyfikatory

Każdy zasób jest identyfikowany przez nieprzejrzysty id (na przykład xK9mQ2), używany w ścieżkach URL. Numeryczne identyfikatory z bazy danych nigdy nie są ujawniane ani akceptowane.

Paginacja

Endpointy list zwracające wyniki z paginacją akceptują następujące parametry zapytania:

Parametr Typ Domyślnie Opis
page integer 1 Numer strony (minimum 1)
per_page integer 25 Elementów na stronę (1–100)

Strefy

Zarządzaj strefami DNS. Wymaga zones.read do operacji odczytu i zones.write do operacji zapisu.

GET /v1/zones

Wyświetl wszystkie strefy uwierzytelnionego użytkownika.

Parametry zapytania

  • search – filtruj strefy według nazwy
  • page, per_page – paginacja

Pola odpowiedzi

Pola: id, name, type (master/slave), status, ns_group, created_at, updated_at

GET /v1/zones/{id}

Pobierz szczegółowe informacje o konkretnej strefie, w tym dane SOA, serwery nazw i liczbę rekordów.

Dodatkowe pola odpowiedzi

records_count, soa (primary_ns, admin_email, serial, refresh, retry, expire, minimum), nameservers (tablica), ns_group (id, slug, name)

POST /v1/zones

Utwórz nową strefę DNS. Tworzenie stref jest blokowane, jeśli użytkownik ma zaległe faktury.

Treść zapytania (JSON)

{
    "name": "example.com",
    "type": "master",
    "ns_group_id": 1,
    "master_ip": ""
}
  • name (wymagane) – nazwa domeny
  • type"master" (domyślnie) lub "slave"
  • ns_group – grupa NS do przypisania strefy (opcjonalne, używa domyślnej jeśli pominięte)
  • master_ip – wymagane dla stref podrzędnych; musi być prawidłowym adresem IP

Zwraca 201 Created z obiektem strefy.

DELETE /v1/zones/{id}

Usuń strefę i wszystkie jej rekordy.

Zwraca 204 No Content w przypadku powodzenia.

GET /v1/zones/{id}/export

Eksportuj strefę w formacie BIND lub jako ustrukturyzowany JSON.

Parametry zapytania

  • format"bind" (domyślnie) zwraca tekst pliku strefy BIND; "json" zwraca ustrukturyzowaną tablicę rekordów z polami name, type, content i ttl

Rekordy

Zarządzaj rekordami DNS w strefie. Wszystkie endpointy rekordów są zagnieżdżone pod strefą. Wymaga records.read do operacji odczytu i records.write do operacji zapisu.

GET /v1/zones/{zoneId}/records

Wyświetl wszystkie rekordy w strefie.

Parametry zapytania

  • type – filtruj według typu rekordu (np. A, CNAME, MX)
  • name – filtruj według nazwy rekordu (dopasowanie podciągu)
  • search – szukaj w nazwie i treści

Pola odpowiedzi

id, name, type, content, ttl, disabled, fields (pola specyficzne dla typu)

GET /v1/zones/{zoneId}/records/{recordId}

Pobierz pojedynczy rekord po jego ID.

POST /v1/zones/{zoneId}/records

Utwórz nowy rekord DNS.

Treść zapytania (JSON)

{
    "type": "A",
    "name": "www",
    "ttl": 3600,
    "content": "93.184.216.34"
}
  • type (wymagane) – typ rekordu (A, AAAA, CNAME, MX, TXT, SRV, CAA, NS, PTR, ALIAS, DNAME, DS, TLSA)
  • name – nazwa rekordu względem strefy (domyślnie: @ dla wierzchołka strefy)
  • ttl – czas życia w sekundach (domyślnie: 3600)
  • content – wartość rekordu (IP dla A/AAAA, nazwa hosta dla CNAME/NS/PTR, tekst dla TXT, serwer pocztowy dla MX)

Pola specyficzne dla typu

  • MX: priority (domyślnie: 10)
  • SRV (usługa): priority, weight, port
  • CAA: flags (domyślnie: 0), tag (domyślnie: "issue")
  • DS (delegacja DNSSEC): keytag, algorithm, digest_type
  • TLSA (DANE): usage, selector, matching_type

Zwraca 201 Created z obiektem rekordu.

PUT /v1/zones/{zoneId}/records/{recordId}

Zaktualizuj istniejący rekord. Uwzględnij tylko pola, które chcesz zmienić; pominięte pola zachowują swoje bieżące wartości.

{
    "content": "93.184.216.35",
    "ttl": 7200
}

Zwraca 200 OK z zaktualizowanym obiektem rekordu. Uwaga: ID rekordu może się zmienić po aktualizacji, ponieważ jest obliczane na podstawie nazwy, typu i treści rekordu.

DELETE /v1/zones/{zoneId}/records/{recordId}

Usuń rekord ze strefy.

Zwraca 204 No Content w przypadku powodzenia.

DNSSEC

Zarządzaj DNSSEC dla stref. Wymaga zones.read do wyświetlania statusu i zones.write do włączania lub wyłączania.

GET /v1/zones/{id}/dnssec

Pobierz status DNSSEC dla strefy, w tym klucze i rekordy DS.

Pola odpowiedzi

enabled (wartość logiczna), keys (tablica rekordów DNSKEY), ds_records (tablica rekordów DS do ustawienia u rejestratora)

POST /v1/zones/{id}/dnssec/enable

Włącz DNSSEC dla strefy. Automatycznie generuje klucze podpisywania.

Zwraca status DNSSEC z wygenerowanymi kluczami i rekordami DS.

POST /v1/zones/{id}/dnssec/disable

Wyłącz DNSSEC dla strefy. Usuwa wszystkie klucze podpisywania.

Zwraca {"enabled": false, "keys": [], "ds_records": []}.

Grupy NS

Wyświetla dostępne grupy serwerów nazw. Użyj id grupy jako ns_group podczas tworzenia strefy. Ten endpoint może odczytać dowolny prawidłowy klucz API.

GET /v1/ns-groups

Wyświetla aktywne grupy serwerów nazw.

Pola odpowiedzi dla każdej grupy

id, name, slug

Konto

Wyświetl informacje o koncie i zarządzaj kluczami API.

GET /v1/account

Pobierz informacje o bieżącym koncie, w tym szczegóły subskrypcji.

Pola odpowiedzi

Pola: id (UUID), email, name, role, status, language, timezone, created_at

subscription – obiekt z polami plan, billing_cycle, status, current_period_start, current_period_end (lub null, jeśli brak subskrypcji)

GET /v1/account/api-keys

Wyświetl wszystkie klucze API uwierzytelnionego użytkownika.

Pola odpowiedzi dla każdego klucza

id, name, key_prefix (pierwsze 8 znaków), permissions (tablica), last_used_at, expires_at, created_at

POST /v1/account/api-keys

Utwórz nowy klucz API.

Treść zapytania (JSON)

{
    "name": "CI/CD Pipeline",
    "permissions": ["zones.read", "records.read", "records.write"],
    "expires_at": "2027-01-01"
}
  • name (wymagane) – czytelna nazwa (maks. 255 znaków)
  • permissions (wymagane) – tablica uprawnień (wymagane co najmniej jedno): zones.read, zones.write, records.read, records.write, webhooks.read, webhooks.write
  • expires_at – opcjonalna data wygaśnięcia (ISO 8601 lub YYYY-MM-DD); musi być w przyszłości

Odpowiedź zawiera pełny klucz API w polu key. To jedyny raz, gdy pełny klucz jest zwracany. Przechowuj go bezpiecznie.

Zwraca 201 Created ze szczegółami klucza, w tym pełną wartością key.

DELETE /v1/account/api-keys/{id}

Unieważnij (trwale usuń) klucz API.

Zwraca 204 No Content w przypadku powodzenia.

Rozliczenia

Wyświetl subskrypcję, plany i faktury. Te endpointy są tylko do odczytu.

GET /v1/billing/subscription

Pobierz bieżące szczegóły subskrypcji. Zwraca null, jeśli brak aktywnej subskrypcji.

Pola odpowiedzi

Pola: id, plan, billing_cycle, status, current_period_start, current_period_end, created_at

GET /v1/billing/plans

Wyświetl wszystkie dostępne plany z cenami i funkcjami.

Pola odpowiedzi dla każdego planu

id, name, slug, description, price_monthly, price_yearly, currency, max_domains, max_records, features (tablica)

GET /v1/billing/invoices

Wyświetla faktury uwierzytelnionego użytkownika, od najnowszych.

Parametry zapytania

  • status – filtruj według statusu (draft, issued, sent, void)
  • page, per_page – paginacja

GET /v1/billing/invoices/{id}

Pobiera pojedynczą fakturę po jej <code>id</code>.

Pola odpowiedzi

Pola: id, number, status, amount (brutto), net_amount (netto), tax_amount, tax_rate, currency, issued_at, created_at. Wartości pieniężne to proste ciągi dziesiętne.

Webhooks

Zarządzaj wychodzącymi subskrypcjami webhook, aby otrzymywać powiadomienia o zmianach stref i rekordów w czasie rzeczywistym. Wymaga webhooks.read do odczytu oraz webhooks.write do tworzenia, modyfikowania i usuwania.

GET /v1/webhooks

Wyświetla wszystkie subskrypcje webhook uwierzytelnionego użytkownika.

Pola odpowiedzi dla każdego webhooka

id, url, events (tablica), description, is_active, failure_count, last_triggered_at, created_at

POST /v1/webhooks

Tworzy subskrypcję webhook.

Treść zapytania (JSON)

{
    "url": "https://example.com/webhook",
    "events": ["zone.created", "record.created"],
    "description": "Production webhook"
}
  • url (wymagane) – endpoint HTTPS, który będzie odbierać dane zdarzeń
  • events (wymagane) – tablica typów zdarzeń do subskrypcji
  • description – opcjonalna czytelna etykieta

Odpowiedź zawiera secret do weryfikacji podpisów webhook (HMAC). To jedyny raz, gdy secret jest zwracany. Przechowuj go w bezpiecznym miejscu.

Zwraca 201 Created z id i secret webhooka.

GET /v1/webhooks/{id}

Pobiera pojedynczą subskrypcję webhook wraz z jej najnowszymi dostawami.

PUT /v1/webhooks/{id}

Aktualizuje subskrypcję webhook. Uwzględnij tylko pola, które chcesz zmienić.

Zwraca 200 OK ze zaktualizowanym obiektem webhooka.

DELETE /v1/webhooks/{id}

Usuwa subskrypcję webhook.

Zwraca 204 No Content w przypadku powodzenia.

POST /v1/webhooks/{id}/test

Wysyła zdarzenie testowe na endpoint webhooka, aby sprawdzić jego dostępność.

Kolejkuje testową dostawę z danymi "type": "test".

Dostępne typy zdarzeń

Możesz subskrybować dowolną kombinację tych typów zdarzeń:

zone.created, zone.deleted, record.created, record.updated, record.deleted, dnssec.enabled, dnssec.disabled, zone.health.problem, zone.health.resolved

Kody błędów

Wszystkie błędy mają spójny format z ciągiem kodu błędu code i czytelnym komunikatem message.

Status HTTP Kod błędu Opis
400 validation_error Treść zapytania nie przeszła walidacji. Sprawdź details pod kątem błędów poszczególnych pól.
401 unauthorized Brakujący, nieprawidłowy lub wygasły klucz API.
403 forbidden Klucz API nie ma wymaganego uprawnienia lub akcja jest niedozwolona (np. zaległe faktury blokują tworzenie stref).
404 not_found Żądany zasób nie istnieje lub nie jest dostępny dla uwierzytelnionego użytkownika.
409 conflict Zasób już istnieje (np. zduplikowana nazwa strefy).
429 rate_limit_exceeded Zbyt wiele zapytań. Sprawdź nagłówek Retry-After.
500 server_error Wystąpił nieoczekiwany błąd wewnętrzny. Spróbuj ponownie lub skontaktuj się z pomocą techniczną, jeśli problem się powtarza.

Przykłady kodu

Wszystkie przykłady używają curl. Zastąp nxd_your_api_key swoim rzeczywistym kluczem API.

Wyświetl swoje strefy

curl -s "https://api.nexdns.tech/v1/zones" \
    -H "Authorization: Bearer nxd_your_api_key"

Utwórz strefę

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"}'

Dodaj rekord 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"
    }'

Dodaj rekord 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
    }'

Zaktualizuj rekord

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}'

Usuń rekord

curl -s -X DELETE "https://api.nexdns.tech/v1/zones/{zoneId}/records/{recordId}" \
    -H "Authorization: Bearer nxd_your_api_key"

Eksportuj strefę (format BIND)

curl -s "https://api.nexdns.tech/v1/zones/{zoneId}/export" \
    -H "Authorization: Bearer nxd_your_api_key"

Włącz DNSSEC

curl -s -X POST "https://api.nexdns.tech/v1/zones/{zoneId}/dnssec/enable" \
    -H "Authorization: Bearer nxd_your_api_key"

Utwórz klucz API

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"
    }'

Pobierz informacje o koncie

curl -s "https://api.nexdns.tech/v1/account" \
    -H "Authorization: Bearer nxd_your_api_key"

Używamy cookies, aby zapewnić prawidłowe działanie tej strony i poprawić Twoje doświadczenia. Niektóre cookies są ściśle niezbędne do działania strony, a inne są opcjonalne.

Możesz zaakceptować wszystkie cookies lub ograniczyć wybór do ściśle niezbędnych. Szczegóły znajdziesz w naszej Polityka prywatności i Polityka cookies.