RESTful JSON-API für DynDNS, DNS, Healthchecks, DNS-Failover, CDN, Cloud Router und DNS64.
192 Endpunkte, OpenAPI 3.1, Anmeldung mit deinem API-Key.
Authorization mit.https://ipv64.net/api/v2.curl "https://ipv64.net/api/v2/me" \
-H "Authorization: Bearer DEIN_API_KEY"
Die Antwort zeigt deinen Account, dein Paket und den Verbrauch. Die vollständige Beschreibung gibt es als OpenAPI 3.1 zum Import in Postman, Insomnia, Bruno oder Code-Generatoren.
update.php bleiben unverändert bestehen. Für Router und einfache Geräte ist update.php weiterhin der richtige Weg.Jeder API-Key aus Account > API funktioniert, ebenso der Account-API-Key. Abgelaufene Keys und Keys gesperrter Accounts werden abgelehnt. Zwei Schreibweisen sind möglich:
Authorization: Bearer DEIN_API_KEY
X-API-Key: DEIN_API_KEY
Keys gehören nicht in URLs, weil URLs in Logs und im Browserverlauf landen. Über /api-keys kannst du Keys auch per API anlegen und löschen.
Hat dir jemand in den Settings über die Account-Freigabe die Verwaltung seines Accounts erlaubt, kannst du mit deinem eigenen Key in seinem Account arbeiten. Dazu den Header X-IPv64-Act-As mit seiner Account-ID oder E-Mail mitschicken. Die IDs stehen unter /me/account-links.
curl "https://ipv64.net/api/v2/domains" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "X-IPv64-Act-As: kunde@example.com"
Content-Type: application/json geschickt. Formulardaten gehen auch. Höchstens 1 MB.{"data": ..., "meta": {...}}. meta gibt es nur bei Listen mit Blättern.2026-10-10T12:00:00+02:00. Eingaben ebenso.Allow die erlaubten Methoden. Clients ohne PATCH oder DELETE schicken POST mit X-HTTP-Method-Override./me.Viele Änderungen bei CDN, Cloud Router, DNS64 und DNS-Failover setzen Hintergrunddienste auf den Servern um. Die API antwortet dann mit 202 und dem neuen Zustand. Fertig ist die Änderung, wenn
state auf ready steht,pending leer ist,status nicht mehr auf failover_requested oder fallback_requested steht.Ruf dazu den Eintrag alle paar Sekunden mit GET ab. Während ein Gateway oder Peer eingerichtet wird, antworten weitere Änderungen mit 409 und retry_after.
Logs und Healthcheck-Events werden mit einem Cursor abgerufen statt mit Seitenzahlen. So fehlen keine Einträge, wenn währenddessen neue dazukommen.
limit legt die Anzahl fest.before holt ältere Einträge. Den Wert liefert meta.next_before.after holt neuere Einträge, aufsteigend sortiert. Ideal, um regelmäßig nur Neues abzuholen.since beschränkt auf einen Zeitraum ab einem Zeitpunkt.Die API hat eigene Limits gegen Überlastung, unabhängig vom API-Limit deines Pakets. Sie arbeiten als Token Bucket: Ein Vorrat erlaubt kurze Spitzen und füllt sich gleichmäßig wieder auf.
| Was | Vorrat | Nachfüllen |
|---|---|---|
| Anfragen pro Account | 300 | 10 pro Sekunde |
| Anfragen pro IP-Adresse | 600 | 20 pro Sekunde |
| Fehlgeschlagene Anmeldungen pro IP | 20 | 1 alle 5 Sekunden |
| Testnachrichten pro Healthcheck oder Integration | 1 | 1 alle 30 Sekunden |
| Bestätigungen per E-Mail oder SMS | 3 | 1 alle 10 Minuten |
Jede Antwort enthält die Header RateLimit-Limit und RateLimit-Remaining. Bei Überschreitung kommt 429 mit dem Header Retry-After in Sekunden.
Fehler kommen als application/problem+json nach RFC 9457. Für Programme ist code gedacht, für Menschen detail. Betrifft der Fehler ein Eingabefeld, steht es in field.
HTTP/1.1 422 Unprocessable Content
Content-Type: application/problem+json
{
"type": "https://ipv64.net/api/v2/errors#missing_field",
"title": "Unprocessable Content",
"status": 422,
"detail": "Field 'name' is required.",
"code": "missing_field",
"field": "name"
}
invalid_json | 400 | Der Body ist kein gültiges JSON. |
invalid_parameter | 400 | Ein Query-Parameter hat einen ungültigen Wert. |
missing_parameter | 400 | Ein Pflicht-Query-Parameter fehlt. |
invalid_time | 400 | Ein Zeitpunkt ist nicht im Format ISO 8601. |
payload_too_large | 413 | Der Body ist größer als 1 MB. |
image_too_large | 413 | Das Bild ist größer als 1 MB oder 1024 x 1024 Pixel. |
unsupported_media_type | 415 | Bitte Content-Type application/json verwenden. |
invalid_image | 415 | Nur JPEG, PNG oder WebP. |
unauthenticated | 401 | Es wurde kein API-Key mitgeschickt. |
invalid_token | 401 | Der API-Key ist falsch, abgelaufen oder der Account ist nicht aktiv. |
act_as_denied | 403 | Für den Account im Header X-IPv64-Act-As gibt es keine aktive Account-Freigabe. |
limit_reached | 403 | Das Limit deines Pakets ist erreicht, zum Beispiel die Anzahl der Domains oder Healthchecks. |
plan_required | 403 | Diese Funktion gibt es erst in einem höheren Paket. |
traffic_limit_reached | 403 | Der CDN-Traffic des Monats ist aufgebraucht. |
not_found | 404 | Den Endpunkt oder Eintrag gibt es nicht. |
domain_not_found | 404 | Domain nicht gefunden oder sie gehört nicht zu deinem Account. |
record_not_found | 404 | Record nicht gefunden. |
healthcheck_not_found | 404 | Healthcheck nicht gefunden. |
integration_not_found | 404 | Integration nicht gefunden. Als 422, wenn sie in einer Liste angegeben wurde. |
policy_not_found | 404 | Failover-Policy nicht gefunden. |
monitor_not_found | 404 | Monitor nicht gefunden. |
rule_not_found | 404 | Failover-Regel nicht gefunden. |
status_page_not_found | 404 | Statusseite nicht gefunden. |
offline_page_not_found | 404 | Offline-Page nicht gefunden. |
cdn_not_found | 404 | CDN-Domain nicht gefunden. |
mapping_not_found | 404 | Port-Mapping nicht gefunden. |
router_not_found | 404 | Cloud Router nicht gefunden. |
gateway_not_found | 404 | Gateway nicht gefunden. |
peer_not_found | 404 | Peer nicht gefunden. |
dns64_client_not_found | 404 | DNS64-Client nicht gefunden oder wird gerade gelöscht. |
api_key_not_found | 404 | API-Key nicht gefunden. |
method_not_allowed | 405 | Diese HTTP-Methode gibt es hier nicht. Der Header Allow nennt die erlaubten. |
domain_taken | 409 | Der Domainname ist schon vergeben. |
domain_inactive | 409 | Die Domain ist deaktiviert. |
record_exists | 409 | Genau diesen Record gibt es schon. |
cname_conflict | 409 | Ein CNAME darf nicht neben anderen Records auf demselben Präfix stehen. |
record_locked | 409 | Der Record wird vom CDN oder DNS-Failover verwaltet. |
failover_active | 409 | Ein DNS-Failover ist gerade aktiv. Erst zurückschalten. |
invalid_state | 409 | Die Aktion passt nicht zum aktuellen Zustand, zum Beispiel Fallback ohne aktiven Failover. |
monitor_exists | 409 | Dieser Healthcheck ist schon Monitor der Policy. |
rule_exists | 409 | Dieser Record ist schon in einer Failover-Policy. |
in_use | 409 | Die Offline-Page wird noch von einer Failover-Regel genutzt. |
slug_taken | 409 | Die Adresse der Statusseite ist schon vergeben. |
integration_pending | 409 | Die Integration ist noch nicht bestätigt. |
cannot_delete_current_key | 409 | Ein API-Key kann sich nicht selbst löschen. |
cdn_exists | 409 | Die Domain ist schon im CDN. |
cdn_server_pending | 409 | Der CDN-Server wird noch zugewiesen. Kurz warten. |
cdn_deleting | 409 | Die CDN-Domain wird gerade gelöscht. |
records_enabled | 409 | Erst das CDN für alle Records abschalten. |
no_records | 409 | Erst mindestens einen Record über das CDN leiten. |
proxy_disabled | 409 | Erst den Reverse Proxy einschalten. |
already_enabled | 409 | Der Record läuft schon über das CDN. |
not_enabled | 409 | Der Record läuft nicht über diese CDN-Domain. |
certificate_pending | 409 | Ein Zertifikat wird gerade ausgestellt. |
move_pending | 409 | Ein Serverumzug läuft bereits. |
mapping_exists | 409 | Dieses Port-Mapping gibt es schon. |
port_in_use | 409 | Der gewünschte Port ist auf dem CDN-Server belegt. |
exists | 409 | Der Eintrag steht schon in der Liste. |
duplicate | 409 | Diesen Port-Forward gibt es schon. |
gateway_busy | 409 | Das Gateway wird gerade eingerichtet. retry_after nennt die Wartezeit. |
gateway_deleting | 409 | Das Gateway wird gerade gelöscht. |
router_busy | 409 | Der Cloud Router hat noch keinen Server. |
peer_busy | 409 | Der Peer wird gerade eingerichtet. |
peer_deleting | 409 | Der Peer wird gerade gelöscht. |
busy | 409 | Der Eintrag wird gerade umgesetzt. Kurz warten. |
ospf_deleting | 409 | OSPF wird gerade entfernt. |
address_in_use | 409 | Die Tunnel-Adresse nutzt schon ein anderer Peer. |
no_public_ip | 409 | Der Router hat noch keine öffentliche IP dieser Familie. |
system_route | 409 | Systemrouten können nicht gelöscht werden. |
missing_field | 422 | Ein Pflichtfeld fehlt oder ist leer. field nennt das Feld. |
invalid_field | 422 | Ein Feld hat ein falsches Format. field nennt das Feld. |
out_of_range | 422 | Eine Zahl liegt außerhalb des erlaubten Bereichs. |
invalid_type | 422 | Unbekannter Typ, zum Beispiel beim Record oder Healthcheck. |
invalid_domain | 422 | Der Domainname ist nicht erlaubt. |
invalid_record | 422 | Der Inhalt passt nicht zum Record-Typ oder der Record ist hier nicht erlaubt. |
rejected_by_nameserver | 422 | Der Nameserver hat den Record abgelehnt. Details stehen im Account-Log. |
invalid_healthcheck | 422 | Die Healthcheck-Einstellungen sind ungültig. |
invalid_interval | 422 | Die Sekunden lassen sich nicht als ganze Minuten, Stunden oder Tage darstellen. |
interval_too_low | 422 | Das Intervall ist für dein Paket zu kurz. |
invalid_target | 422 | Das Ziel ist ungültig, nicht auflösbar oder nicht erlaubt. |
invalid_url | 422 | Die URL muss mit http:// oder https:// beginnen. |
internal_target | 422 | Die URL zeigt auf eine private oder reservierte Adresse. |
invalid_key | 422 | Der WireGuard-Schlüssel ist ungültig oder das Paar passt nicht. |
family_mismatch | 422 | Quelle und Ziel gehören zu verschiedenen IP-Familien. |
missing_file | 422 | Die Datei fehlt im Multipart-Feld. |
too_many | 422 | Zu viele Einträge auf einmal. |
rate_limited | 429 | Zu viele Anfragen. Nach Retry-After Sekunden erneut versuchen. |
internal_error | 500 | Unerwarteter Fehler. Bitte mit Uhrzeit melden. |
database_error | 500 | Datenbankfehler. |
unknown_result | 500 | Die Aktion lieferte ein unerwartetes Ergebnis. |
no_free_port | 503 | Auf dem CDN-Server ist kein Port mehr frei. |
Ohne ipv4 und ipv6 nimmt die API die Adresse, von der die Anfrage kommt.
curl -X POST "https://ipv64.net/api/v2/domains/meinname.ipv64.de/dyndns" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prefix":"nas","ipv6":"2001:db8::10"}'
TXT-Record anlegen, warten bis das Zertifikat ausgestellt ist, dann genau diesen Record wieder löschen.
curl -X POST "https://ipv64.net/api/v2/domains/meinname.ipv64.de/records" \
-H "Authorization: Bearer DEIN_API_KEY" -H "Content-Type: application/json" \
-d '{"type":"TXT","prefix":"_acme-challenge","content":"TOKEN_VOM_ACME_CLIENT"}'
curl -X DELETE "https://ipv64.net/api/v2/domains/meinname.ipv64.de/records?type=TXT&prefix=_acme-challenge&content=TOKEN_VOM_ACME_CLIENT" \
-H "Authorization: Bearer DEIN_API_KEY"
Der Check erwartet einmal am Tag einen Ping und schlägt nach einer Stunde Kulanz Alarm. Die Ping-Adresse steht danach in data.push.url.
curl -X POST "https://ipv64.net/api/v2/healthchecks" \
-H "Authorization: Bearer DEIN_API_KEY" -H "Content-Type: application/json" \
-d '{"name":"Backup NAS","type":"push","period_seconds":86400,"grace_seconds":3600,"integrations":[0]}'
Die höchste bekannte Event-ID merken und beim nächsten Mal als after übergeben.
curl "https://ipv64.net/api/v2/healthchecks/HEALTHCHECK_TOKEN/events?after=1057264859&limit=500" \
-H "Authorization: Bearer DEIN_API_KEY"
Öffentliche Endpunkte ohne Anmeldung.
/
API-Info
ohne Anmeldung curl "https://ipv64.net/api/v2/"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.name | string | Name |
data.version | string | Version |
data.documentation | string | Doku |
data.time | datetime | Serverzeit |
/health
Verfügbarkeit der API
ohne Anmeldung Prüft auch die Datenbankverbindung. Geeignet für Monitoring.
curl "https://ipv64.net/api/v2/health"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.status | string | Status |
data.version | string | Version |
/ip
Eigene öffentliche IP
ohne Anmeldung Liefert die Adresse, mit der du die API erreichst.
curl "https://ipv64.net/api/v2/ip"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.ip | string | IP-Adresse |
data.family | string | Familie Werte: ipv4, ipv6. |
/openapi.json
Diese Beschreibung als OpenAPI 3.1
ohne Anmeldung Zum Import in Postman, Insomnia, Bruno oder für Code-Generatoren.
curl "https://ipv64.net/api/v2/openapi.json"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | OpenAPI-Dokument (ohne data-Hülle) |
Account, Nutzung, Logs und Account-Freigaben.
/me
Account und Nutzung
Zeigt Paket, Verbrauch und Limits sowie die verwendete Anmeldung.
curl "https://ipv64.net/api/v2/me" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | Account-ID |
data.email | string | E-Mail-Adresse |
data.username | string | null | Benutzername |
data.registered_at | datetime | null | Registriert seit |
data.last_login_at | datetime | null | Letzter Login auf der Webseite |
data.plan | object | |
data.plan.id | integer | Paket-ID |
data.plan.name | string | Paketname |
data.plan.valid_until | datetime | null | Laufzeitende, null beim Free-Paket |
data.usage | object | |
data.usage.dyndns_domains | object | DynDNS-Domains |
data.usage.dyndns_domains.used | number | Verbraucht |
data.usage.dyndns_domains.limit | integer | null | Limit des Pakets, null = unbegrenzt |
data.usage.own_domains | object | Eigene Domains |
data.usage.own_domains.used | number | Verbraucht |
data.usage.own_domains.limit | integer | null | Limit des Pakets, null = unbegrenzt |
data.usage.dyndns_updates_24h | object | DynDNS-Updates der letzten 24 Stunden |
data.usage.dyndns_updates_24h.used | number | Verbraucht |
data.usage.dyndns_updates_24h.limit | integer | null | Limit des Pakets, null = unbegrenzt |
data.usage.healthchecks | object | Healthchecks |
data.usage.healthchecks.used | number | Verbraucht |
data.usage.healthchecks.limit | integer | null | Limit des Pakets, null = unbegrenzt |
data.usage.healthcheck_pings_24h | object | Healthcheck-Pings der letzten 24 Stunden |
data.usage.healthcheck_pings_24h.used | number | Verbraucht |
data.usage.healthcheck_pings_24h.limit | integer | null | Limit des Pakets, null = unbegrenzt |
data.usage.sms_24h | object | SMS der letzten 24 Stunden |
data.usage.sms_24h.used | number | Verbraucht |
data.usage.sms_24h.limit | integer | null | Limit des Pakets, null = unbegrenzt |
data.usage.failover_policies | object | DNS-Failover-Policies |
data.usage.failover_policies.used | number | Verbraucht |
data.usage.failover_policies.limit | integer | null | Limit des Pakets, null = unbegrenzt |
data.usage.failover_monitors | object | DNS-Failover-Monitore |
data.usage.failover_monitors.used | number | Verbraucht |
data.usage.failover_monitors.limit | integer | null | Limit des Pakets, null = unbegrenzt |
data.usage.failover_rules | object | DNS-Failover-Regeln |
data.usage.failover_rules.used | number | Verbraucht |
data.usage.failover_rules.limit | integer | null | Limit des Pakets, null = unbegrenzt |
data.usage.cdn_domains | object | CDN-Domains |
data.usage.cdn_domains.used | number | Verbraucht |
data.usage.cdn_domains.limit | integer | null | Limit des Pakets, null = unbegrenzt |
data.usage.cdn_traffic_gb | object | CDN-Traffic im aktuellen Monat in GB |
data.usage.cdn_traffic_gb.used | number | Verbraucht |
data.usage.cdn_traffic_gb.limit | integer | null | Limit des Pakets, null = unbegrenzt |
data.usage.vpn_traffic_gb | object | Cloud-Router-Traffic in GB |
data.usage.vpn_traffic_gb.used | number | Verbraucht |
data.usage.vpn_traffic_gb.limit | integer | Limit in GB |
data.usage.vpn_traffic_gb.limited | boolean | Traffic-Limit erreicht |
data.usage.dns64_clients | object | DNS64-Clients |
data.usage.dns64_clients.used | number | Verbraucht |
data.usage.dns64_clients.limit | integer | null | Limit des Pakets, null = unbegrenzt |
data.log_retention_days | integer | So viele Tage werden Logs aufbewahrt |
data.auth | object | Verwendete Anmeldung |
data.auth.type | string | Art des Schlüssels Werte: api_key, account_key. |
data.auth.key_id | integer | null | ID des API-Keys |
data.auth.key_name | string | Name des API-Keys |
data.auth.acting_for | integer | Bei X-IPv64-Act-As: Account, für den gehandelt wird |
data.auth.acting_by | integer | Bei X-IPv64-Act-As: eigener Account |
Mögliche Fehler: 401429 Fehlercodes
/me/logs
Account-Log
Neueste Einträge zuerst. Zum Weiterblättern meta.next_before als before übergeben. Es werden nur Einträge innerhalb der Aufbewahrungszeit des Pakets geliefert.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
limit | Query, integer | Anzahl (1 bis 500) Standard: 50. | |
before | Query, integer | Nur Einträge mit kleinerer ID (Cursor) | |
since | Query, datetime | Nur Einträge ab diesem Zeitpunkt (ISO 8601) |
curl "https://ipv64.net/api/v2/me/logs" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | Log-ID, auch Cursor für before |
data[].domain_id | integer | null | Betroffene Domain |
data[].title | string | Kategorie |
data[].message | string | Text |
data[].time | datetime | Zeitpunkt |
meta | object | |
meta.limit | integer | Limit |
meta.next_before | integer | null | Cursor für die nächste Seite, null = Ende |
meta.retention_days | integer | Aufbewahrung |
Mögliche Fehler: 400401429 Fehlercodes
/me/account-links
Account-Freigaben
shared_with: wer deinen Account verwalten darf. managed: welche Accounts du verwalten darfst. Mit dem Header X-IPv64-Act-As handelst du für einen verwalteten Account.
curl "https://ipv64.net/api/v2/me/account-links" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.shared_with | object[] | |
data.shared_with[].id | integer | ID der Freigabe |
data.shared_with[].direction | string | shared_with = du hast freigegeben, managed = du verwaltest Werte: shared_with, managed. |
data.shared_with[].email | string | E-Mail des anderen Accounts |
data.shared_with[].status | string | Status Werte: active, pending. |
data.shared_with[].created_at | datetime | null | Angelegt |
data.shared_with[].last_used_at | datetime | null | Zuletzt benutzt |
data.shared_with[].account_id | integer | Nur bei managed: ID für X-IPv64-Act-As |
data.managed | object[] | |
data.managed[].id | integer | ID der Freigabe |
data.managed[].direction | string | shared_with = du hast freigegeben, managed = du verwaltest Werte: shared_with, managed. |
data.managed[].email | string | E-Mail des anderen Accounts |
data.managed[].status | string | Status Werte: active, pending. |
data.managed[].created_at | datetime | null | Angelegt |
data.managed[].last_used_at | datetime | null | Zuletzt benutzt |
data.managed[].account_id | integer | Nur bei managed: ID für X-IPv64-Act-As |
Mögliche Fehler: 401429 Fehlercodes
Dieselben Keys wie im Menü Account > API.
/api-keys
Alle API-Keys
Die Keys selbst werden nie wieder angezeigt, nur Anfang und Ende.
curl "https://ipv64.net/api/v2/api-keys" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | ID |
data[].name | string | Name |
data[].token_hint | string | Anfang und Ende des Keys |
data[].created_at | datetime | null | Angelegt |
data[].expires_at | datetime | null | Ablauf, null = nie |
data[].expired | boolean | Abgelaufen |
data[].uses | integer | Anzahl Aufrufe |
Mögliche Fehler: 401429 Fehlercodes
/api-keys
API-Key anlegen
Der vollständige Key steht nur in dieser Antwort.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Name | |
expires_in | integer | Gültigkeit in Sekunden, 0 = unbegrenzt Bereich: 0 bis 315360000. |
curl -X POST "https://ipv64.net/api/v2/api-keys" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Backup-Server","expires_in":2592000}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.name | string | Name |
data.token_hint | string | Anfang und Ende des Keys |
data.created_at | datetime | null | Angelegt |
data.expires_at | datetime | null | Ablauf, null = nie |
data.expired | boolean | Abgelaufen |
data.uses | integer | Anzahl Aufrufe |
data.token | string | Der vollständige Key. Wird nur dieses eine Mal angezeigt. |
Mögliche Fehler: 401422429 Fehlercodes
/api-keys/{id}
API-Key löschen
Der Key, mit dem du gerade angemeldet bist, kann sich nicht selbst löschen.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
curl -X DELETE "https://ipv64.net/api/v2/api-keys/12" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404409429 Fehlercodes
DynDNS-Domains und eigene Domains. Überall, wo {domain} steht, geht die ID oder der vollständige Name.
/domains
Alle Domains
| Feld | Typ | Beschreibung | |
|---|---|---|---|
kind | Query, string | Nur DynDNS- oder nur eigene Domains Werte: dyndns, own. |
curl "https://ipv64.net/api/v2/domains" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | Domain-ID |
data[].name | string | Vollständiger Name |
data[].kind | string | dyndns oder own (eigene Domain) Werte: dyndns, own. |
data[].zone | string | Zone |
data[].wildcard | boolean | Wildcard-Records *.name aktiv |
data[].ignore | string | Diese Adressfamilie wird bei DynDNS-Updates ignoriert Werte: none, ipv4, ipv6. |
data[].ipv6_prefix | string | null | Fester IPv6-Präfix für Interface-IDs |
data[].active | boolean | Domain aktiv |
data[].update_token | string | Domain-Update-Token für update.php |
data[].update_count | integer | Anzahl DynDNS-Updates |
data[].created_at | datetime | null | Angelegt |
data[].updated_at | datetime | null | Letztes Update |
Mögliche Fehler: 400401429 Fehlercodes
/domains
Domain anlegen
DynDNS-Domain: name als <wunschname>.<zone>, Zonen: ipv64.net, ipv64.de, any64.de, api64.de, dns64.de, dyndns64.de, dynipv6.de, eth64.de, home64.de, iot64.de, lan64.de, nas64.de, root64.de, route64.de, srv64.de, tcp64.de, udp64.de, vpn64.de, wan64.de. Eigene Domain: own auf true setzen und danach die Nameserver ns1.ipv64.net und ns2.ipv64.net beim Registrar eintragen. Die Limits deines Pakets gelten.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Pflicht | Domainname |
own | boolean | Eigene Domain statt DynDNS |
curl -X POST "https://ipv64.net/api/v2/domains" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"meinname.ipv64.de"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | Domain-ID |
data.name | string | Vollständiger Name |
data.kind | string | dyndns oder own (eigene Domain) Werte: dyndns, own. |
data.zone | string | Zone |
data.wildcard | boolean | Wildcard-Records *.name aktiv |
data.ignore | string | Diese Adressfamilie wird bei DynDNS-Updates ignoriert Werte: none, ipv4, ipv6. |
data.ipv6_prefix | string | null | Fester IPv6-Präfix für Interface-IDs |
data.active | boolean | Domain aktiv |
data.update_token | string | Domain-Update-Token für update.php |
data.update_count | integer | Anzahl DynDNS-Updates |
data.created_at | datetime | null | Angelegt |
data.updated_at | datetime | null | Letztes Update |
data.records | object[] | Alle Records der Domain |
data.records[].id | integer | Record-ID |
data.records[].domain_id | integer | Domain-ID |
data.records[].domain | string | Domain |
data.records[].prefix | string | Präfix, leer = Domain selbst |
data.records[].fqdn | string | Vollständiger Name |
data.records[].type | string | Record-Typ Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, TLSA, CAA. |
data.records[].content | string | Inhalt |
data.records[].ttl | integer | TTL in Sekunden |
data.records[].state | string | active, inactive, cdn_record (vom CDN verwaltet), cdn_proxied / cdn_partial (läuft über das CDN), failover_record (temporärer Ersatz), failover_replaced (durch Failover ersetzt) Werte: active, inactive, cdn_record, cdn_proxied, cdn_partial, failover_record, failover_replaced. |
data.records[].pending_dns | boolean | Änderung wird noch an die Nameserver übertragen |
data.records[].token | string | Record-Token. Bleibt bei IP-Änderungen gleich und kann statt der ID verwendet werden. |
data.records[].updated_at | datetime | null | Letzte Änderung |
Mögliche Fehler: 401403409422429 Fehlercodes
/domains/{domain}
Domain mit Records
| Feld | Typ | Beschreibung | |
|---|---|---|---|
domain | Pfad, string | Pflicht | Domain-ID oder vollständiger Name, z. B. beispiel.ipv64.de |
curl "https://ipv64.net/api/v2/domains/beispiel.ipv64.de" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | Domain-ID |
data.name | string | Vollständiger Name |
data.kind | string | dyndns oder own (eigene Domain) Werte: dyndns, own. |
data.zone | string | Zone |
data.wildcard | boolean | Wildcard-Records *.name aktiv |
data.ignore | string | Diese Adressfamilie wird bei DynDNS-Updates ignoriert Werte: none, ipv4, ipv6. |
data.ipv6_prefix | string | null | Fester IPv6-Präfix für Interface-IDs |
data.active | boolean | Domain aktiv |
data.update_token | string | Domain-Update-Token für update.php |
data.update_count | integer | Anzahl DynDNS-Updates |
data.created_at | datetime | null | Angelegt |
data.updated_at | datetime | null | Letztes Update |
data.records | object[] | Alle Records der Domain |
data.records[].id | integer | Record-ID |
data.records[].domain_id | integer | Domain-ID |
data.records[].domain | string | Domain |
data.records[].prefix | string | Präfix, leer = Domain selbst |
data.records[].fqdn | string | Vollständiger Name |
data.records[].type | string | Record-Typ Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, TLSA, CAA. |
data.records[].content | string | Inhalt |
data.records[].ttl | integer | TTL in Sekunden |
data.records[].state | string | active, inactive, cdn_record (vom CDN verwaltet), cdn_proxied / cdn_partial (läuft über das CDN), failover_record (temporärer Ersatz), failover_replaced (durch Failover ersetzt) Werte: active, inactive, cdn_record, cdn_proxied, cdn_partial, failover_record, failover_replaced. |
data.records[].pending_dns | boolean | Änderung wird noch an die Nameserver übertragen |
data.records[].token | string | Record-Token. Bleibt bei IP-Änderungen gleich und kann statt der ID verwendet werden. |
data.records[].updated_at | datetime | null | Letzte Änderung |
Mögliche Fehler: 401404429 Fehlercodes
/domains/{domain}
Domain-Einstellungen ändern
Nur mitgeschickte Felder werden geändert.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
domain | Pfad, string | Pflicht | Domain-ID oder vollständiger Name, z. B. beispiel.ipv64.de |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
wildcard | boolean | Wildcard *.name an oder aus | |
ignore | string | Adressfamilie bei DynDNS-Updates ignorieren Werte: none, ipv4, ipv6. | |
ipv6_prefix | string | Fester IPv6-Präfix wie 2001:db8:1234:5600::/56, leer = aus |
curl -X PATCH "https://ipv64.net/api/v2/domains/beispiel.ipv64.de" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"wildcard":true,"ignore":"none"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | Domain-ID |
data.name | string | Vollständiger Name |
data.kind | string | dyndns oder own (eigene Domain) Werte: dyndns, own. |
data.zone | string | Zone |
data.wildcard | boolean | Wildcard-Records *.name aktiv |
data.ignore | string | Diese Adressfamilie wird bei DynDNS-Updates ignoriert Werte: none, ipv4, ipv6. |
data.ipv6_prefix | string | null | Fester IPv6-Präfix für Interface-IDs |
data.active | boolean | Domain aktiv |
data.update_token | string | Domain-Update-Token für update.php |
data.update_count | integer | Anzahl DynDNS-Updates |
data.created_at | datetime | null | Angelegt |
data.updated_at | datetime | null | Letztes Update |
data.records | object[] | Alle Records der Domain |
data.records[].id | integer | Record-ID |
data.records[].domain_id | integer | Domain-ID |
data.records[].domain | string | Domain |
data.records[].prefix | string | Präfix, leer = Domain selbst |
data.records[].fqdn | string | Vollständiger Name |
data.records[].type | string | Record-Typ Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, TLSA, CAA. |
data.records[].content | string | Inhalt |
data.records[].ttl | integer | TTL in Sekunden |
data.records[].state | string | active, inactive, cdn_record (vom CDN verwaltet), cdn_proxied / cdn_partial (läuft über das CDN), failover_record (temporärer Ersatz), failover_replaced (durch Failover ersetzt) Werte: active, inactive, cdn_record, cdn_proxied, cdn_partial, failover_record, failover_replaced. |
data.records[].pending_dns | boolean | Änderung wird noch an die Nameserver übertragen |
data.records[].token | string | Record-Token. Bleibt bei IP-Änderungen gleich und kann statt der ID verwendet werden. |
data.records[].updated_at | datetime | null | Letzte Änderung |
Mögliche Fehler: 401404422429 Fehlercodes
/domains/{domain}
Domain löschen
Löscht die Domain mit allen Records. Nicht möglich, solange ein DNS-Failover aktiv ist.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
domain | Pfad, string | Pflicht | Domain-ID oder vollständiger Name, z. B. beispiel.ipv64.de |
curl -X DELETE "https://ipv64.net/api/v2/domains/beispiel.ipv64.de" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404409429 Fehlercodes
/domains/{domain}/rotate-token
Neuen Domain-Update-Token erzeugen
Der alte Token für update.php ist sofort ungültig.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
domain | Pfad, string | Pflicht | Domain-ID oder vollständiger Name, z. B. beispiel.ipv64.de |
curl -X POST "https://ipv64.net/api/v2/domains/beispiel.ipv64.de/rotate-token" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | Domain-ID |
data.name | string | Vollständiger Name |
data.kind | string | dyndns oder own (eigene Domain) Werte: dyndns, own. |
data.zone | string | Zone |
data.wildcard | boolean | Wildcard-Records *.name aktiv |
data.ignore | string | Diese Adressfamilie wird bei DynDNS-Updates ignoriert Werte: none, ipv4, ipv6. |
data.ipv6_prefix | string | null | Fester IPv6-Präfix für Interface-IDs |
data.active | boolean | Domain aktiv |
data.update_token | string | Domain-Update-Token für update.php |
data.update_count | integer | Anzahl DynDNS-Updates |
data.created_at | datetime | null | Angelegt |
data.updated_at | datetime | null | Letztes Update |
Mögliche Fehler: 401404429 Fehlercodes
/domains/{domain}/reset
Domain zurücksetzen
Löscht alle aktiven Records und setzt die Zone neu auf.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
domain | Pfad, string | Pflicht | Domain-ID oder vollständiger Name, z. B. beispiel.ipv64.de |
curl -X POST "https://ipv64.net/api/v2/domains/beispiel.ipv64.de/reset" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | Domain-ID |
data.name | string | Vollständiger Name |
data.kind | string | dyndns oder own (eigene Domain) Werte: dyndns, own. |
data.zone | string | Zone |
data.wildcard | boolean | Wildcard-Records *.name aktiv |
data.ignore | string | Diese Adressfamilie wird bei DynDNS-Updates ignoriert Werte: none, ipv4, ipv6. |
data.ipv6_prefix | string | null | Fester IPv6-Präfix für Interface-IDs |
data.active | boolean | Domain aktiv |
data.update_token | string | Domain-Update-Token für update.php |
data.update_count | integer | Anzahl DynDNS-Updates |
data.created_at | datetime | null | Angelegt |
data.updated_at | datetime | null | Letztes Update |
data.records | object[] | Alle Records der Domain |
data.records[].id | integer | Record-ID |
data.records[].domain_id | integer | Domain-ID |
data.records[].domain | string | Domain |
data.records[].prefix | string | Präfix, leer = Domain selbst |
data.records[].fqdn | string | Vollständiger Name |
data.records[].type | string | Record-Typ Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, TLSA, CAA. |
data.records[].content | string | Inhalt |
data.records[].ttl | integer | TTL in Sekunden |
data.records[].state | string | active, inactive, cdn_record (vom CDN verwaltet), cdn_proxied / cdn_partial (läuft über das CDN), failover_record (temporärer Ersatz), failover_replaced (durch Failover ersetzt) Werte: active, inactive, cdn_record, cdn_proxied, cdn_partial, failover_record, failover_replaced. |
data.records[].pending_dns | boolean | Änderung wird noch an die Nameserver übertragen |
data.records[].token | string | Record-Token. Bleibt bei IP-Änderungen gleich und kann statt der ID verwendet werden. |
data.records[].updated_at | datetime | null | Letzte Änderung |
Mögliche Fehler: 401404409429 Fehlercodes
IP-Updates über die API. Für Router und einfache Geräte bleibt update.php der richtige Weg.
/domains/{domain}/dyndns
IP aktualisieren
Setzt A- und AAAA-Records einer Domain oder eines Präfixes. Ohne ipv4 und ipv6 wird die Absenderadresse verwendet. Nur öffentliche Adressen sind erlaubt. Fehlende Records werden angelegt. Das Update zählt in der Statistik, ist über die API aber nicht durch das Tageslimit begrenzt.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
domain | Pfad, string | Pflicht | Domain-ID oder vollständiger Name, z. B. beispiel.ipv64.de |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
ipv4 | string | IPv4-Adresse | |
ipv6 | string | IPv6-Adresse | |
prefix | string | Präfix, leer = Domain selbst |
curl -X POST "https://ipv64.net/api/v2/domains/beispiel.ipv64.de/dyndns" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ipv4":"203.0.113.10","ipv6":"2001:db8::10"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.domain | string | Domain |
data.prefix | string | Präfix |
data.changed | boolean | Mindestens ein Record geändert |
data.results | object[] | |
data.results[].ip | string | IP |
data.results[].type | string | A oder AAAA |
data.results[].result | string | Ergebnis je IP Werte: created, updated, unchanged, ignored, invalid_ip, cname_conflict, cdn_managed. |
Mögliche Fehler: 401404409422429 Fehlercodes
Records einer Domain. {record} ist die ID oder der Record-Token.
/domains/{domain}/records
Records einer Domain
| Feld | Typ | Beschreibung | |
|---|---|---|---|
domain | Pfad, string | Pflicht | Domain-ID oder vollständiger Name, z. B. beispiel.ipv64.de |
type | Query, string | Nur dieser Typ Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, TLSA, CAA. | |
prefix | Query, string | Nur dieser Präfix |
curl "https://ipv64.net/api/v2/domains/beispiel.ipv64.de/records" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | Record-ID |
data[].domain_id | integer | Domain-ID |
data[].domain | string | Domain |
data[].prefix | string | Präfix, leer = Domain selbst |
data[].fqdn | string | Vollständiger Name |
data[].type | string | Record-Typ Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, TLSA, CAA. |
data[].content | string | Inhalt |
data[].ttl | integer | TTL in Sekunden |
data[].state | string | active, inactive, cdn_record (vom CDN verwaltet), cdn_proxied / cdn_partial (läuft über das CDN), failover_record (temporärer Ersatz), failover_replaced (durch Failover ersetzt) Werte: active, inactive, cdn_record, cdn_proxied, cdn_partial, failover_record, failover_replaced. |
data[].pending_dns | boolean | Änderung wird noch an die Nameserver übertragen |
data[].token | string | Record-Token. Bleibt bei IP-Änderungen gleich und kann statt der ID verwendet werden. |
data[].updated_at | datetime | null | Letzte Änderung |
Mögliche Fehler: 400401404429 Fehlercodes
/domains/{domain}/records
Record anlegen
TTL ist fest 60 Sekunden. Formate je Typ wie in der Weboberfläche, zum Beispiel MX als "10 mail.example.com".
| Feld | Typ | Beschreibung | |
|---|---|---|---|
domain | Pfad, string | Pflicht | Domain-ID oder vollständiger Name, z. B. beispiel.ipv64.de |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
type | string | Pflicht | Typ Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, TLSA, CAA. |
prefix | string | Präfix, leer oder @ = Domain selbst | |
content | string | Pflicht | Inhalt |
curl -X POST "https://ipv64.net/api/v2/domains/beispiel.ipv64.de/records" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"TXT","prefix":"_acme-challenge","content":"gfj9Xq...Rg85nM"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | Record-ID |
data.domain_id | integer | Domain-ID |
data.domain | string | Domain |
data.prefix | string | Präfix, leer = Domain selbst |
data.fqdn | string | Vollständiger Name |
data.type | string | Record-Typ Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, TLSA, CAA. |
data.content | string | Inhalt |
data.ttl | integer | TTL in Sekunden |
data.state | string | active, inactive, cdn_record (vom CDN verwaltet), cdn_proxied / cdn_partial (läuft über das CDN), failover_record (temporärer Ersatz), failover_replaced (durch Failover ersetzt) Werte: active, inactive, cdn_record, cdn_proxied, cdn_partial, failover_record, failover_replaced. |
data.pending_dns | boolean | Änderung wird noch an die Nameserver übertragen |
data.token | string | Record-Token. Bleibt bei IP-Änderungen gleich und kann statt der ID verwendet werden. |
data.updated_at | datetime | null | Letzte Änderung |
Mögliche Fehler: 401404409422429 Fehlercodes
/domains/{domain}/records
Record nach Inhalt löschen
Praktisch für ACME-Clients: löscht den Record mit genau diesem Typ, Präfix und Inhalt.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
domain | Pfad, string | Pflicht | Domain-ID oder vollständiger Name, z. B. beispiel.ipv64.de |
type | Query, string | Pflicht | Typ Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, TLSA, CAA. |
content | Query, string | Pflicht | Inhalt |
prefix | Query, string | Präfix |
curl -X DELETE "https://ipv64.net/api/v2/domains/beispiel.ipv64.de/records?type=TXT&content=gfj9Xq...Rg85nM" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 400401404429 Fehlercodes
/records/{record}
Einzelner Record
| Feld | Typ | Beschreibung | |
|---|---|---|---|
record | Pfad, string | Pflicht | Record-ID oder Record-Token |
curl "https://ipv64.net/api/v2/records/4711" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | Record-ID |
data.domain_id | integer | Domain-ID |
data.domain | string | Domain |
data.prefix | string | Präfix, leer = Domain selbst |
data.fqdn | string | Vollständiger Name |
data.type | string | Record-Typ Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, TLSA, CAA. |
data.content | string | Inhalt |
data.ttl | integer | TTL in Sekunden |
data.state | string | active, inactive, cdn_record (vom CDN verwaltet), cdn_proxied / cdn_partial (läuft über das CDN), failover_record (temporärer Ersatz), failover_replaced (durch Failover ersetzt) Werte: active, inactive, cdn_record, cdn_proxied, cdn_partial, failover_record, failover_replaced. |
data.pending_dns | boolean | Änderung wird noch an die Nameserver übertragen |
data.token | string | Record-Token. Bleibt bei IP-Änderungen gleich und kann statt der ID verwendet werden. |
data.updated_at | datetime | null | Letzte Änderung |
Mögliche Fehler: 401404429 Fehlercodes
/records/{record}
Record ändern
Ändert sich nur die IP eines A- oder AAAA-Records, bleiben ID und Token erhalten. Bei anderen Änderungen wird der Record ersetzt und bekommt eine neue ID und einen neuen Token. Records, die vom CDN oder DNS-Failover verwaltet werden, sind gesperrt.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
record | Pfad, string | Pflicht | Record-ID oder Record-Token |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
type | string | Typ Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, TLSA, CAA. | |
prefix | string | Präfix | |
content | string | Inhalt |
curl -X PATCH "https://ipv64.net/api/v2/records/4711" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"content":"203.0.113.20"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | Record-ID |
data.domain_id | integer | Domain-ID |
data.domain | string | Domain |
data.prefix | string | Präfix, leer = Domain selbst |
data.fqdn | string | Vollständiger Name |
data.type | string | Record-Typ Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, TLSA, CAA. |
data.content | string | Inhalt |
data.ttl | integer | TTL in Sekunden |
data.state | string | active, inactive, cdn_record (vom CDN verwaltet), cdn_proxied / cdn_partial (läuft über das CDN), failover_record (temporärer Ersatz), failover_replaced (durch Failover ersetzt) Werte: active, inactive, cdn_record, cdn_proxied, cdn_partial, failover_record, failover_replaced. |
data.pending_dns | boolean | Änderung wird noch an die Nameserver übertragen |
data.token | string | Record-Token. Bleibt bei IP-Änderungen gleich und kann statt der ID verwendet werden. |
data.updated_at | datetime | null | Letzte Änderung |
Mögliche Fehler: 401404409422429 Fehlercodes
/records/{record}
Record löschen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
record | Pfad, string | Pflicht | Record-ID oder Record-Token |
curl -X DELETE "https://ipv64.net/api/v2/records/4711" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404409429 Fehlercodes
Push-Checks (dein System meldet sich) und aktive Checks (ICMP, TCP, HTTP, Keyword). {token} ist der Healthcheck-Token.
/healthchecks
Alle Healthchecks
| Feld | Typ | Beschreibung | |
|---|---|---|---|
type | Query, string | Nur diese Art Werte: push, icmp, tcp, http, keyword. | |
status | Query, string | Nur dieser Status Werte: new, up, paused, warning, down, stabilizing. |
curl "https://ipv64.net/api/v2/healthchecks" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].token | string | Healthcheck-Token, identifiziert den Check |
data[].name | string | Name |
data[].type | string | Art des Checks Werte: push, icmp, tcp, http, keyword. |
data[].status | string | Status Werte: new, up, paused, warning, down, stabilizing. |
data[].notify | object | |
data[].notify.on_down | boolean | Bei DOWN benachrichtigen |
data[].notify.on_up | boolean | Bei UP benachrichtigen |
data[].notify.integrations | integer[] | IDs der Integrationen, 0 = Account-E-Mail |
data[].created_at | datetime | null | Angelegt |
data[].last_seen_at | datetime | null | Letzter Ping oder letzte Prüfung |
data[].last_alarm_at | datetime | null | Letzter Alarm |
data[].pings_total | integer | Anzahl Pings |
data[].failed_in_row | integer | Fehlschläge in Folge |
data[].push | object | Nur bei type push |
data[].push.url | string | Diese URL pingt dein System an |
data[].push.period_seconds | integer | Erwarteter Abstand der Pings |
data[].push.grace_seconds | integer | Kulanzzeit |
data[].push.expected_by | datetime | null | Spätester Zeitpunkt für den nächsten Ping |
data[].check | object | null | Nur bei aktiven Checks (icmp, tcp, http, keyword). null, solange noch nichts eingestellt ist. |
data[].check.target | string | Ziel bei icmp und tcp |
data[].check.prefer_ipv4 | boolean | IPv4 bevorzugen |
data[].check.port | integer | Port bei tcp |
data[].check.url | string | URL bei http und keyword |
data[].check.verify_tls | boolean | Zertifikat prüfen |
data[].check.keyword | string | Suchbegriff bei keyword |
data[].check.interval_seconds | integer | Prüfintervall |
data[].check.retry_interval_seconds | integer | Intervall nach einem Fehler |
data[].check.failures_before_alarm | integer | Fehlschläge bis zum Alarm |
data[].check.next_check_at | datetime | null | Nächste Prüfung |
Mögliche Fehler: 400401429 Fehlercodes
/healthchecks
Healthcheck anlegen
Push-Check: Danach push.url aus der Antwort regelmäßig aufrufen. Aktive Checks: target bzw. url ist Pflicht.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Pflicht | Name |
type | string | Art. Erlaubt sind auch die Namen der Weboberfläche: health, ping, web. Werte: push, icmp, tcp, http, keyword. | |
integrations | integer[] | Integrationen für Benachrichtigungen, 0 = Account-E-Mail | |
notify_on_down | boolean | Bei DOWN benachrichtigen | |
notify_on_up | boolean | Bei UP benachrichtigen | |
period_seconds | integer | push: erwarteter Abstand der Pings. Ganze Minuten, Stunden oder Tage. Bereich: 60 bis …. | |
grace_seconds | integer | push: Kulanzzeit nach Ablauf der Periode. Ganze Minuten, Stunden oder Tage. Bereich: 60 bis …. | |
target | string | icmp und tcp: Hostname oder IP | |
prefer_ipv4 | boolean | icmp und tcp: IPv4 bevorzugen | |
port | integer | tcp: Port Bereich: 1 bis 65535. | |
url | string | http und keyword: URL | |
verify_tls | boolean | http und keyword: Zertifikat prüfen | |
keyword | string | keyword: Text, der auf der Seite stehen muss | |
interval_seconds | integer | Aktive Checks: Prüfintervall. Free-Paket mindestens 120 Sekunden. Bereich: 1 bis 86400. | |
retry_interval_seconds | integer | Aktive Checks: Intervall nach einem Fehler, mindestens 10 Sekunden Bereich: 1 bis 86400. | |
failures_before_alarm | integer | Aktive Checks: Fehlschläge bis zum Alarm Bereich: 1 bis 60. |
curl -X POST "https://ipv64.net/api/v2/healthchecks" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Webseite","type":"http","url":"https://example.com/","interval_seconds":300,"integrations":[0]}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.token | string | Healthcheck-Token, identifiziert den Check |
data.name | string | Name |
data.type | string | Art des Checks Werte: push, icmp, tcp, http, keyword. |
data.status | string | Status Werte: new, up, paused, warning, down, stabilizing. |
data.notify | object | |
data.notify.on_down | boolean | Bei DOWN benachrichtigen |
data.notify.on_up | boolean | Bei UP benachrichtigen |
data.notify.integrations | integer[] | IDs der Integrationen, 0 = Account-E-Mail |
data.created_at | datetime | null | Angelegt |
data.last_seen_at | datetime | null | Letzter Ping oder letzte Prüfung |
data.last_alarm_at | datetime | null | Letzter Alarm |
data.pings_total | integer | Anzahl Pings |
data.failed_in_row | integer | Fehlschläge in Folge |
data.push | object | Nur bei type push |
data.push.url | string | Diese URL pingt dein System an |
data.push.period_seconds | integer | Erwarteter Abstand der Pings |
data.push.grace_seconds | integer | Kulanzzeit |
data.push.expected_by | datetime | null | Spätester Zeitpunkt für den nächsten Ping |
data.check | object | null | Nur bei aktiven Checks (icmp, tcp, http, keyword). null, solange noch nichts eingestellt ist. |
data.check.target | string | Ziel bei icmp und tcp |
data.check.prefer_ipv4 | boolean | IPv4 bevorzugen |
data.check.port | integer | Port bei tcp |
data.check.url | string | URL bei http und keyword |
data.check.verify_tls | boolean | Zertifikat prüfen |
data.check.keyword | string | Suchbegriff bei keyword |
data.check.interval_seconds | integer | Prüfintervall |
data.check.retry_interval_seconds | integer | Intervall nach einem Fehler |
data.check.failures_before_alarm | integer | Fehlschläge bis zum Alarm |
data.check.next_check_at | datetime | null | Nächste Prüfung |
data.recent | object[] | Die letzten 20 Events |
data.recent[].id | integer | Event-ID, auch Cursor |
data.recent[].time | datetime | Zeitpunkt |
data.recent[].status | string | Status Werte: new, up, paused, warning, down, stabilizing. |
data.recent[].message | string | Text |
data.recent[].latency_ms | number | null | Antwortzeit |
data.recent[].payload | object | null | Zusatzdaten des Pings |
Mögliche Fehler: 401403422429 Fehlercodes
/healthchecks/{token}
Healthcheck mit den letzten Events
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl "https://ipv64.net/api/v2/healthchecks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.token | string | Healthcheck-Token, identifiziert den Check |
data.name | string | Name |
data.type | string | Art des Checks Werte: push, icmp, tcp, http, keyword. |
data.status | string | Status Werte: new, up, paused, warning, down, stabilizing. |
data.notify | object | |
data.notify.on_down | boolean | Bei DOWN benachrichtigen |
data.notify.on_up | boolean | Bei UP benachrichtigen |
data.notify.integrations | integer[] | IDs der Integrationen, 0 = Account-E-Mail |
data.created_at | datetime | null | Angelegt |
data.last_seen_at | datetime | null | Letzter Ping oder letzte Prüfung |
data.last_alarm_at | datetime | null | Letzter Alarm |
data.pings_total | integer | Anzahl Pings |
data.failed_in_row | integer | Fehlschläge in Folge |
data.push | object | Nur bei type push |
data.push.url | string | Diese URL pingt dein System an |
data.push.period_seconds | integer | Erwarteter Abstand der Pings |
data.push.grace_seconds | integer | Kulanzzeit |
data.push.expected_by | datetime | null | Spätester Zeitpunkt für den nächsten Ping |
data.check | object | null | Nur bei aktiven Checks (icmp, tcp, http, keyword). null, solange noch nichts eingestellt ist. |
data.check.target | string | Ziel bei icmp und tcp |
data.check.prefer_ipv4 | boolean | IPv4 bevorzugen |
data.check.port | integer | Port bei tcp |
data.check.url | string | URL bei http und keyword |
data.check.verify_tls | boolean | Zertifikat prüfen |
data.check.keyword | string | Suchbegriff bei keyword |
data.check.interval_seconds | integer | Prüfintervall |
data.check.retry_interval_seconds | integer | Intervall nach einem Fehler |
data.check.failures_before_alarm | integer | Fehlschläge bis zum Alarm |
data.check.next_check_at | datetime | null | Nächste Prüfung |
data.recent | object[] | Die letzten 20 Events |
data.recent[].id | integer | Event-ID, auch Cursor |
data.recent[].time | datetime | Zeitpunkt |
data.recent[].status | string | Status Werte: new, up, paused, warning, down, stabilizing. |
data.recent[].message | string | Text |
data.recent[].latency_ms | number | null | Antwortzeit |
data.recent[].payload | object | null | Zusatzdaten des Pings |
Mögliche Fehler: 401404429 Fehlercodes
/healthchecks/{token}
Healthcheck ändern
Nur mitgeschickte Felder werden geändert. Ein Wechsel von type setzt die Prüf-Einstellungen zurück.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Name | |
type | string | Art. Erlaubt sind auch die Namen der Weboberfläche: health, ping, web. Werte: push, icmp, tcp, http, keyword. | |
integrations | integer[] | Integrationen für Benachrichtigungen, 0 = Account-E-Mail | |
notify_on_down | boolean | Bei DOWN benachrichtigen | |
notify_on_up | boolean | Bei UP benachrichtigen | |
period_seconds | integer | push: erwarteter Abstand der Pings. Ganze Minuten, Stunden oder Tage. Bereich: 60 bis …. | |
grace_seconds | integer | push: Kulanzzeit nach Ablauf der Periode. Ganze Minuten, Stunden oder Tage. Bereich: 60 bis …. | |
target | string | icmp und tcp: Hostname oder IP | |
prefer_ipv4 | boolean | icmp und tcp: IPv4 bevorzugen | |
port | integer | tcp: Port Bereich: 1 bis 65535. | |
url | string | http und keyword: URL | |
verify_tls | boolean | http und keyword: Zertifikat prüfen | |
keyword | string | keyword: Text, der auf der Seite stehen muss | |
interval_seconds | integer | Aktive Checks: Prüfintervall. Free-Paket mindestens 120 Sekunden. Bereich: 1 bis 86400. | |
retry_interval_seconds | integer | Aktive Checks: Intervall nach einem Fehler, mindestens 10 Sekunden Bereich: 1 bis 86400. | |
failures_before_alarm | integer | Aktive Checks: Fehlschläge bis zum Alarm Bereich: 1 bis 60. |
curl -X PATCH "https://ipv64.net/api/v2/healthchecks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"interval_seconds":60,"failures_before_alarm":2}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.token | string | Healthcheck-Token, identifiziert den Check |
data.name | string | Name |
data.type | string | Art des Checks Werte: push, icmp, tcp, http, keyword. |
data.status | string | Status Werte: new, up, paused, warning, down, stabilizing. |
data.notify | object | |
data.notify.on_down | boolean | Bei DOWN benachrichtigen |
data.notify.on_up | boolean | Bei UP benachrichtigen |
data.notify.integrations | integer[] | IDs der Integrationen, 0 = Account-E-Mail |
data.created_at | datetime | null | Angelegt |
data.last_seen_at | datetime | null | Letzter Ping oder letzte Prüfung |
data.last_alarm_at | datetime | null | Letzter Alarm |
data.pings_total | integer | Anzahl Pings |
data.failed_in_row | integer | Fehlschläge in Folge |
data.push | object | Nur bei type push |
data.push.url | string | Diese URL pingt dein System an |
data.push.period_seconds | integer | Erwarteter Abstand der Pings |
data.push.grace_seconds | integer | Kulanzzeit |
data.push.expected_by | datetime | null | Spätester Zeitpunkt für den nächsten Ping |
data.check | object | null | Nur bei aktiven Checks (icmp, tcp, http, keyword). null, solange noch nichts eingestellt ist. |
data.check.target | string | Ziel bei icmp und tcp |
data.check.prefer_ipv4 | boolean | IPv4 bevorzugen |
data.check.port | integer | Port bei tcp |
data.check.url | string | URL bei http und keyword |
data.check.verify_tls | boolean | Zertifikat prüfen |
data.check.keyword | string | Suchbegriff bei keyword |
data.check.interval_seconds | integer | Prüfintervall |
data.check.retry_interval_seconds | integer | Intervall nach einem Fehler |
data.check.failures_before_alarm | integer | Fehlschläge bis zum Alarm |
data.check.next_check_at | datetime | null | Nächste Prüfung |
data.recent | object[] | Die letzten 20 Events |
data.recent[].id | integer | Event-ID, auch Cursor |
data.recent[].time | datetime | Zeitpunkt |
data.recent[].status | string | Status Werte: new, up, paused, warning, down, stabilizing. |
data.recent[].message | string | Text |
data.recent[].latency_ms | number | null | Antwortzeit |
data.recent[].payload | object | null | Zusatzdaten des Pings |
Mögliche Fehler: 401404422429 Fehlercodes
/healthchecks/{token}
Healthcheck löschen
Nicht möglich, solange der Check einen aktiven DNS-Failover steuert.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X DELETE "https://ipv64.net/api/v2/healthchecks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404409429 Fehlercodes
/healthchecks/{token}/pause
Pausieren
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/healthchecks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/pause" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.token | string | Healthcheck-Token, identifiziert den Check |
data.name | string | Name |
data.type | string | Art des Checks Werte: push, icmp, tcp, http, keyword. |
data.status | string | Status Werte: new, up, paused, warning, down, stabilizing. |
data.notify | object | |
data.notify.on_down | boolean | Bei DOWN benachrichtigen |
data.notify.on_up | boolean | Bei UP benachrichtigen |
data.notify.integrations | integer[] | IDs der Integrationen, 0 = Account-E-Mail |
data.created_at | datetime | null | Angelegt |
data.last_seen_at | datetime | null | Letzter Ping oder letzte Prüfung |
data.last_alarm_at | datetime | null | Letzter Alarm |
data.pings_total | integer | Anzahl Pings |
data.failed_in_row | integer | Fehlschläge in Folge |
data.push | object | Nur bei type push |
data.push.url | string | Diese URL pingt dein System an |
data.push.period_seconds | integer | Erwarteter Abstand der Pings |
data.push.grace_seconds | integer | Kulanzzeit |
data.push.expected_by | datetime | null | Spätester Zeitpunkt für den nächsten Ping |
data.check | object | null | Nur bei aktiven Checks (icmp, tcp, http, keyword). null, solange noch nichts eingestellt ist. |
data.check.target | string | Ziel bei icmp und tcp |
data.check.prefer_ipv4 | boolean | IPv4 bevorzugen |
data.check.port | integer | Port bei tcp |
data.check.url | string | URL bei http und keyword |
data.check.verify_tls | boolean | Zertifikat prüfen |
data.check.keyword | string | Suchbegriff bei keyword |
data.check.interval_seconds | integer | Prüfintervall |
data.check.retry_interval_seconds | integer | Intervall nach einem Fehler |
data.check.failures_before_alarm | integer | Fehlschläge bis zum Alarm |
data.check.next_check_at | datetime | null | Nächste Prüfung |
Mögliche Fehler: 401404409429 Fehlercodes
/healthchecks/{token}/resume
Fortsetzen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/healthchecks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/resume" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.token | string | Healthcheck-Token, identifiziert den Check |
data.name | string | Name |
data.type | string | Art des Checks Werte: push, icmp, tcp, http, keyword. |
data.status | string | Status Werte: new, up, paused, warning, down, stabilizing. |
data.notify | object | |
data.notify.on_down | boolean | Bei DOWN benachrichtigen |
data.notify.on_up | boolean | Bei UP benachrichtigen |
data.notify.integrations | integer[] | IDs der Integrationen, 0 = Account-E-Mail |
data.created_at | datetime | null | Angelegt |
data.last_seen_at | datetime | null | Letzter Ping oder letzte Prüfung |
data.last_alarm_at | datetime | null | Letzter Alarm |
data.pings_total | integer | Anzahl Pings |
data.failed_in_row | integer | Fehlschläge in Folge |
data.push | object | Nur bei type push |
data.push.url | string | Diese URL pingt dein System an |
data.push.period_seconds | integer | Erwarteter Abstand der Pings |
data.push.grace_seconds | integer | Kulanzzeit |
data.push.expected_by | datetime | null | Spätester Zeitpunkt für den nächsten Ping |
data.check | object | null | Nur bei aktiven Checks (icmp, tcp, http, keyword). null, solange noch nichts eingestellt ist. |
data.check.target | string | Ziel bei icmp und tcp |
data.check.prefer_ipv4 | boolean | IPv4 bevorzugen |
data.check.port | integer | Port bei tcp |
data.check.url | string | URL bei http und keyword |
data.check.verify_tls | boolean | Zertifikat prüfen |
data.check.keyword | string | Suchbegriff bei keyword |
data.check.interval_seconds | integer | Prüfintervall |
data.check.retry_interval_seconds | integer | Intervall nach einem Fehler |
data.check.failures_before_alarm | integer | Fehlschläge bis zum Alarm |
data.check.next_check_at | datetime | null | Nächste Prüfung |
Mögliche Fehler: 401403404429 Fehlercodes
/healthchecks/{token}/rotate-token
Neuen Token erzeugen
Die Push-URL ändert sich dadurch. Events, Incidents und Failover-Monitore werden mitgenommen.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/healthchecks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/rotate-token" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.token | string | Healthcheck-Token, identifiziert den Check |
data.name | string | Name |
data.type | string | Art des Checks Werte: push, icmp, tcp, http, keyword. |
data.status | string | Status Werte: new, up, paused, warning, down, stabilizing. |
data.notify | object | |
data.notify.on_down | boolean | Bei DOWN benachrichtigen |
data.notify.on_up | boolean | Bei UP benachrichtigen |
data.notify.integrations | integer[] | IDs der Integrationen, 0 = Account-E-Mail |
data.created_at | datetime | null | Angelegt |
data.last_seen_at | datetime | null | Letzter Ping oder letzte Prüfung |
data.last_alarm_at | datetime | null | Letzter Alarm |
data.pings_total | integer | Anzahl Pings |
data.failed_in_row | integer | Fehlschläge in Folge |
data.push | object | Nur bei type push |
data.push.url | string | Diese URL pingt dein System an |
data.push.period_seconds | integer | Erwarteter Abstand der Pings |
data.push.grace_seconds | integer | Kulanzzeit |
data.push.expected_by | datetime | null | Spätester Zeitpunkt für den nächsten Ping |
data.check | object | null | Nur bei aktiven Checks (icmp, tcp, http, keyword). null, solange noch nichts eingestellt ist. |
data.check.target | string | Ziel bei icmp und tcp |
data.check.prefer_ipv4 | boolean | IPv4 bevorzugen |
data.check.port | integer | Port bei tcp |
data.check.url | string | URL bei http und keyword |
data.check.verify_tls | boolean | Zertifikat prüfen |
data.check.keyword | string | Suchbegriff bei keyword |
data.check.interval_seconds | integer | Prüfintervall |
data.check.retry_interval_seconds | integer | Intervall nach einem Fehler |
data.check.failures_before_alarm | integer | Fehlschläge bis zum Alarm |
data.check.next_check_at | datetime | null | Nächste Prüfung |
Mögliche Fehler: 401404429 Fehlercodes
/healthchecks/{token}/events
Events
Ohne Cursor die neuesten zuerst. Mit after werden ältere zuerst geliefert, ideal zum fortlaufenden Abholen neuer Events.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
limit | Query, integer | Anzahl (1 bis 1000) Standard: 100. | |
before | Query, integer | Nur Events mit kleinerer ID | |
after | Query, integer | Nur Events mit größerer ID, aufsteigend sortiert | |
since | Query, datetime | Nur Events ab diesem Zeitpunkt (ISO 8601) |
curl "https://ipv64.net/api/v2/healthchecks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/events" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | Event-ID, auch Cursor |
data[].time | datetime | Zeitpunkt |
data[].status | string | Status Werte: new, up, paused, warning, down, stabilizing. |
data[].message | string | Text |
data[].latency_ms | number | null | Antwortzeit |
data[].payload | object | null | Zusatzdaten des Pings |
meta | object | |
meta.limit | integer | Limit |
meta.has_more | boolean | Weitere Events vorhanden |
meta.next_before | integer | null | Cursor ohne after |
meta.next_after | integer | null | Cursor mit after |
Mögliche Fehler: 400401404429 Fehlercodes
/healthchecks/{token}/incidents
Incidents
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
limit | Query, integer | Anzahl (1 bis 500) Standard: 50. |
curl "https://ipv64.net/api/v2/healthchecks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/incidents" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | ID |
data[].status | string | Status Werte: open, closed. |
data[].created_at | datetime | null | Beginn |
data[].closed_at | datetime | null | Ende |
data[].events | object[] | |
data[].events[].time | datetime | null | Zeitpunkt |
data[].events[].kind | string | Art |
data[].events[].message | string | Text |
Mögliche Fehler: 400401404429 Fehlercodes
/healthchecks/{token}/stats
Verfügbarkeit und Latenz
Berechnet aus den gespeicherten Events, mit Zeitreihe.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
range | Query, string | Zeitraum Werte: 1h, 24h, 7d, 30d. Standard: 24h. |
curl "https://ipv64.net/api/v2/healthchecks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/stats" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.range | string | Zeitraum |
data.from | datetime | null | Beginn |
data.to | datetime | null | Ende |
data.measurements | integer | Anzahl Messungen |
data.availability_percent | number | null | Verfügbarkeit |
data.latency_ms | object | |
data.latency_ms.avg | number | null | Durchschnitt |
data.latency_ms.min | number | null | Minimum |
data.latency_ms.max | number | null | Maximum |
data.bucket_seconds | integer | Breite eines Zeitreihen-Punkts |
data.series | object[] | |
data.series[].time | datetime | Beginn des Intervalls |
data.series[].measurements | integer | Messungen |
data.series[].availability_percent | number | Verfügbarkeit |
data.series[].latency_avg_ms | number | null | Durchschnitt |
data.series[].latency_max_ms | number | null | Maximum |
Mögliche Fehler: 400401404429 Fehlercodes
/healthchecks/{token}/test-notification
Testnachricht senden
An alle Integrationen des Checks. Höchstens eine pro 30 Sekunden.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/healthchecks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/test-notification" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.sent | boolean | Gesendet |
Mögliche Fehler: 401404429 Fehlercodes
Integrationen für Healthchecks und DNS-Failover. Die ID 0 steht immer für die E-Mail-Adresse des Accounts.
/integrations
Alle Integrationen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
include_secrets | Query, string | Tokens und URLs vollständig anzeigen Werte: true, false. |
curl "https://ipv64.net/api/v2/integrations" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | ID, 0 = Account-E-Mail |
data[].type | string | Art Werte: account_email, telegram, gotify, ntfy, pushover, discord, webhook, email, sms, app. |
data[].name | string | Name |
data[].status | string | E-Mail und SMS müssen erst bestätigt werden Werte: active, pending_verification. |
data[].default | boolean | null | Wird bei neuen Healthchecks vorausgewählt |
data[].options | object | Einstellungen je Typ. Geheimnisse sind gekürzt, außer mit include_secrets=true. |
data[].created_at | datetime | null | Angelegt |
data[].last_used_at | datetime | null | Zuletzt benutzt |
data[].uses | integer | Anzahl Nachrichten |
Mögliche Fehler: 400401429 Fehlercodes
/integrations
Integration anlegen
Je nach type sind andere Felder nötig:
- telegram: chat_id, api_token
- gotify: server_url, app_token, priority (0 bis 10)
- ntfy: server_url (inklusive Topic), priority_down und priority_up (1 bis 5)
- pushover: user_token, app_token, device, priority (-2 bis 1)
- discord: webhook_url, ping_user, ping_group
- webhook: url_down und/oder url_up
- email: email. Es wird ein Bestätigungslink verschickt.
- sms: number (deutsche Mobilnummer), country_code 0049. Es wird ein Bestätigungslink per SMS verschickt.
- app: device_token der IPv64-App
URLs müssen mit http oder https beginnen und auf öffentliche Adressen zeigen. E-Mail- und SMS-Bestätigungen sind auf wenige pro Stunde begrenzt.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
type | string | Pflicht | Art Werte: telegram, gotify, ntfy, pushover, discord, webhook, email, sms, app. |
name | string | Pflicht | Name |
default | boolean | Bei neuen Healthchecks vorauswählen | |
chat_id | string | telegram | |
api_token | string | telegram: Bot-Token | |
server_url | string | gotify, ntfy | |
app_token | string | gotify, pushover | |
user_token | string | pushover | |
device | string | pushover | |
priority | integer | gotify (0 bis 10), pushover (-2 bis 1) | |
priority_down | integer | ntfy (1 bis 5) | |
priority_up | integer | ntfy (1 bis 5) | |
webhook_url | string | discord | |
ping_user | string | discord: User-ID | |
ping_group | string | discord: Rollen-ID | |
url_down | string | webhook: wird bei DOWN aufgerufen | |
url_up | string | webhook: wird bei UP aufgerufen | |
email | string | ||
number | string | sms | |
country_code | string | sms | |
device_token | string | app |
curl -X POST "https://ipv64.net/api/v2/integrations" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"telegram","name":"Mein Telegram","chat_id":"123456789","api_token":"123456:ABC-DEF"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID, 0 = Account-E-Mail |
data.type | string | Art Werte: account_email, telegram, gotify, ntfy, pushover, discord, webhook, email, sms, app. |
data.name | string | Name |
data.status | string | E-Mail und SMS müssen erst bestätigt werden Werte: active, pending_verification. |
data.default | boolean | null | Wird bei neuen Healthchecks vorausgewählt |
data.options | object | Einstellungen je Typ. Geheimnisse sind gekürzt, außer mit include_secrets=true. |
data.created_at | datetime | null | Angelegt |
data.last_used_at | datetime | null | Zuletzt benutzt |
data.uses | integer | Anzahl Nachrichten |
Mögliche Fehler: 401403422429 Fehlercodes
/integrations/{id}
Einzelne Integration
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
include_secrets | Query, string | Tokens und URLs vollständig anzeigen Werte: true, false. |
curl "https://ipv64.net/api/v2/integrations/12" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID, 0 = Account-E-Mail |
data.type | string | Art Werte: account_email, telegram, gotify, ntfy, pushover, discord, webhook, email, sms, app. |
data.name | string | Name |
data.status | string | E-Mail und SMS müssen erst bestätigt werden Werte: active, pending_verification. |
data.default | boolean | null | Wird bei neuen Healthchecks vorausgewählt |
data.options | object | Einstellungen je Typ. Geheimnisse sind gekürzt, außer mit include_secrets=true. |
data.created_at | datetime | null | Angelegt |
data.last_used_at | datetime | null | Zuletzt benutzt |
data.uses | integer | Anzahl Nachrichten |
Mögliche Fehler: 400401404429 Fehlercodes
/integrations/{id}
Name oder Vorauswahl ändern
Für andere Änderungen die Integration neu anlegen.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Name | |
default | boolean | Vorauswahl |
curl -X PATCH "https://ipv64.net/api/v2/integrations/12" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"default":true}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID, 0 = Account-E-Mail |
data.type | string | Art Werte: account_email, telegram, gotify, ntfy, pushover, discord, webhook, email, sms, app. |
data.name | string | Name |
data.status | string | E-Mail und SMS müssen erst bestätigt werden Werte: active, pending_verification. |
data.default | boolean | null | Wird bei neuen Healthchecks vorausgewählt |
data.options | object | Einstellungen je Typ. Geheimnisse sind gekürzt, außer mit include_secrets=true. |
data.created_at | datetime | null | Angelegt |
data.last_used_at | datetime | null | Zuletzt benutzt |
data.uses | integer | Anzahl Nachrichten |
Mögliche Fehler: 401404422429 Fehlercodes
/integrations/{id}
Integration löschen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
curl -X DELETE "https://ipv64.net/api/v2/integrations/12" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404429 Fehlercodes
/integrations/{id}/test
Testnachricht senden
Mit der ID 0 geht die Nachricht an die Account-E-Mail. Höchstens eine pro 30 Sekunden und Integration.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
curl -X POST "https://ipv64.net/api/v2/integrations/12/test" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.sent | boolean | Gesendet |
Mögliche Fehler: 401404409429 Fehlercodes
Policies schalten Records automatisch auf ein Ersatzziel, wenn Healthchecks ausfallen. {id} ist die Policy-ID.
/failover/policies
Alle Policies
curl "https://ipv64.net/api/v2/failover/policies" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | string | Policy-ID (16 Zeichen) |
data[].name | string | Name |
data[].status | string | pending = wird eingerichtet, active = überwacht, failed_over = Ersatz aktiv, paused, failover_requested / fallback_requested = Umschaltung läuft Werte: pending, active, failed_over, paused, failover_requested, fallback_requested. |
data[].manual | boolean | Letzte Umschaltung war manuell |
data[].mode | string | auto_failover = automatisch umschalten, manuell zurück; auto_failover_and_fallback = beides automatisch; manual = nur manuell Werte: auto_failover, auto_failover_and_fallback, manual. |
data[].fallback_requires_all | boolean | Rückschaltung erst, wenn alle Monitore wieder UP sind |
data[].linking | string | and = alle Monitore müssen DOWN sein, or = einer reicht Werte: and, or. |
data[].notifications_enabled | boolean | Benachrichtigungen aktiv |
data[].integrations | integer[] | Integrationen für Benachrichtigungen |
data[].monitors_down | integer | Anzahl Monitore, die gerade als DOWN zählen |
data[].last_check_at | datetime | null | Letzte Prüfung |
data[].monitors | object[] | |
data[].monitors[].healthcheck | string | Healthcheck-Token |
data[].monitors[].name | string | Name |
data[].monitors[].negate | boolean | Umgekehrt werten (UP zählt als DOWN) |
data[].monitors[].healthcheck_status | string | null | Aktueller Status |
data[].rules | object[] | |
data[].rules[].record | string | Record-Token des geschützten Records |
data[].rules[].fqdn | string | null | Name |
data[].rules[].record_type | string | A oder AAAA |
data[].rules[].state | string | Zustand Werte: standby, failed_over. |
data[].rules[].target | object | |
data[].rules[].target.kind | string | Art des Ziels Werte: ip, record, offline_page. |
data[].rules[].target.ip | string | Ersatz-IP |
data[].rules[].target.record | string | Ziel-Record-Token |
data[].rules[].target.offline_page | string | default oder Offline-Page-ID |
Mögliche Fehler: 401429 Fehlercodes
/failover/policies
Policy anlegen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Name | |
mode | string | Umschaltverhalten Werte: auto_failover, auto_failover_and_fallback, manual. | |
fallback_requires_all | boolean | Rückschaltung erst, wenn alle Monitore UP sind | |
linking | string | Verknüpfung der Monitore Werte: and, or. | |
notifications_enabled | boolean | Benachrichtigungen | |
integrations | integer[] | Integrationen, 0 = Account-E-Mail |
curl -X POST "https://ipv64.net/api/v2/failover/policies" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Webserver","mode":"auto_failover_and_fallback"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Policy-ID (16 Zeichen) |
data.name | string | Name |
data.status | string | pending = wird eingerichtet, active = überwacht, failed_over = Ersatz aktiv, paused, failover_requested / fallback_requested = Umschaltung läuft Werte: pending, active, failed_over, paused, failover_requested, fallback_requested. |
data.manual | boolean | Letzte Umschaltung war manuell |
data.mode | string | auto_failover = automatisch umschalten, manuell zurück; auto_failover_and_fallback = beides automatisch; manual = nur manuell Werte: auto_failover, auto_failover_and_fallback, manual. |
data.fallback_requires_all | boolean | Rückschaltung erst, wenn alle Monitore wieder UP sind |
data.linking | string | and = alle Monitore müssen DOWN sein, or = einer reicht Werte: and, or. |
data.notifications_enabled | boolean | Benachrichtigungen aktiv |
data.integrations | integer[] | Integrationen für Benachrichtigungen |
data.monitors_down | integer | Anzahl Monitore, die gerade als DOWN zählen |
data.last_check_at | datetime | null | Letzte Prüfung |
data.monitors | object[] | |
data.monitors[].healthcheck | string | Healthcheck-Token |
data.monitors[].name | string | Name |
data.monitors[].negate | boolean | Umgekehrt werten (UP zählt als DOWN) |
data.monitors[].healthcheck_status | string | null | Aktueller Status |
data.rules | object[] | |
data.rules[].record | string | Record-Token des geschützten Records |
data.rules[].fqdn | string | null | Name |
data.rules[].record_type | string | A oder AAAA |
data.rules[].state | string | Zustand Werte: standby, failed_over. |
data.rules[].target | object | |
data.rules[].target.kind | string | Art des Ziels Werte: ip, record, offline_page. |
data.rules[].target.ip | string | Ersatz-IP |
data.rules[].target.record | string | Ziel-Record-Token |
data.rules[].target.offline_page | string | default oder Offline-Page-ID |
Mögliche Fehler: 401403422429 Fehlercodes
/failover/policies/{id}
Einzelne Policy
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
curl "https://ipv64.net/api/v2/failover/policies/12" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Policy-ID (16 Zeichen) |
data.name | string | Name |
data.status | string | pending = wird eingerichtet, active = überwacht, failed_over = Ersatz aktiv, paused, failover_requested / fallback_requested = Umschaltung läuft Werte: pending, active, failed_over, paused, failover_requested, fallback_requested. |
data.manual | boolean | Letzte Umschaltung war manuell |
data.mode | string | auto_failover = automatisch umschalten, manuell zurück; auto_failover_and_fallback = beides automatisch; manual = nur manuell Werte: auto_failover, auto_failover_and_fallback, manual. |
data.fallback_requires_all | boolean | Rückschaltung erst, wenn alle Monitore wieder UP sind |
data.linking | string | and = alle Monitore müssen DOWN sein, or = einer reicht Werte: and, or. |
data.notifications_enabled | boolean | Benachrichtigungen aktiv |
data.integrations | integer[] | Integrationen für Benachrichtigungen |
data.monitors_down | integer | Anzahl Monitore, die gerade als DOWN zählen |
data.last_check_at | datetime | null | Letzte Prüfung |
data.monitors | object[] | |
data.monitors[].healthcheck | string | Healthcheck-Token |
data.monitors[].name | string | Name |
data.monitors[].negate | boolean | Umgekehrt werten (UP zählt als DOWN) |
data.monitors[].healthcheck_status | string | null | Aktueller Status |
data.rules | object[] | |
data.rules[].record | string | Record-Token des geschützten Records |
data.rules[].fqdn | string | null | Name |
data.rules[].record_type | string | A oder AAAA |
data.rules[].state | string | Zustand Werte: standby, failed_over. |
data.rules[].target | object | |
data.rules[].target.kind | string | Art des Ziels Werte: ip, record, offline_page. |
data.rules[].target.ip | string | Ersatz-IP |
data.rules[].target.record | string | Ziel-Record-Token |
data.rules[].target.offline_page | string | default oder Offline-Page-ID |
Mögliche Fehler: 401404429 Fehlercodes
/failover/policies/{id}
Policy ändern
linking kann während eines aktiven Failovers nicht geändert werden.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Name | |
mode | string | Umschaltverhalten Werte: auto_failover, auto_failover_and_fallback, manual. | |
fallback_requires_all | boolean | Rückschaltung erst, wenn alle Monitore UP sind | |
linking | string | Verknüpfung der Monitore Werte: and, or. | |
notifications_enabled | boolean | Benachrichtigungen | |
integrations | integer[] | Integrationen, 0 = Account-E-Mail |
curl -X PATCH "https://ipv64.net/api/v2/failover/policies/12" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"notifications_enabled":false}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Policy-ID (16 Zeichen) |
data.name | string | Name |
data.status | string | pending = wird eingerichtet, active = überwacht, failed_over = Ersatz aktiv, paused, failover_requested / fallback_requested = Umschaltung läuft Werte: pending, active, failed_over, paused, failover_requested, fallback_requested. |
data.manual | boolean | Letzte Umschaltung war manuell |
data.mode | string | auto_failover = automatisch umschalten, manuell zurück; auto_failover_and_fallback = beides automatisch; manual = nur manuell Werte: auto_failover, auto_failover_and_fallback, manual. |
data.fallback_requires_all | boolean | Rückschaltung erst, wenn alle Monitore wieder UP sind |
data.linking | string | and = alle Monitore müssen DOWN sein, or = einer reicht Werte: and, or. |
data.notifications_enabled | boolean | Benachrichtigungen aktiv |
data.integrations | integer[] | Integrationen für Benachrichtigungen |
data.monitors_down | integer | Anzahl Monitore, die gerade als DOWN zählen |
data.last_check_at | datetime | null | Letzte Prüfung |
data.monitors | object[] | |
data.monitors[].healthcheck | string | Healthcheck-Token |
data.monitors[].name | string | Name |
data.monitors[].negate | boolean | Umgekehrt werten (UP zählt als DOWN) |
data.monitors[].healthcheck_status | string | null | Aktueller Status |
data.rules | object[] | |
data.rules[].record | string | Record-Token des geschützten Records |
data.rules[].fqdn | string | null | Name |
data.rules[].record_type | string | A oder AAAA |
data.rules[].state | string | Zustand Werte: standby, failed_over. |
data.rules[].target | object | |
data.rules[].target.kind | string | Art des Ziels Werte: ip, record, offline_page. |
data.rules[].target.ip | string | Ersatz-IP |
data.rules[].target.record | string | Ziel-Record-Token |
data.rules[].target.offline_page | string | default oder Offline-Page-ID |
Mögliche Fehler: 401404409422429 Fehlercodes
/failover/policies/{id}
Policy löschen
Nicht möglich, solange der Failover aktiv ist.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
curl -X DELETE "https://ipv64.net/api/v2/failover/policies/12" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404409429 Fehlercodes
/failover/policies/{id}/pause
Pausieren
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
curl -X POST "https://ipv64.net/api/v2/failover/policies/12/pause" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Policy-ID (16 Zeichen) |
data.name | string | Name |
data.status | string | pending = wird eingerichtet, active = überwacht, failed_over = Ersatz aktiv, paused, failover_requested / fallback_requested = Umschaltung läuft Werte: pending, active, failed_over, paused, failover_requested, fallback_requested. |
data.manual | boolean | Letzte Umschaltung war manuell |
data.mode | string | auto_failover = automatisch umschalten, manuell zurück; auto_failover_and_fallback = beides automatisch; manual = nur manuell Werte: auto_failover, auto_failover_and_fallback, manual. |
data.fallback_requires_all | boolean | Rückschaltung erst, wenn alle Monitore wieder UP sind |
data.linking | string | and = alle Monitore müssen DOWN sein, or = einer reicht Werte: and, or. |
data.notifications_enabled | boolean | Benachrichtigungen aktiv |
data.integrations | integer[] | Integrationen für Benachrichtigungen |
data.monitors_down | integer | Anzahl Monitore, die gerade als DOWN zählen |
data.last_check_at | datetime | null | Letzte Prüfung |
data.monitors | object[] | |
data.monitors[].healthcheck | string | Healthcheck-Token |
data.monitors[].name | string | Name |
data.monitors[].negate | boolean | Umgekehrt werten (UP zählt als DOWN) |
data.monitors[].healthcheck_status | string | null | Aktueller Status |
data.rules | object[] | |
data.rules[].record | string | Record-Token des geschützten Records |
data.rules[].fqdn | string | null | Name |
data.rules[].record_type | string | A oder AAAA |
data.rules[].state | string | Zustand Werte: standby, failed_over. |
data.rules[].target | object | |
data.rules[].target.kind | string | Art des Ziels Werte: ip, record, offline_page. |
data.rules[].target.ip | string | Ersatz-IP |
data.rules[].target.record | string | Ziel-Record-Token |
data.rules[].target.offline_page | string | default oder Offline-Page-ID |
Mögliche Fehler: 401404409429 Fehlercodes
/failover/policies/{id}/resume
Fortsetzen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
curl -X POST "https://ipv64.net/api/v2/failover/policies/12/resume" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Policy-ID (16 Zeichen) |
data.name | string | Name |
data.status | string | pending = wird eingerichtet, active = überwacht, failed_over = Ersatz aktiv, paused, failover_requested / fallback_requested = Umschaltung läuft Werte: pending, active, failed_over, paused, failover_requested, fallback_requested. |
data.manual | boolean | Letzte Umschaltung war manuell |
data.mode | string | auto_failover = automatisch umschalten, manuell zurück; auto_failover_and_fallback = beides automatisch; manual = nur manuell Werte: auto_failover, auto_failover_and_fallback, manual. |
data.fallback_requires_all | boolean | Rückschaltung erst, wenn alle Monitore wieder UP sind |
data.linking | string | and = alle Monitore müssen DOWN sein, or = einer reicht Werte: and, or. |
data.notifications_enabled | boolean | Benachrichtigungen aktiv |
data.integrations | integer[] | Integrationen für Benachrichtigungen |
data.monitors_down | integer | Anzahl Monitore, die gerade als DOWN zählen |
data.last_check_at | datetime | null | Letzte Prüfung |
data.monitors | object[] | |
data.monitors[].healthcheck | string | Healthcheck-Token |
data.monitors[].name | string | Name |
data.monitors[].negate | boolean | Umgekehrt werten (UP zählt als DOWN) |
data.monitors[].healthcheck_status | string | null | Aktueller Status |
data.rules | object[] | |
data.rules[].record | string | Record-Token des geschützten Records |
data.rules[].fqdn | string | null | Name |
data.rules[].record_type | string | A oder AAAA |
data.rules[].state | string | Zustand Werte: standby, failed_over. |
data.rules[].target | object | |
data.rules[].target.kind | string | Art des Ziels Werte: ip, record, offline_page. |
data.rules[].target.ip | string | Ersatz-IP |
data.rules[].target.record | string | Ziel-Record-Token |
data.rules[].target.offline_page | string | default oder Offline-Page-ID |
Mögliche Fehler: 401404429 Fehlercodes
/failover/policies/{id}/failover
Manuell umschalten
asynchron Nur im Status active.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
curl -X POST "https://ipv64.net/api/v2/failover/policies/12/failover" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Policy-ID (16 Zeichen) |
data.name | string | Name |
data.status | string | pending = wird eingerichtet, active = überwacht, failed_over = Ersatz aktiv, paused, failover_requested / fallback_requested = Umschaltung läuft Werte: pending, active, failed_over, paused, failover_requested, fallback_requested. |
data.manual | boolean | Letzte Umschaltung war manuell |
data.mode | string | auto_failover = automatisch umschalten, manuell zurück; auto_failover_and_fallback = beides automatisch; manual = nur manuell Werte: auto_failover, auto_failover_and_fallback, manual. |
data.fallback_requires_all | boolean | Rückschaltung erst, wenn alle Monitore wieder UP sind |
data.linking | string | and = alle Monitore müssen DOWN sein, or = einer reicht Werte: and, or. |
data.notifications_enabled | boolean | Benachrichtigungen aktiv |
data.integrations | integer[] | Integrationen für Benachrichtigungen |
data.monitors_down | integer | Anzahl Monitore, die gerade als DOWN zählen |
data.last_check_at | datetime | null | Letzte Prüfung |
data.monitors | object[] | |
data.monitors[].healthcheck | string | Healthcheck-Token |
data.monitors[].name | string | Name |
data.monitors[].negate | boolean | Umgekehrt werten (UP zählt als DOWN) |
data.monitors[].healthcheck_status | string | null | Aktueller Status |
data.rules | object[] | |
data.rules[].record | string | Record-Token des geschützten Records |
data.rules[].fqdn | string | null | Name |
data.rules[].record_type | string | A oder AAAA |
data.rules[].state | string | Zustand Werte: standby, failed_over. |
data.rules[].target | object | |
data.rules[].target.kind | string | Art des Ziels Werte: ip, record, offline_page. |
data.rules[].target.ip | string | Ersatz-IP |
data.rules[].target.record | string | Ziel-Record-Token |
data.rules[].target.offline_page | string | default oder Offline-Page-ID |
Mögliche Fehler: 401404409429 Fehlercodes
/failover/policies/{id}/fallback
Manuell zurückschalten
asynchron Nur im Status failed_over.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
curl -X POST "https://ipv64.net/api/v2/failover/policies/12/fallback" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Policy-ID (16 Zeichen) |
data.name | string | Name |
data.status | string | pending = wird eingerichtet, active = überwacht, failed_over = Ersatz aktiv, paused, failover_requested / fallback_requested = Umschaltung läuft Werte: pending, active, failed_over, paused, failover_requested, fallback_requested. |
data.manual | boolean | Letzte Umschaltung war manuell |
data.mode | string | auto_failover = automatisch umschalten, manuell zurück; auto_failover_and_fallback = beides automatisch; manual = nur manuell Werte: auto_failover, auto_failover_and_fallback, manual. |
data.fallback_requires_all | boolean | Rückschaltung erst, wenn alle Monitore wieder UP sind |
data.linking | string | and = alle Monitore müssen DOWN sein, or = einer reicht Werte: and, or. |
data.notifications_enabled | boolean | Benachrichtigungen aktiv |
data.integrations | integer[] | Integrationen für Benachrichtigungen |
data.monitors_down | integer | Anzahl Monitore, die gerade als DOWN zählen |
data.last_check_at | datetime | null | Letzte Prüfung |
data.monitors | object[] | |
data.monitors[].healthcheck | string | Healthcheck-Token |
data.monitors[].name | string | Name |
data.monitors[].negate | boolean | Umgekehrt werten (UP zählt als DOWN) |
data.monitors[].healthcheck_status | string | null | Aktueller Status |
data.rules | object[] | |
data.rules[].record | string | Record-Token des geschützten Records |
data.rules[].fqdn | string | null | Name |
data.rules[].record_type | string | A oder AAAA |
data.rules[].state | string | Zustand Werte: standby, failed_over. |
data.rules[].target | object | |
data.rules[].target.kind | string | Art des Ziels Werte: ip, record, offline_page. |
data.rules[].target.ip | string | Ersatz-IP |
data.rules[].target.record | string | Ziel-Record-Token |
data.rules[].target.offline_page | string | default oder Offline-Page-ID |
Mögliche Fehler: 401404409429 Fehlercodes
/failover/policies/{id}/monitors
Monitor hinzufügen
Ein Healthcheck, der den Failover auslöst.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
healthcheck | string | Pflicht | Healthcheck-Token |
negate | boolean | Umgekehrt werten |
curl -X POST "https://ipv64.net/api/v2/failover/policies/12/monitors" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"healthcheck":"Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Policy-ID (16 Zeichen) |
data.name | string | Name |
data.status | string | pending = wird eingerichtet, active = überwacht, failed_over = Ersatz aktiv, paused, failover_requested / fallback_requested = Umschaltung läuft Werte: pending, active, failed_over, paused, failover_requested, fallback_requested. |
data.manual | boolean | Letzte Umschaltung war manuell |
data.mode | string | auto_failover = automatisch umschalten, manuell zurück; auto_failover_and_fallback = beides automatisch; manual = nur manuell Werte: auto_failover, auto_failover_and_fallback, manual. |
data.fallback_requires_all | boolean | Rückschaltung erst, wenn alle Monitore wieder UP sind |
data.linking | string | and = alle Monitore müssen DOWN sein, or = einer reicht Werte: and, or. |
data.notifications_enabled | boolean | Benachrichtigungen aktiv |
data.integrations | integer[] | Integrationen für Benachrichtigungen |
data.monitors_down | integer | Anzahl Monitore, die gerade als DOWN zählen |
data.last_check_at | datetime | null | Letzte Prüfung |
data.monitors | object[] | |
data.monitors[].healthcheck | string | Healthcheck-Token |
data.monitors[].name | string | Name |
data.monitors[].negate | boolean | Umgekehrt werten (UP zählt als DOWN) |
data.monitors[].healthcheck_status | string | null | Aktueller Status |
data.rules | object[] | |
data.rules[].record | string | Record-Token des geschützten Records |
data.rules[].fqdn | string | null | Name |
data.rules[].record_type | string | A oder AAAA |
data.rules[].state | string | Zustand Werte: standby, failed_over. |
data.rules[].target | object | |
data.rules[].target.kind | string | Art des Ziels Werte: ip, record, offline_page. |
data.rules[].target.ip | string | Ersatz-IP |
data.rules[].target.record | string | Ziel-Record-Token |
data.rules[].target.offline_page | string | default oder Offline-Page-ID |
Mögliche Fehler: 401403404409422429 Fehlercodes
/failover/policies/{id}/monitors/{token}
Monitor entfernen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X DELETE "https://ipv64.net/api/v2/failover/policies/12/monitors/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404409429 Fehlercodes
/failover/policies/{id}/rules
Regel hinzufügen
Schützt einen A- oder AAAA-Record. Als Ziel genau eines angeben: target_ip, target_record oder offline_page. Bei offline_page zeigt der Record im Failover auf die IPv64-Offline-Seite.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
record | string | Pflicht | Record-ID oder -Token des geschützten Records |
target_ip | string | Ersatz-IP derselben Familie | |
target_record | string | Anderer eigener Record, dessen IP übernommen wird | |
offline_page | string | default oder Offline-Page-ID |
curl -X POST "https://ipv64.net/api/v2/failover/policies/12/rules" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"record":"4711","target_ip":"198.51.100.5"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Policy-ID (16 Zeichen) |
data.name | string | Name |
data.status | string | pending = wird eingerichtet, active = überwacht, failed_over = Ersatz aktiv, paused, failover_requested / fallback_requested = Umschaltung läuft Werte: pending, active, failed_over, paused, failover_requested, fallback_requested. |
data.manual | boolean | Letzte Umschaltung war manuell |
data.mode | string | auto_failover = automatisch umschalten, manuell zurück; auto_failover_and_fallback = beides automatisch; manual = nur manuell Werte: auto_failover, auto_failover_and_fallback, manual. |
data.fallback_requires_all | boolean | Rückschaltung erst, wenn alle Monitore wieder UP sind |
data.linking | string | and = alle Monitore müssen DOWN sein, or = einer reicht Werte: and, or. |
data.notifications_enabled | boolean | Benachrichtigungen aktiv |
data.integrations | integer[] | Integrationen für Benachrichtigungen |
data.monitors_down | integer | Anzahl Monitore, die gerade als DOWN zählen |
data.last_check_at | datetime | null | Letzte Prüfung |
data.monitors | object[] | |
data.monitors[].healthcheck | string | Healthcheck-Token |
data.monitors[].name | string | Name |
data.monitors[].negate | boolean | Umgekehrt werten (UP zählt als DOWN) |
data.monitors[].healthcheck_status | string | null | Aktueller Status |
data.rules | object[] | |
data.rules[].record | string | Record-Token des geschützten Records |
data.rules[].fqdn | string | null | Name |
data.rules[].record_type | string | A oder AAAA |
data.rules[].state | string | Zustand Werte: standby, failed_over. |
data.rules[].target | object | |
data.rules[].target.kind | string | Art des Ziels Werte: ip, record, offline_page. |
data.rules[].target.ip | string | Ersatz-IP |
data.rules[].target.record | string | Ziel-Record-Token |
data.rules[].target.offline_page | string | default oder Offline-Page-ID |
Mögliche Fehler: 401403404409422429 Fehlercodes
/failover/policies/{id}/rules/{record}
Regel entfernen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
record | Pfad, string | Pflicht | Record-ID oder Record-Token |
curl -X DELETE "https://ipv64.net/api/v2/failover/policies/12/rules/4711" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404409429 Fehlercodes
Öffentliche Statusseiten unter https://ipv64.net/status/<slug>.
/status-pages
Alle Statusseiten
curl "https://ipv64.net/api/v2/status-pages" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | ID |
data[].name | string | Titel |
data[].slug | string | Adresse hinter /status/ |
data[].url | string | Öffentliche Adresse |
data[].description | string | Beschreibung |
data[].password_protected | boolean | Mit Passwort geschützt |
data[].design | integer | Design 1 bis 4 |
data[].autorefresh | boolean | Seite lädt automatisch neu |
data[].healthchecks | string[] | Angezeigte Healthchecks in dieser Reihenfolge |
data[].created_at | datetime | null | Angelegt |
data[].last_viewed_at | datetime | null | Zuletzt aufgerufen |
Mögliche Fehler: 401429 Fehlercodes
/status-pages
Statusseite anlegen
Ohne slug wird eine zufällige Adresse vergeben.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Titel | |
description | string | Beschreibung | |
slug | string | Adresse, 3 bis 128 Zeichen a-z, A-Z, 0-9 | |
password | string | Passwort, leer = öffentlich | |
design | integer | Design Bereich: 1 bis 4. | |
autorefresh | boolean | Automatisch neu laden | |
healthchecks | string[] | Angezeigte Healthchecks |
curl -X POST "https://ipv64.net/api/v2/status-pages" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Mein Status","healthchecks":["Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z"]}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.name | string | Titel |
data.slug | string | Adresse hinter /status/ |
data.url | string | Öffentliche Adresse |
data.description | string | Beschreibung |
data.password_protected | boolean | Mit Passwort geschützt |
data.design | integer | Design 1 bis 4 |
data.autorefresh | boolean | Seite lädt automatisch neu |
data.healthchecks | string[] | Angezeigte Healthchecks in dieser Reihenfolge |
data.created_at | datetime | null | Angelegt |
data.last_viewed_at | datetime | null | Zuletzt aufgerufen |
Mögliche Fehler: 401409422429 Fehlercodes
/status-pages/{id}
Einzelne Statusseite
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
curl "https://ipv64.net/api/v2/status-pages/12" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.name | string | Titel |
data.slug | string | Adresse hinter /status/ |
data.url | string | Öffentliche Adresse |
data.description | string | Beschreibung |
data.password_protected | boolean | Mit Passwort geschützt |
data.design | integer | Design 1 bis 4 |
data.autorefresh | boolean | Seite lädt automatisch neu |
data.healthchecks | string[] | Angezeigte Healthchecks in dieser Reihenfolge |
data.created_at | datetime | null | Angelegt |
data.last_viewed_at | datetime | null | Zuletzt aufgerufen |
Mögliche Fehler: 401404429 Fehlercodes
/status-pages/{id}
Statusseite ändern
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Titel | |
description | string | Beschreibung | |
slug | string | Adresse, 3 bis 128 Zeichen a-z, A-Z, 0-9 | |
password | string | Passwort, leer = öffentlich | |
design | integer | Design Bereich: 1 bis 4. | |
autorefresh | boolean | Automatisch neu laden | |
healthchecks | string[] | Angezeigte Healthchecks |
curl -X PATCH "https://ipv64.net/api/v2/status-pages/12" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"slug":"meinstatus","design":2}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.name | string | Titel |
data.slug | string | Adresse hinter /status/ |
data.url | string | Öffentliche Adresse |
data.description | string | Beschreibung |
data.password_protected | boolean | Mit Passwort geschützt |
data.design | integer | Design 1 bis 4 |
data.autorefresh | boolean | Seite lädt automatisch neu |
data.healthchecks | string[] | Angezeigte Healthchecks in dieser Reihenfolge |
data.created_at | datetime | null | Angelegt |
data.last_viewed_at | datetime | null | Zuletzt aufgerufen |
Mögliche Fehler: 401404409422429 Fehlercodes
/status-pages/{id}
Statusseite löschen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
curl -X DELETE "https://ipv64.net/api/v2/status-pages/12" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404429 Fehlercodes
Eigene Wartungsseiten als Ziel für den DNS-Failover. {id} ist die Offline-Page-ID.
/offline-pages
Alle Offline-Pages
curl "https://ipv64.net/api/v2/offline-pages" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | string | Offline-Page-ID (16 Zeichen) |
data[].name | string | Überschrift |
data[].domain | string | Domain, unter der die Seite erscheint |
data[].email | string | Kontakt-E-Mail |
data[].phone | string | Telefon |
data[].alternative_url | string | Ausweichadresse |
data[].text | string | Text als HTML |
data[].icon_url | string | null | Logo |
data[].views | integer | Aufrufe |
data[].in_use_by_policy | string | null | Failover-Policy, die diese Seite nutzt |
data[].active | boolean | Wird gerade ausgeliefert |
data[].preview_url | string | Vorschau |
Mögliche Fehler: 401429 Fehlercodes
/offline-pages
Offline-Page anlegen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Überschrift | |
domain | string | Domain, für die die Seite gilt | |
email | string | Kontakt-E-Mail | |
phone | string | Telefon, Ziffern und optional führendes + | |
alternative_url | string | Ausweichadresse | |
text | string | Text. Zeilenumbrüche bleiben erhalten, HTML wird maskiert. |
curl -X POST "https://ipv64.net/api/v2/offline-pages" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Wartungsarbeiten","domain":"www.example.com","text":"Wir sind gleich wieder da."}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Offline-Page-ID (16 Zeichen) |
data.name | string | Überschrift |
data.domain | string | Domain, unter der die Seite erscheint |
data.email | string | Kontakt-E-Mail |
data.phone | string | Telefon |
data.alternative_url | string | Ausweichadresse |
data.text | string | Text als HTML |
data.icon_url | string | null | Logo |
data.views | integer | Aufrufe |
data.in_use_by_policy | string | null | Failover-Policy, die diese Seite nutzt |
data.active | boolean | Wird gerade ausgeliefert |
data.preview_url | string | Vorschau |
Mögliche Fehler: 401403422429 Fehlercodes
/offline-pages/{id}
Einzelne Offline-Page
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
curl "https://ipv64.net/api/v2/offline-pages/12" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Offline-Page-ID (16 Zeichen) |
data.name | string | Überschrift |
data.domain | string | Domain, unter der die Seite erscheint |
data.email | string | Kontakt-E-Mail |
data.phone | string | Telefon |
data.alternative_url | string | Ausweichadresse |
data.text | string | Text als HTML |
data.icon_url | string | null | Logo |
data.views | integer | Aufrufe |
data.in_use_by_policy | string | null | Failover-Policy, die diese Seite nutzt |
data.active | boolean | Wird gerade ausgeliefert |
data.preview_url | string | Vorschau |
Mögliche Fehler: 401404429 Fehlercodes
/offline-pages/{id}
Offline-Page ändern
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Überschrift | |
domain | string | Domain, für die die Seite gilt | |
email | string | Kontakt-E-Mail | |
phone | string | Telefon, Ziffern und optional führendes + | |
alternative_url | string | Ausweichadresse | |
text | string | Text. Zeilenumbrüche bleiben erhalten, HTML wird maskiert. |
curl -X PATCH "https://ipv64.net/api/v2/offline-pages/12" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Wartung bis 14 Uhr."}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Offline-Page-ID (16 Zeichen) |
data.name | string | Überschrift |
data.domain | string | Domain, unter der die Seite erscheint |
data.email | string | Kontakt-E-Mail |
data.phone | string | Telefon |
data.alternative_url | string | Ausweichadresse |
data.text | string | Text als HTML |
data.icon_url | string | null | Logo |
data.views | integer | Aufrufe |
data.in_use_by_policy | string | null | Failover-Policy, die diese Seite nutzt |
data.active | boolean | Wird gerade ausgeliefert |
data.preview_url | string | Vorschau |
Mögliche Fehler: 401404422429 Fehlercodes
/offline-pages/{id}
Offline-Page löschen
Nicht möglich, solange eine Failover-Regel sie nutzt.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
curl -X DELETE "https://ipv64.net/api/v2/offline-pages/12" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404409429 Fehlercodes
/offline-pages/{id}/icon
Logo hochladen
Als multipart/form-data im Feld icon. JPEG, PNG oder WebP, höchstens 1 MB und 1024 x 1024 Pixel.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
icon | file | Pflicht | Bilddatei |
curl -X POST "https://ipv64.net/api/v2/offline-pages/12/icon" \
-H "Authorization: Bearer DEIN_API_KEY" \
-F "icon=@logo.png"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Offline-Page-ID (16 Zeichen) |
data.name | string | Überschrift |
data.domain | string | Domain, unter der die Seite erscheint |
data.email | string | Kontakt-E-Mail |
data.phone | string | Telefon |
data.alternative_url | string | Ausweichadresse |
data.text | string | Text als HTML |
data.icon_url | string | null | Logo |
data.views | integer | Aufrufe |
data.in_use_by_policy | string | null | Failover-Policy, die diese Seite nutzt |
data.active | boolean | Wird gerade ausgeliefert |
data.preview_url | string | Vorschau |
Mögliche Fehler: 401404413415422429 Fehlercodes
/offline-pages/{id}/icon
Logo löschen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID der Ressource |
curl -X DELETE "https://ipv64.net/api/v2/offline-pages/12/icon" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404429 Fehlercodes
Reverse Proxy und Portmapper. {token} ist die CDN-ID. Viele Änderungen setzt der CDN-Dienst im Hintergrund um, die Antwort ist dann 202 und pending zeigt den Fortschritt.
/cdn
Alle CDN-Domains
curl "https://ipv64.net/api/v2/cdn" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | string | CDN-ID |
data[].domain | string | null | Domain |
data[].domain_id | integer | Domain-ID |
data[].active | boolean | CDN aktiv |
data[].pending | string[] | Offene Arbeiten des CDN-Bots Werte: server_assignment, dns, config_deploy, certificate, server_move, deletion. |
data[].dns_records_enabled | boolean | Mindestens ein Record läuft über das CDN |
data[].server | object | null | |
data[].server.name | string | Name |
data[].server.hostname | string | Hostname |
data[].server.ipv4 | string | IPv4 |
data[].server.ipv6 | string | IPv6 |
data[].proxy | object | |
data[].proxy.state | string | Reverse Proxy Werte: off, on, disabling. |
data[].proxy.frontend | string | null | http, https_redirect (HTTP wird auf HTTPS umgeleitet) oder http_and_https Werte: http, https_redirect, http_and_https. |
data[].proxy.backend | object | |
data[].proxy.backend.scheme | string | Protokoll zu deinem Server Werte: http, https. |
data[].proxy.backend.port | integer | Port deines Servers |
data[].proxy.websocket | boolean | WebSocket-Unterstützung |
data[].proxy.certificate | string | Zertifikat Werte: default, letsencrypt, issuing. |
data[].proxy.caching | object | |
data[].proxy.caching.enabled | boolean | Cache aktiv |
data[].proxy.caching.time_minutes | integer | Cache-Dauer |
data[].proxy.caching.size_mb | integer | Cache-Größe |
data[].proxy.access_list | object | |
data[].proxy.access_list.enabled | boolean | Zugriffsliste aktiv |
data[].proxy.access_list.mode | string | allowlist = nur Einträge erlaubt, denylist = Einträge gesperrt Werte: allowlist, denylist. |
data[].portmapper | object | |
data[].portmapper.state | string | Portmapper Werte: off, on, disabling, suspended_traffic_limit. |
data[].traffic_mb | object | |
data[].traffic_mb.in | number | Eingehend |
data[].traffic_mb.out | number | Ausgehend |
data[].created_at | datetime | null | Angelegt |
Mögliche Fehler: 401429 Fehlercodes
/cdn
Domain ins CDN aufnehmen
Danach wird automatisch ein CDN-Server zugewiesen.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
domain | string | Pflicht | Domain-ID oder Name |
curl -X POST "https://ipv64.net/api/v2/cdn" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain":"beispiel.ipv64.de"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | CDN-ID |
data.domain | string | null | Domain |
data.domain_id | integer | Domain-ID |
data.active | boolean | CDN aktiv |
data.pending | string[] | Offene Arbeiten des CDN-Bots Werte: server_assignment, dns, config_deploy, certificate, server_move, deletion. |
data.dns_records_enabled | boolean | Mindestens ein Record läuft über das CDN |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.ipv4 | string | IPv4 |
data.server.ipv6 | string | IPv6 |
data.proxy | object | |
data.proxy.state | string | Reverse Proxy Werte: off, on, disabling. |
data.proxy.frontend | string | null | http, https_redirect (HTTP wird auf HTTPS umgeleitet) oder http_and_https Werte: http, https_redirect, http_and_https. |
data.proxy.backend | object | |
data.proxy.backend.scheme | string | Protokoll zu deinem Server Werte: http, https. |
data.proxy.backend.port | integer | Port deines Servers |
data.proxy.websocket | boolean | WebSocket-Unterstützung |
data.proxy.certificate | string | Zertifikat Werte: default, letsencrypt, issuing. |
data.proxy.caching | object | |
data.proxy.caching.enabled | boolean | Cache aktiv |
data.proxy.caching.time_minutes | integer | Cache-Dauer |
data.proxy.caching.size_mb | integer | Cache-Größe |
data.proxy.access_list | object | |
data.proxy.access_list.enabled | boolean | Zugriffsliste aktiv |
data.proxy.access_list.mode | string | allowlist = nur Einträge erlaubt, denylist = Einträge gesperrt Werte: allowlist, denylist. |
data.portmapper | object | |
data.portmapper.state | string | Portmapper Werte: off, on, disabling, suspended_traffic_limit. |
data.traffic_mb | object | |
data.traffic_mb.in | number | Eingehend |
data.traffic_mb.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
data.mappings | object[] | |
data.mappings[].id | string | Mapping-ID |
data.mappings[].name | string | Name |
data.mappings[].listen_port | integer | Öffentlicher Port am CDN-Server |
data.mappings[].transport | string | Protokoll Werte: tcp, udp. |
data.mappings[].target_port | integer | Port bei dir |
data.mappings[].record | string | Record-Token des Ziels |
data.mappings[].fqdn | string | null | Name des Ziels |
Mögliche Fehler: 401403409422429 Fehlercodes
/cdn/{token}
CDN-Domain mit Mappings
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | CDN-ID |
data.domain | string | null | Domain |
data.domain_id | integer | Domain-ID |
data.active | boolean | CDN aktiv |
data.pending | string[] | Offene Arbeiten des CDN-Bots Werte: server_assignment, dns, config_deploy, certificate, server_move, deletion. |
data.dns_records_enabled | boolean | Mindestens ein Record läuft über das CDN |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.ipv4 | string | IPv4 |
data.server.ipv6 | string | IPv6 |
data.proxy | object | |
data.proxy.state | string | Reverse Proxy Werte: off, on, disabling. |
data.proxy.frontend | string | null | http, https_redirect (HTTP wird auf HTTPS umgeleitet) oder http_and_https Werte: http, https_redirect, http_and_https. |
data.proxy.backend | object | |
data.proxy.backend.scheme | string | Protokoll zu deinem Server Werte: http, https. |
data.proxy.backend.port | integer | Port deines Servers |
data.proxy.websocket | boolean | WebSocket-Unterstützung |
data.proxy.certificate | string | Zertifikat Werte: default, letsencrypt, issuing. |
data.proxy.caching | object | |
data.proxy.caching.enabled | boolean | Cache aktiv |
data.proxy.caching.time_minutes | integer | Cache-Dauer |
data.proxy.caching.size_mb | integer | Cache-Größe |
data.proxy.access_list | object | |
data.proxy.access_list.enabled | boolean | Zugriffsliste aktiv |
data.proxy.access_list.mode | string | allowlist = nur Einträge erlaubt, denylist = Einträge gesperrt Werte: allowlist, denylist. |
data.portmapper | object | |
data.portmapper.state | string | Portmapper Werte: off, on, disabling, suspended_traffic_limit. |
data.traffic_mb | object | |
data.traffic_mb.in | number | Eingehend |
data.traffic_mb.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
data.mappings | object[] | |
data.mappings[].id | string | Mapping-ID |
data.mappings[].name | string | Name |
data.mappings[].listen_port | integer | Öffentlicher Port am CDN-Server |
data.mappings[].transport | string | Protokoll Werte: tcp, udp. |
data.mappings[].target_port | integer | Port bei dir |
data.mappings[].record | string | Record-Token des Ziels |
data.mappings[].fqdn | string | null | Name des Ziels |
Mögliche Fehler: 401404429 Fehlercodes
/cdn/{token}
Proxy-Einstellungen ändern
Nur mitgeschickte Felder werden geändert. HTTPS im Frontend stösst automatisch ein Let's-Encrypt-Zertifikat an.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
frontend | string | Frontend Werte: http, https_redirect, http_and_https. | |
backend_scheme | string | Protokoll zu deinem Server Werte: http, https. | |
backend_port | integer | Port deines Servers Bereich: 1 bis 65535. | |
websocket | boolean | WebSocket, nur bei aktivem Proxy | |
caching | object | ||
caching.enabled | boolean | Cache | |
caching.time_minutes | integer | 1 bis 600 | |
caching.size_mb | integer | 1 bis Paketlimit | |
access_list | object | ||
access_list.enabled | boolean | Zugriffsliste | |
access_list.mode | string | allowlist oder denylist Werte: allowlist, denylist. |
curl -X PATCH "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"frontend":"https_redirect","backend_port":8080,"caching":{"enabled":true,"time_minutes":60,"size_mb":100}}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | CDN-ID |
data.domain | string | null | Domain |
data.domain_id | integer | Domain-ID |
data.active | boolean | CDN aktiv |
data.pending | string[] | Offene Arbeiten des CDN-Bots Werte: server_assignment, dns, config_deploy, certificate, server_move, deletion. |
data.dns_records_enabled | boolean | Mindestens ein Record läuft über das CDN |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.ipv4 | string | IPv4 |
data.server.ipv6 | string | IPv6 |
data.proxy | object | |
data.proxy.state | string | Reverse Proxy Werte: off, on, disabling. |
data.proxy.frontend | string | null | http, https_redirect (HTTP wird auf HTTPS umgeleitet) oder http_and_https Werte: http, https_redirect, http_and_https. |
data.proxy.backend | object | |
data.proxy.backend.scheme | string | Protokoll zu deinem Server Werte: http, https. |
data.proxy.backend.port | integer | Port deines Servers |
data.proxy.websocket | boolean | WebSocket-Unterstützung |
data.proxy.certificate | string | Zertifikat Werte: default, letsencrypt, issuing. |
data.proxy.caching | object | |
data.proxy.caching.enabled | boolean | Cache aktiv |
data.proxy.caching.time_minutes | integer | Cache-Dauer |
data.proxy.caching.size_mb | integer | Cache-Größe |
data.proxy.access_list | object | |
data.proxy.access_list.enabled | boolean | Zugriffsliste aktiv |
data.proxy.access_list.mode | string | allowlist = nur Einträge erlaubt, denylist = Einträge gesperrt Werte: allowlist, denylist. |
data.portmapper | object | |
data.portmapper.state | string | Portmapper Werte: off, on, disabling, suspended_traffic_limit. |
data.traffic_mb | object | |
data.traffic_mb.in | number | Eingehend |
data.traffic_mb.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
data.mappings | object[] | |
data.mappings[].id | string | Mapping-ID |
data.mappings[].name | string | Name |
data.mappings[].listen_port | integer | Öffentlicher Port am CDN-Server |
data.mappings[].transport | string | Protokoll Werte: tcp, udp. |
data.mappings[].target_port | integer | Port bei dir |
data.mappings[].record | string | Record-Token des Ziels |
data.mappings[].fqdn | string | null | Name des Ziels |
Mögliche Fehler: 401403404409422429 Fehlercodes
/cdn/{token}
Domain aus dem CDN entfernen
asynchron Vorher das CDN für alle Records abschalten.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X DELETE "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | CDN-ID |
data.domain | string | null | Domain |
data.domain_id | integer | Domain-ID |
data.active | boolean | CDN aktiv |
data.pending | string[] | Offene Arbeiten des CDN-Bots Werte: server_assignment, dns, config_deploy, certificate, server_move, deletion. |
data.dns_records_enabled | boolean | Mindestens ein Record läuft über das CDN |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.ipv4 | string | IPv4 |
data.server.ipv6 | string | IPv6 |
data.proxy | object | |
data.proxy.state | string | Reverse Proxy Werte: off, on, disabling. |
data.proxy.frontend | string | null | http, https_redirect (HTTP wird auf HTTPS umgeleitet) oder http_and_https Werte: http, https_redirect, http_and_https. |
data.proxy.backend | object | |
data.proxy.backend.scheme | string | Protokoll zu deinem Server Werte: http, https. |
data.proxy.backend.port | integer | Port deines Servers |
data.proxy.websocket | boolean | WebSocket-Unterstützung |
data.proxy.certificate | string | Zertifikat Werte: default, letsencrypt, issuing. |
data.proxy.caching | object | |
data.proxy.caching.enabled | boolean | Cache aktiv |
data.proxy.caching.time_minutes | integer | Cache-Dauer |
data.proxy.caching.size_mb | integer | Cache-Größe |
data.proxy.access_list | object | |
data.proxy.access_list.enabled | boolean | Zugriffsliste aktiv |
data.proxy.access_list.mode | string | allowlist = nur Einträge erlaubt, denylist = Einträge gesperrt Werte: allowlist, denylist. |
data.portmapper | object | |
data.portmapper.state | string | Portmapper Werte: off, on, disabling, suspended_traffic_limit. |
data.traffic_mb | object | |
data.traffic_mb.in | number | Eingehend |
data.traffic_mb.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
Mögliche Fehler: 401404409429 Fehlercodes
/cdn/{token}/proxy/enable
Reverse Proxy einschalten
asynchron Mindestens ein Record muss über das CDN laufen.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/proxy/enable" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | CDN-ID |
data.domain | string | null | Domain |
data.domain_id | integer | Domain-ID |
data.active | boolean | CDN aktiv |
data.pending | string[] | Offene Arbeiten des CDN-Bots Werte: server_assignment, dns, config_deploy, certificate, server_move, deletion. |
data.dns_records_enabled | boolean | Mindestens ein Record läuft über das CDN |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.ipv4 | string | IPv4 |
data.server.ipv6 | string | IPv6 |
data.proxy | object | |
data.proxy.state | string | Reverse Proxy Werte: off, on, disabling. |
data.proxy.frontend | string | null | http, https_redirect (HTTP wird auf HTTPS umgeleitet) oder http_and_https Werte: http, https_redirect, http_and_https. |
data.proxy.backend | object | |
data.proxy.backend.scheme | string | Protokoll zu deinem Server Werte: http, https. |
data.proxy.backend.port | integer | Port deines Servers |
data.proxy.websocket | boolean | WebSocket-Unterstützung |
data.proxy.certificate | string | Zertifikat Werte: default, letsencrypt, issuing. |
data.proxy.caching | object | |
data.proxy.caching.enabled | boolean | Cache aktiv |
data.proxy.caching.time_minutes | integer | Cache-Dauer |
data.proxy.caching.size_mb | integer | Cache-Größe |
data.proxy.access_list | object | |
data.proxy.access_list.enabled | boolean | Zugriffsliste aktiv |
data.proxy.access_list.mode | string | allowlist = nur Einträge erlaubt, denylist = Einträge gesperrt Werte: allowlist, denylist. |
data.portmapper | object | |
data.portmapper.state | string | Portmapper Werte: off, on, disabling, suspended_traffic_limit. |
data.traffic_mb | object | |
data.traffic_mb.in | number | Eingehend |
data.traffic_mb.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
Mögliche Fehler: 401403404409429 Fehlercodes
/cdn/{token}/proxy/disable
Reverse Proxy ausschalten
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/proxy/disable" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | CDN-ID |
data.domain | string | null | Domain |
data.domain_id | integer | Domain-ID |
data.active | boolean | CDN aktiv |
data.pending | string[] | Offene Arbeiten des CDN-Bots Werte: server_assignment, dns, config_deploy, certificate, server_move, deletion. |
data.dns_records_enabled | boolean | Mindestens ein Record läuft über das CDN |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.ipv4 | string | IPv4 |
data.server.ipv6 | string | IPv6 |
data.proxy | object | |
data.proxy.state | string | Reverse Proxy Werte: off, on, disabling. |
data.proxy.frontend | string | null | http, https_redirect (HTTP wird auf HTTPS umgeleitet) oder http_and_https Werte: http, https_redirect, http_and_https. |
data.proxy.backend | object | |
data.proxy.backend.scheme | string | Protokoll zu deinem Server Werte: http, https. |
data.proxy.backend.port | integer | Port deines Servers |
data.proxy.websocket | boolean | WebSocket-Unterstützung |
data.proxy.certificate | string | Zertifikat Werte: default, letsencrypt, issuing. |
data.proxy.caching | object | |
data.proxy.caching.enabled | boolean | Cache aktiv |
data.proxy.caching.time_minutes | integer | Cache-Dauer |
data.proxy.caching.size_mb | integer | Cache-Größe |
data.proxy.access_list | object | |
data.proxy.access_list.enabled | boolean | Zugriffsliste aktiv |
data.proxy.access_list.mode | string | allowlist = nur Einträge erlaubt, denylist = Einträge gesperrt Werte: allowlist, denylist. |
data.portmapper | object | |
data.portmapper.state | string | Portmapper Werte: off, on, disabling, suspended_traffic_limit. |
data.traffic_mb | object | |
data.traffic_mb.in | number | Eingehend |
data.traffic_mb.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
Mögliche Fehler: 401403404409429 Fehlercodes
/cdn/{token}/portmapper/enable
Portmapper einschalten
asynchron Mindestens ein Record muss über das CDN laufen.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/portmapper/enable" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | CDN-ID |
data.domain | string | null | Domain |
data.domain_id | integer | Domain-ID |
data.active | boolean | CDN aktiv |
data.pending | string[] | Offene Arbeiten des CDN-Bots Werte: server_assignment, dns, config_deploy, certificate, server_move, deletion. |
data.dns_records_enabled | boolean | Mindestens ein Record läuft über das CDN |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.ipv4 | string | IPv4 |
data.server.ipv6 | string | IPv6 |
data.proxy | object | |
data.proxy.state | string | Reverse Proxy Werte: off, on, disabling. |
data.proxy.frontend | string | null | http, https_redirect (HTTP wird auf HTTPS umgeleitet) oder http_and_https Werte: http, https_redirect, http_and_https. |
data.proxy.backend | object | |
data.proxy.backend.scheme | string | Protokoll zu deinem Server Werte: http, https. |
data.proxy.backend.port | integer | Port deines Servers |
data.proxy.websocket | boolean | WebSocket-Unterstützung |
data.proxy.certificate | string | Zertifikat Werte: default, letsencrypt, issuing. |
data.proxy.caching | object | |
data.proxy.caching.enabled | boolean | Cache aktiv |
data.proxy.caching.time_minutes | integer | Cache-Dauer |
data.proxy.caching.size_mb | integer | Cache-Größe |
data.proxy.access_list | object | |
data.proxy.access_list.enabled | boolean | Zugriffsliste aktiv |
data.proxy.access_list.mode | string | allowlist = nur Einträge erlaubt, denylist = Einträge gesperrt Werte: allowlist, denylist. |
data.portmapper | object | |
data.portmapper.state | string | Portmapper Werte: off, on, disabling, suspended_traffic_limit. |
data.traffic_mb | object | |
data.traffic_mb.in | number | Eingehend |
data.traffic_mb.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
Mögliche Fehler: 401403404409429 Fehlercodes
/cdn/{token}/portmapper/disable
Portmapper ausschalten
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/portmapper/disable" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | CDN-ID |
data.domain | string | null | Domain |
data.domain_id | integer | Domain-ID |
data.active | boolean | CDN aktiv |
data.pending | string[] | Offene Arbeiten des CDN-Bots Werte: server_assignment, dns, config_deploy, certificate, server_move, deletion. |
data.dns_records_enabled | boolean | Mindestens ein Record läuft über das CDN |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.ipv4 | string | IPv4 |
data.server.ipv6 | string | IPv6 |
data.proxy | object | |
data.proxy.state | string | Reverse Proxy Werte: off, on, disabling. |
data.proxy.frontend | string | null | http, https_redirect (HTTP wird auf HTTPS umgeleitet) oder http_and_https Werte: http, https_redirect, http_and_https. |
data.proxy.backend | object | |
data.proxy.backend.scheme | string | Protokoll zu deinem Server Werte: http, https. |
data.proxy.backend.port | integer | Port deines Servers |
data.proxy.websocket | boolean | WebSocket-Unterstützung |
data.proxy.certificate | string | Zertifikat Werte: default, letsencrypt, issuing. |
data.proxy.caching | object | |
data.proxy.caching.enabled | boolean | Cache aktiv |
data.proxy.caching.time_minutes | integer | Cache-Dauer |
data.proxy.caching.size_mb | integer | Cache-Größe |
data.proxy.access_list | object | |
data.proxy.access_list.enabled | boolean | Zugriffsliste aktiv |
data.proxy.access_list.mode | string | allowlist = nur Einträge erlaubt, denylist = Einträge gesperrt Werte: allowlist, denylist. |
data.portmapper | object | |
data.portmapper.state | string | Portmapper Werte: off, on, disabling, suspended_traffic_limit. |
data.traffic_mb | object | |
data.traffic_mb.in | number | Eingehend |
data.traffic_mb.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
Mögliche Fehler: 401403404409429 Fehlercodes
/cdn/{token}/redeploy
Konfiguration neu ausrollen
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/redeploy" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | CDN-ID |
data.domain | string | null | Domain |
data.domain_id | integer | Domain-ID |
data.active | boolean | CDN aktiv |
data.pending | string[] | Offene Arbeiten des CDN-Bots Werte: server_assignment, dns, config_deploy, certificate, server_move, deletion. |
data.dns_records_enabled | boolean | Mindestens ein Record läuft über das CDN |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.ipv4 | string | IPv4 |
data.server.ipv6 | string | IPv6 |
data.proxy | object | |
data.proxy.state | string | Reverse Proxy Werte: off, on, disabling. |
data.proxy.frontend | string | null | http, https_redirect (HTTP wird auf HTTPS umgeleitet) oder http_and_https Werte: http, https_redirect, http_and_https. |
data.proxy.backend | object | |
data.proxy.backend.scheme | string | Protokoll zu deinem Server Werte: http, https. |
data.proxy.backend.port | integer | Port deines Servers |
data.proxy.websocket | boolean | WebSocket-Unterstützung |
data.proxy.certificate | string | Zertifikat Werte: default, letsencrypt, issuing. |
data.proxy.caching | object | |
data.proxy.caching.enabled | boolean | Cache aktiv |
data.proxy.caching.time_minutes | integer | Cache-Dauer |
data.proxy.caching.size_mb | integer | Cache-Größe |
data.proxy.access_list | object | |
data.proxy.access_list.enabled | boolean | Zugriffsliste aktiv |
data.proxy.access_list.mode | string | allowlist = nur Einträge erlaubt, denylist = Einträge gesperrt Werte: allowlist, denylist. |
data.portmapper | object | |
data.portmapper.state | string | Portmapper Werte: off, on, disabling, suspended_traffic_limit. |
data.traffic_mb | object | |
data.traffic_mb.in | number | Eingehend |
data.traffic_mb.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
Mögliche Fehler: 401403404409429 Fehlercodes
/cdn/{token}/reset-traffic
Traffic-Zähler der Domain zurücksetzen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/reset-traffic" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | CDN-ID |
data.domain | string | null | Domain |
data.domain_id | integer | Domain-ID |
data.active | boolean | CDN aktiv |
data.pending | string[] | Offene Arbeiten des CDN-Bots Werte: server_assignment, dns, config_deploy, certificate, server_move, deletion. |
data.dns_records_enabled | boolean | Mindestens ein Record läuft über das CDN |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.ipv4 | string | IPv4 |
data.server.ipv6 | string | IPv6 |
data.proxy | object | |
data.proxy.state | string | Reverse Proxy Werte: off, on, disabling. |
data.proxy.frontend | string | null | http, https_redirect (HTTP wird auf HTTPS umgeleitet) oder http_and_https Werte: http, https_redirect, http_and_https. |
data.proxy.backend | object | |
data.proxy.backend.scheme | string | Protokoll zu deinem Server Werte: http, https. |
data.proxy.backend.port | integer | Port deines Servers |
data.proxy.websocket | boolean | WebSocket-Unterstützung |
data.proxy.certificate | string | Zertifikat Werte: default, letsencrypt, issuing. |
data.proxy.caching | object | |
data.proxy.caching.enabled | boolean | Cache aktiv |
data.proxy.caching.time_minutes | integer | Cache-Dauer |
data.proxy.caching.size_mb | integer | Cache-Größe |
data.proxy.access_list | object | |
data.proxy.access_list.enabled | boolean | Zugriffsliste aktiv |
data.proxy.access_list.mode | string | allowlist = nur Einträge erlaubt, denylist = Einträge gesperrt Werte: allowlist, denylist. |
data.portmapper | object | |
data.portmapper.state | string | Portmapper Werte: off, on, disabling, suspended_traffic_limit. |
data.traffic_mb | object | |
data.traffic_mb.in | number | Eingehend |
data.traffic_mb.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
Mögliche Fehler: 401404429 Fehlercodes
/cdn/{token}/move
Auf einen anderen CDN-Server umziehen
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/move" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | CDN-ID |
data.domain | string | null | Domain |
data.domain_id | integer | Domain-ID |
data.active | boolean | CDN aktiv |
data.pending | string[] | Offene Arbeiten des CDN-Bots Werte: server_assignment, dns, config_deploy, certificate, server_move, deletion. |
data.dns_records_enabled | boolean | Mindestens ein Record läuft über das CDN |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.ipv4 | string | IPv4 |
data.server.ipv6 | string | IPv6 |
data.proxy | object | |
data.proxy.state | string | Reverse Proxy Werte: off, on, disabling. |
data.proxy.frontend | string | null | http, https_redirect (HTTP wird auf HTTPS umgeleitet) oder http_and_https Werte: http, https_redirect, http_and_https. |
data.proxy.backend | object | |
data.proxy.backend.scheme | string | Protokoll zu deinem Server Werte: http, https. |
data.proxy.backend.port | integer | Port deines Servers |
data.proxy.websocket | boolean | WebSocket-Unterstützung |
data.proxy.certificate | string | Zertifikat Werte: default, letsencrypt, issuing. |
data.proxy.caching | object | |
data.proxy.caching.enabled | boolean | Cache aktiv |
data.proxy.caching.time_minutes | integer | Cache-Dauer |
data.proxy.caching.size_mb | integer | Cache-Größe |
data.proxy.access_list | object | |
data.proxy.access_list.enabled | boolean | Zugriffsliste aktiv |
data.proxy.access_list.mode | string | allowlist = nur Einträge erlaubt, denylist = Einträge gesperrt Werte: allowlist, denylist. |
data.portmapper | object | |
data.portmapper.state | string | Portmapper Werte: off, on, disabling, suspended_traffic_limit. |
data.traffic_mb | object | |
data.traffic_mb.in | number | Eingehend |
data.traffic_mb.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
Mögliche Fehler: 401403404409429 Fehlercodes
/cdn/{token}/renew-certificate
Zertifikat neu ausstellen
asynchron Nur bei aktivem Proxy mit HTTPS-Frontend.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/renew-certificate" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | CDN-ID |
data.domain | string | null | Domain |
data.domain_id | integer | Domain-ID |
data.active | boolean | CDN aktiv |
data.pending | string[] | Offene Arbeiten des CDN-Bots Werte: server_assignment, dns, config_deploy, certificate, server_move, deletion. |
data.dns_records_enabled | boolean | Mindestens ein Record läuft über das CDN |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.ipv4 | string | IPv4 |
data.server.ipv6 | string | IPv6 |
data.proxy | object | |
data.proxy.state | string | Reverse Proxy Werte: off, on, disabling. |
data.proxy.frontend | string | null | http, https_redirect (HTTP wird auf HTTPS umgeleitet) oder http_and_https Werte: http, https_redirect, http_and_https. |
data.proxy.backend | object | |
data.proxy.backend.scheme | string | Protokoll zu deinem Server Werte: http, https. |
data.proxy.backend.port | integer | Port deines Servers |
data.proxy.websocket | boolean | WebSocket-Unterstützung |
data.proxy.certificate | string | Zertifikat Werte: default, letsencrypt, issuing. |
data.proxy.caching | object | |
data.proxy.caching.enabled | boolean | Cache aktiv |
data.proxy.caching.time_minutes | integer | Cache-Dauer |
data.proxy.caching.size_mb | integer | Cache-Größe |
data.proxy.access_list | object | |
data.proxy.access_list.enabled | boolean | Zugriffsliste aktiv |
data.proxy.access_list.mode | string | allowlist = nur Einträge erlaubt, denylist = Einträge gesperrt Werte: allowlist, denylist. |
data.portmapper | object | |
data.portmapper.state | string | Portmapper Werte: off, on, disabling, suspended_traffic_limit. |
data.traffic_mb | object | |
data.traffic_mb.in | number | Eingehend |
data.traffic_mb.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
Mögliche Fehler: 401404409429 Fehlercodes
/cdn/{token}/records
A- und AAAA-Records der Domain mit CDN-Zustand
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/records" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | Record-ID |
data[].domain_id | integer | Domain-ID |
data[].domain | string | Domain |
data[].prefix | string | Präfix, leer = Domain selbst |
data[].fqdn | string | Vollständiger Name |
data[].type | string | Record-Typ Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, TLSA, CAA. |
data[].content | string | Inhalt |
data[].ttl | integer | TTL in Sekunden |
data[].state | string | active, inactive, cdn_record (vom CDN verwaltet), cdn_proxied / cdn_partial (läuft über das CDN), failover_record (temporärer Ersatz), failover_replaced (durch Failover ersetzt) Werte: active, inactive, cdn_record, cdn_proxied, cdn_partial, failover_record, failover_replaced. |
data[].pending_dns | boolean | Änderung wird noch an die Nameserver übertragen |
data[].token | string | Record-Token. Bleibt bei IP-Änderungen gleich und kann statt der ID verwendet werden. |
data[].updated_at | datetime | null | Letzte Änderung |
Mögliche Fehler: 401404429 Fehlercodes
/cdn/{token}/records/{record}/enable
Record über das CDN leiten
asynchron full: der Name zeigt komplett auf das CDN. other_family_only: der Record bleibt direkt erreichbar und das CDN liefert nur die andere Adressfamilie, zum Beispiel IPv4 für einen reinen IPv6-Anschluss. other_family_only geht nur, wenn der Record der einzige auf seinem Präfix ist.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
record | Pfad, string | Pflicht | Record-ID oder Record-Token |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
mode | string | Modus Werte: full, other_family_only. |
curl -X POST "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/records/4711/enable" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"other_family_only"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | Record-ID |
data.domain_id | integer | Domain-ID |
data.domain | string | Domain |
data.prefix | string | Präfix, leer = Domain selbst |
data.fqdn | string | Vollständiger Name |
data.type | string | Record-Typ Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, TLSA, CAA. |
data.content | string | Inhalt |
data.ttl | integer | TTL in Sekunden |
data.state | string | active, inactive, cdn_record (vom CDN verwaltet), cdn_proxied / cdn_partial (läuft über das CDN), failover_record (temporärer Ersatz), failover_replaced (durch Failover ersetzt) Werte: active, inactive, cdn_record, cdn_proxied, cdn_partial, failover_record, failover_replaced. |
data.pending_dns | boolean | Änderung wird noch an die Nameserver übertragen |
data.token | string | Record-Token. Bleibt bei IP-Änderungen gleich und kann statt der ID verwendet werden. |
data.updated_at | datetime | null | Letzte Änderung |
Mögliche Fehler: 401404409422429 Fehlercodes
/cdn/{token}/records/{record}/disable
Record wieder direkt ausliefern
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
record | Pfad, string | Pflicht | Record-ID oder Record-Token |
curl -X POST "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/records/4711/disable" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | Record-ID |
data.domain_id | integer | Domain-ID |
data.domain | string | Domain |
data.prefix | string | Präfix, leer = Domain selbst |
data.fqdn | string | Vollständiger Name |
data.type | string | Record-Typ Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, TLSA, CAA. |
data.content | string | Inhalt |
data.ttl | integer | TTL in Sekunden |
data.state | string | active, inactive, cdn_record (vom CDN verwaltet), cdn_proxied / cdn_partial (läuft über das CDN), failover_record (temporärer Ersatz), failover_replaced (durch Failover ersetzt) Werte: active, inactive, cdn_record, cdn_proxied, cdn_partial, failover_record, failover_replaced. |
data.pending_dns | boolean | Änderung wird noch an die Nameserver übertragen |
data.token | string | Record-Token. Bleibt bei IP-Änderungen gleich und kann statt der ID verwendet werden. |
data.updated_at | datetime | null | Letzte Änderung |
Mögliche Fehler: 401404409429 Fehlercodes
/cdn/{token}/mappings
Port-Mappings
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/mappings" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | string | Mapping-ID |
data[].name | string | Name |
data[].listen_port | integer | Öffentlicher Port am CDN-Server |
data[].transport | string | Protokoll Werte: tcp, udp. |
data[].target_port | integer | Port bei dir |
data[].record | string | Record-Token des Ziels |
data[].fqdn | string | null | Name des Ziels |
Mögliche Fehler: 401404429 Fehlercodes
/cdn/{token}/mappings
Port-Mapping anlegen
Leitet einen öffentlichen Port des CDN-Servers auf einen Port bei dir weiter. Ohne listen_port wird ein freier Port zwischen 50000 und 62000 vergeben. Für A und AAAA desselben Namens mit gleichem Ziel-Port wird derselbe Port verwendet.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
record | string | Pflicht | Record-ID oder -Token, der über das CDN läuft |
target_port | integer | Pflicht | Port bei dir Bereich: 1 bis 65535. |
transport | string | Protokoll Werte: tcp, udp. | |
name | string | Name | |
listen_port | integer | Wunsch-Port Bereich: 50000 bis 62000. |
curl -X POST "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/mappings" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"record":"4711","target_port":25565,"transport":"tcp","name":"Minecraft"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Mapping-ID |
data.name | string | Name |
data.listen_port | integer | Öffentlicher Port am CDN-Server |
data.transport | string | Protokoll Werte: tcp, udp. |
data.target_port | integer | Port bei dir |
data.record | string | Record-Token des Ziels |
data.fqdn | string | null | Name des Ziels |
Mögliche Fehler: 401403404409422429 Fehlercodes
/cdn/{token}/mappings/{mapping}
Port-Mapping löschen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
mapping | Pfad, string | Pflicht | Mapping-ID |
curl -X DELETE "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/mappings/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404429 Fehlercodes
/cdn/{token}/access-list
Zugriffsliste
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/access-list" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | ID |
data[].address | string | IP oder Netz |
Mögliche Fehler: 401404429 Fehlercodes
/cdn/{token}/access-list
Eintrag hinzufügen
Ob die Liste erlaubt oder sperrt, steht in proxy.access_list.mode.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
address | string | Pflicht | IP oder Netz in CIDR |
curl -X POST "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/access-list" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"address":"198.51.100.0/24"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.address | string | IP oder Netz |
Mögliche Fehler: 401404409422429 Fehlercodes
/cdn/{token}/access-list/{id}
Eintrag entfernen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
id | Pfad, string | Pflicht | ID der Ressource |
curl -X DELETE "https://ipv64.net/api/v2/cdn/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/access-list/12" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404429 Fehlercodes
WireGuard-Router mit Gateways, Routing, Firewall und öffentlichen IPv6-Adressen. Fast alle Änderungen setzt der VPN-Dienst im Hintergrund um (202).
/cloud-routers
Alle Cloud Router
curl "https://ipv64.net/api/v2/cloud-routers" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | string | Router-ID |
data[].name | string | Name |
data[].vrf | string | Interner VRF-Name |
data[].traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data[].gateways | object[] | |
data[].gateways[].id | string | Gateway-ID |
data[].gateways[].name | string | Name |
data[].gateways[].state | string | Zustand Werte: ready, creating, applying, deleting. |
data[].gateways[].disabled | boolean | Deaktiviert |
data[].gateways[].traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data[].gateways[].server | object | null | |
data[].gateways[].server.name | string | Name |
data[].gateways[].server.hostname | string | Hostname |
data[].gateways[].server.location | string | Standort |
data[].gateways[].listen_port | integer | null | WireGuard-Port am Server |
data[].gateways[].ipv4 | string | null | Gateway-Adresse IPv4 (CIDR) |
data[].gateways[].ipv6 | string | null | Gateway-Adresse IPv6 (CIDR) |
data[].gateways[].public_key | string | null | Öffentlicher Schlüssel |
data[].gateways[].ospf | object | null | |
data[].gateways[].ospf.area_id | string | Area |
data[].gateways[].ospf.ospf_version | integer | Version |
data[].gateways[].ospf.cost | integer | Kosten |
data[].gateways[].traffic_bytes | object | |
data[].gateways[].traffic_bytes.in | number | Eingehend |
data[].gateways[].traffic_bytes.out | number | Ausgehend |
data[].gateways[].created_at | datetime | null | Angelegt |
data[].gateways[].peers | object[] | Nur in der Detailansicht |
data[].gateways[].peers[].id | string | Peer-ID |
data[].gateways[].peers[].name | string | Name |
data[].gateways[].peers[].state | string | Zustand Werte: ready, applying, deleting. |
data[].gateways[].peers[].disabled | boolean | Deaktiviert |
data[].gateways[].peers[].site_to_site | boolean | Als Site-to-Site markiert |
data[].gateways[].peers[].ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data[].gateways[].peers[].ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data[].gateways[].peers[].dns_server | string | null | DNS-Server in der Client-Config |
data[].gateways[].peers[].endpoint | string | null | Fester Endpunkt des Peers |
data[].gateways[].peers[].endpoint_port | integer | null | Port des Endpunkts |
data[].gateways[].peers[].keepalive | string | Keepalive hh:mm:ss |
data[].gateways[].peers[].public_key | string | null | Öffentlicher Schlüssel |
data[].gateways[].peers[].has_preshared_key | boolean | Preshared Key gesetzt |
data[].gateways[].peers[].current_endpoint | string | null | Zuletzt gesehene Adresse |
data[].gateways[].peers[].last_handshake | string | null | Letzter Handshake |
data[].gateways[].peers[].traffic_bytes | object | |
data[].gateways[].peers[].traffic_bytes.in | number | Eingehend |
data[].gateways[].peers[].traffic_bytes.out | number | Ausgehend |
data[].gateways[].peers[].allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data[].gateways[].peers[].allowed_ips[].id | integer | ID |
data[].gateways[].peers[].allowed_ips[].network | string | Netz |
data[].public_ips | object[] | Nur in der Detailansicht |
data[].public_ips[].id | integer | ID |
data[].public_ips[].ip | string | Adresse |
data[].public_ips[].type | string | Familie |
data[].public_ips[].disabled | boolean | Deaktiviert |
data[].public_ips[].state | string | Zustand Werte: ready, applying. |
data[].public_ips[].created_at | datetime | null | Angelegt |
Mögliche Fehler: 401429 Fehlercodes
/cloud-routers
Cloud Router anlegen
asynchron Legt Router und erstes Gateway an.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Name |
curl -X POST "https://ipv64.net/api/v2/cloud-routers" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Home Lab"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Router-ID |
data.name | string | Name |
data.vrf | string | Interner VRF-Name |
data.traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data.gateways | object[] | |
data.gateways[].id | string | Gateway-ID |
data.gateways[].name | string | Name |
data.gateways[].state | string | Zustand Werte: ready, creating, applying, deleting. |
data.gateways[].disabled | boolean | Deaktiviert |
data.gateways[].traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data.gateways[].server | object | null | |
data.gateways[].server.name | string | Name |
data.gateways[].server.hostname | string | Hostname |
data.gateways[].server.location | string | Standort |
data.gateways[].listen_port | integer | null | WireGuard-Port am Server |
data.gateways[].ipv4 | string | null | Gateway-Adresse IPv4 (CIDR) |
data.gateways[].ipv6 | string | null | Gateway-Adresse IPv6 (CIDR) |
data.gateways[].public_key | string | null | Öffentlicher Schlüssel |
data.gateways[].ospf | object | null | |
data.gateways[].ospf.area_id | string | Area |
data.gateways[].ospf.ospf_version | integer | Version |
data.gateways[].ospf.cost | integer | Kosten |
data.gateways[].traffic_bytes | object | |
data.gateways[].traffic_bytes.in | number | Eingehend |
data.gateways[].traffic_bytes.out | number | Ausgehend |
data.gateways[].created_at | datetime | null | Angelegt |
data.gateways[].peers | object[] | Nur in der Detailansicht |
data.gateways[].peers[].id | string | Peer-ID |
data.gateways[].peers[].name | string | Name |
data.gateways[].peers[].state | string | Zustand Werte: ready, applying, deleting. |
data.gateways[].peers[].disabled | boolean | Deaktiviert |
data.gateways[].peers[].site_to_site | boolean | Als Site-to-Site markiert |
data.gateways[].peers[].ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.gateways[].peers[].ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.gateways[].peers[].dns_server | string | null | DNS-Server in der Client-Config |
data.gateways[].peers[].endpoint | string | null | Fester Endpunkt des Peers |
data.gateways[].peers[].endpoint_port | integer | null | Port des Endpunkts |
data.gateways[].peers[].keepalive | string | Keepalive hh:mm:ss |
data.gateways[].peers[].public_key | string | null | Öffentlicher Schlüssel |
data.gateways[].peers[].has_preshared_key | boolean | Preshared Key gesetzt |
data.gateways[].peers[].current_endpoint | string | null | Zuletzt gesehene Adresse |
data.gateways[].peers[].last_handshake | string | null | Letzter Handshake |
data.gateways[].peers[].traffic_bytes | object | |
data.gateways[].peers[].traffic_bytes.in | number | Eingehend |
data.gateways[].peers[].traffic_bytes.out | number | Ausgehend |
data.gateways[].peers[].allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.gateways[].peers[].allowed_ips[].id | integer | ID |
data.gateways[].peers[].allowed_ips[].network | string | Netz |
data.public_ips | object[] | Nur in der Detailansicht |
data.public_ips[].id | integer | ID |
data.public_ips[].ip | string | Adresse |
data.public_ips[].type | string | Familie |
data.public_ips[].disabled | boolean | Deaktiviert |
data.public_ips[].state | string | Zustand Werte: ready, applying. |
data.public_ips[].created_at | datetime | null | Angelegt |
Mögliche Fehler: 401403422429 Fehlercodes
/cloud-routers/{token}
Cloud Router mit Gateways, Peers und IPs
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl "https://ipv64.net/api/v2/cloud-routers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Router-ID |
data.name | string | Name |
data.vrf | string | Interner VRF-Name |
data.traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data.gateways | object[] | |
data.gateways[].id | string | Gateway-ID |
data.gateways[].name | string | Name |
data.gateways[].state | string | Zustand Werte: ready, creating, applying, deleting. |
data.gateways[].disabled | boolean | Deaktiviert |
data.gateways[].traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data.gateways[].server | object | null | |
data.gateways[].server.name | string | Name |
data.gateways[].server.hostname | string | Hostname |
data.gateways[].server.location | string | Standort |
data.gateways[].listen_port | integer | null | WireGuard-Port am Server |
data.gateways[].ipv4 | string | null | Gateway-Adresse IPv4 (CIDR) |
data.gateways[].ipv6 | string | null | Gateway-Adresse IPv6 (CIDR) |
data.gateways[].public_key | string | null | Öffentlicher Schlüssel |
data.gateways[].ospf | object | null | |
data.gateways[].ospf.area_id | string | Area |
data.gateways[].ospf.ospf_version | integer | Version |
data.gateways[].ospf.cost | integer | Kosten |
data.gateways[].traffic_bytes | object | |
data.gateways[].traffic_bytes.in | number | Eingehend |
data.gateways[].traffic_bytes.out | number | Ausgehend |
data.gateways[].created_at | datetime | null | Angelegt |
data.gateways[].peers | object[] | Nur in der Detailansicht |
data.gateways[].peers[].id | string | Peer-ID |
data.gateways[].peers[].name | string | Name |
data.gateways[].peers[].state | string | Zustand Werte: ready, applying, deleting. |
data.gateways[].peers[].disabled | boolean | Deaktiviert |
data.gateways[].peers[].site_to_site | boolean | Als Site-to-Site markiert |
data.gateways[].peers[].ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.gateways[].peers[].ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.gateways[].peers[].dns_server | string | null | DNS-Server in der Client-Config |
data.gateways[].peers[].endpoint | string | null | Fester Endpunkt des Peers |
data.gateways[].peers[].endpoint_port | integer | null | Port des Endpunkts |
data.gateways[].peers[].keepalive | string | Keepalive hh:mm:ss |
data.gateways[].peers[].public_key | string | null | Öffentlicher Schlüssel |
data.gateways[].peers[].has_preshared_key | boolean | Preshared Key gesetzt |
data.gateways[].peers[].current_endpoint | string | null | Zuletzt gesehene Adresse |
data.gateways[].peers[].last_handshake | string | null | Letzter Handshake |
data.gateways[].peers[].traffic_bytes | object | |
data.gateways[].peers[].traffic_bytes.in | number | Eingehend |
data.gateways[].peers[].traffic_bytes.out | number | Ausgehend |
data.gateways[].peers[].allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.gateways[].peers[].allowed_ips[].id | integer | ID |
data.gateways[].peers[].allowed_ips[].network | string | Netz |
data.public_ips | object[] | Nur in der Detailansicht |
data.public_ips[].id | integer | ID |
data.public_ips[].ip | string | Adresse |
data.public_ips[].type | string | Familie |
data.public_ips[].disabled | boolean | Deaktiviert |
data.public_ips[].state | string | Zustand Werte: ready, applying. |
data.public_ips[].created_at | datetime | null | Angelegt |
Mögliche Fehler: 401404429 Fehlercodes
/cloud-routers/{token}
Router umbenennen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Name |
curl -X PATCH "https://ipv64.net/api/v2/cloud-routers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Buero"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Router-ID |
data.name | string | Name |
data.vrf | string | Interner VRF-Name |
data.traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data.gateways | object[] | |
data.gateways[].id | string | Gateway-ID |
data.gateways[].name | string | Name |
data.gateways[].state | string | Zustand Werte: ready, creating, applying, deleting. |
data.gateways[].disabled | boolean | Deaktiviert |
data.gateways[].traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data.gateways[].server | object | null | |
data.gateways[].server.name | string | Name |
data.gateways[].server.hostname | string | Hostname |
data.gateways[].server.location | string | Standort |
data.gateways[].listen_port | integer | null | WireGuard-Port am Server |
data.gateways[].ipv4 | string | null | Gateway-Adresse IPv4 (CIDR) |
data.gateways[].ipv6 | string | null | Gateway-Adresse IPv6 (CIDR) |
data.gateways[].public_key | string | null | Öffentlicher Schlüssel |
data.gateways[].ospf | object | null | |
data.gateways[].ospf.area_id | string | Area |
data.gateways[].ospf.ospf_version | integer | Version |
data.gateways[].ospf.cost | integer | Kosten |
data.gateways[].traffic_bytes | object | |
data.gateways[].traffic_bytes.in | number | Eingehend |
data.gateways[].traffic_bytes.out | number | Ausgehend |
data.gateways[].created_at | datetime | null | Angelegt |
data.gateways[].peers | object[] | Nur in der Detailansicht |
data.gateways[].peers[].id | string | Peer-ID |
data.gateways[].peers[].name | string | Name |
data.gateways[].peers[].state | string | Zustand Werte: ready, applying, deleting. |
data.gateways[].peers[].disabled | boolean | Deaktiviert |
data.gateways[].peers[].site_to_site | boolean | Als Site-to-Site markiert |
data.gateways[].peers[].ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.gateways[].peers[].ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.gateways[].peers[].dns_server | string | null | DNS-Server in der Client-Config |
data.gateways[].peers[].endpoint | string | null | Fester Endpunkt des Peers |
data.gateways[].peers[].endpoint_port | integer | null | Port des Endpunkts |
data.gateways[].peers[].keepalive | string | Keepalive hh:mm:ss |
data.gateways[].peers[].public_key | string | null | Öffentlicher Schlüssel |
data.gateways[].peers[].has_preshared_key | boolean | Preshared Key gesetzt |
data.gateways[].peers[].current_endpoint | string | null | Zuletzt gesehene Adresse |
data.gateways[].peers[].last_handshake | string | null | Letzter Handshake |
data.gateways[].peers[].traffic_bytes | object | |
data.gateways[].peers[].traffic_bytes.in | number | Eingehend |
data.gateways[].peers[].traffic_bytes.out | number | Ausgehend |
data.gateways[].peers[].allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.gateways[].peers[].allowed_ips[].id | integer | ID |
data.gateways[].peers[].allowed_ips[].network | string | Netz |
data.public_ips | object[] | Nur in der Detailansicht |
data.public_ips[].id | integer | ID |
data.public_ips[].ip | string | Adresse |
data.public_ips[].type | string | Familie |
data.public_ips[].disabled | boolean | Deaktiviert |
data.public_ips[].state | string | Zustand Werte: ready, applying. |
data.public_ips[].created_at | datetime | null | Angelegt |
Mögliche Fehler: 401404422429 Fehlercodes
/cloud-routers/{token}/gateways
Weiteres Gateway anlegen
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Name |
curl -X POST "https://ipv64.net/api/v2/cloud-routers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/gateways" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Gateway 2"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Gateway-ID |
data.name | string | Name |
data.state | string | Zustand Werte: ready, creating, applying, deleting. |
data.disabled | boolean | Deaktiviert |
data.traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.location | string | Standort |
data.listen_port | integer | null | WireGuard-Port am Server |
data.ipv4 | string | null | Gateway-Adresse IPv4 (CIDR) |
data.ipv6 | string | null | Gateway-Adresse IPv6 (CIDR) |
data.public_key | string | null | Öffentlicher Schlüssel |
data.ospf | object | null | |
data.ospf.area_id | string | Area |
data.ospf.ospf_version | integer | Version |
data.ospf.cost | integer | Kosten |
data.traffic_bytes | object | |
data.traffic_bytes.in | number | Eingehend |
data.traffic_bytes.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
data.peers | object[] | Nur in der Detailansicht |
data.peers[].id | string | Peer-ID |
data.peers[].name | string | Name |
data.peers[].state | string | Zustand Werte: ready, applying, deleting. |
data.peers[].disabled | boolean | Deaktiviert |
data.peers[].site_to_site | boolean | Als Site-to-Site markiert |
data.peers[].ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.peers[].ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.peers[].dns_server | string | null | DNS-Server in der Client-Config |
data.peers[].endpoint | string | null | Fester Endpunkt des Peers |
data.peers[].endpoint_port | integer | null | Port des Endpunkts |
data.peers[].keepalive | string | Keepalive hh:mm:ss |
data.peers[].public_key | string | null | Öffentlicher Schlüssel |
data.peers[].has_preshared_key | boolean | Preshared Key gesetzt |
data.peers[].current_endpoint | string | null | Zuletzt gesehene Adresse |
data.peers[].last_handshake | string | null | Letzter Handshake |
data.peers[].traffic_bytes | object | |
data.peers[].traffic_bytes.in | number | Eingehend |
data.peers[].traffic_bytes.out | number | Ausgehend |
data.peers[].allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.peers[].allowed_ips[].id | integer | ID |
data.peers[].allowed_ips[].network | string | Netz |
Mögliche Fehler: 401403404422429 Fehlercodes
/cloud-routers/{token}/routes
Routen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl "https://ipv64.net/api/v2/cloud-routers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/routes" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | ID |
data[].destination | string | Zielnetz |
data[].gateway | string | Next Hop |
data[].distance | integer | Distanz |
data[].peer | string | null | Peer-ID |
data[].system | boolean | Vom System angelegt, nicht löschbar |
data[].disabled | boolean | Deaktiviert |
data[].state | string | Zustand Werte: ready, applying, deleting. |
Mögliche Fehler: 401404429 Fehlercodes
/cloud-routers/{token}/routes
Route anlegen
asynchron Statische Route in ein Netz hinter einem Peer.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
destination | string | Pflicht | Zielnetz in CIDR |
gateway | string | Pflicht | Next Hop, gleiche Familie |
peer | string | Pflicht | Peer-ID |
distance | integer | Distanz Bereich: 1 bis 255. |
curl -X POST "https://ipv64.net/api/v2/cloud-routers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/routes" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"destination":"192.168.50.0/24","gateway":"10.7.0.2","peer":"Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.destination | string | Zielnetz |
data.gateway | string | Next Hop |
data.distance | integer | Distanz |
data.peer | string | null | Peer-ID |
data.system | boolean | Vom System angelegt, nicht löschbar |
data.disabled | boolean | Deaktiviert |
data.state | string | Zustand Werte: ready, applying, deleting. |
Mögliche Fehler: 401404422429 Fehlercodes
/cloud-routers/{token}/routes/{id}
Route ein- oder ausschalten
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
id | Pfad, string | Pflicht | ID der Ressource |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
disabled | boolean | Deaktiviert |
curl -X PATCH "https://ipv64.net/api/v2/cloud-routers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/routes/12" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"disabled":true}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.destination | string | Zielnetz |
data.gateway | string | Next Hop |
data.distance | integer | Distanz |
data.peer | string | null | Peer-ID |
data.system | boolean | Vom System angelegt, nicht löschbar |
data.disabled | boolean | Deaktiviert |
data.state | string | Zustand Werte: ready, applying, deleting. |
Mögliche Fehler: 401404409422429 Fehlercodes
/cloud-routers/{token}/routes/{id}
Route löschen
asynchron Systemrouten können nicht gelöscht werden.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
id | Pfad, string | Pflicht | ID der Ressource |
curl -X DELETE "https://ipv64.net/api/v2/cloud-routers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/routes/12" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.state | string | Zustand |
Mögliche Fehler: 401404409429 Fehlercodes
/cloud-routers/{token}/firewall
Firewall-Regeln
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl "https://ipv64.net/api/v2/cloud-routers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/firewall" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | ID |
data[].chain | string | Kette Werte: forward, input, output. |
data[].action | string | Aktion Werte: accept, drop. |
data[].family | string | Familie Werte: ipv4, ipv6. |
data[].source | string | null | Quelle |
data[].destination | string | null | Ziel |
data[].disabled | boolean | Deaktiviert |
data[].state | string | Zustand Werte: ready, applying, deleting. |
Mögliche Fehler: 401404429 Fehlercodes
/cloud-routers/{token}/firewall
Firewall-Regel anlegen
asynchron source und destination müssen zur selben Familie gehören. Mindestens eines davon ist Pflicht.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
chain | string | Pflicht | Kette Werte: forward, input, output. |
action | string | Pflicht | Aktion Werte: accept, drop. |
source | string | Quelle als IP oder CIDR | |
destination | string | Ziel als IP oder CIDR |
curl -X POST "https://ipv64.net/api/v2/cloud-routers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/firewall" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"chain":"forward","action":"drop","source":"10.7.0.5","destination":"192.168.50.0/24"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.chain | string | Kette Werte: forward, input, output. |
data.action | string | Aktion Werte: accept, drop. |
data.family | string | Familie Werte: ipv4, ipv6. |
data.source | string | null | Quelle |
data.destination | string | null | Ziel |
data.disabled | boolean | Deaktiviert |
data.state | string | Zustand Werte: ready, applying, deleting. |
Mögliche Fehler: 401404422429 Fehlercodes
/cloud-routers/{token}/firewall/{id}
Regel ein- oder ausschalten
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
id | Pfad, string | Pflicht | ID der Ressource |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
disabled | boolean | Deaktiviert |
curl -X PATCH "https://ipv64.net/api/v2/cloud-routers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/firewall/12" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"disabled":true}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.chain | string | Kette Werte: forward, input, output. |
data.action | string | Aktion Werte: accept, drop. |
data.family | string | Familie Werte: ipv4, ipv6. |
data.source | string | null | Quelle |
data.destination | string | null | Ziel |
data.disabled | boolean | Deaktiviert |
data.state | string | Zustand Werte: ready, applying, deleting. |
Mögliche Fehler: 401404409422429 Fehlercodes
/cloud-routers/{token}/firewall/{id}
Regel löschen
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
id | Pfad, string | Pflicht | ID der Ressource |
curl -X DELETE "https://ipv64.net/api/v2/cloud-routers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/firewall/12" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.state | string | Zustand |
Mögliche Fehler: 401404409429 Fehlercodes
/cloud-routers/{token}/public-ips
Öffentliche IPs
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl "https://ipv64.net/api/v2/cloud-routers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/public-ips" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | ID |
data[].ip | string | Adresse |
data[].type | string | Familie |
data[].disabled | boolean | Deaktiviert |
data[].state | string | Zustand Werte: ready, applying. |
data[].created_at | datetime | null | Angelegt |
Mögliche Fehler: 401404429 Fehlercodes
/cloud-routers/{token}/public-ips
Öffentliche IPv6 anlegen
asynchron Höchstens eine IPv6 je Router. Die Adresse wird zufällig aus dem Netz des VPN-Servers vergeben.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/cloud-routers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/public-ips" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.ip | string | Adresse |
data.type | string | Familie |
data.disabled | boolean | Deaktiviert |
data.state | string | Zustand Werte: ready, applying. |
data.created_at | datetime | null | Angelegt |
Mögliche Fehler: 401404409429 Fehlercodes
/cloud-routers/{token}/public-ips/{id}
IP ein- oder ausschalten
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
id | Pfad, string | Pflicht | ID der Ressource |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
disabled | boolean | Deaktiviert |
curl -X PATCH "https://ipv64.net/api/v2/cloud-routers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/public-ips/12" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"disabled":true}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.ip | string | Adresse |
data.type | string | Familie |
data.disabled | boolean | Deaktiviert |
data.state | string | Zustand Werte: ready, applying. |
data.created_at | datetime | null | Angelegt |
Mögliche Fehler: 401404409422429 Fehlercodes
/cloud-routers/{token}/public-ips/{id}
IP löschen
asynchron Port-Forwards auf diese IP werden neu eingerichtet.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
id | Pfad, string | Pflicht | ID der Ressource |
curl -X DELETE "https://ipv64.net/api/v2/cloud-routers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/public-ips/12" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.state | string | Zustand |
Mögliche Fehler: 401404409429 Fehlercodes
WireGuard-Gateways eines Cloud Routers. {token} ist die Gateway-ID. Während ein Gateway eingerichtet wird, antworten Änderungen mit 409 gateway_busy und retry_after.
/gateways/{token}
Gateway mit Peers
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl "https://ipv64.net/api/v2/gateways/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Gateway-ID |
data.name | string | Name |
data.state | string | Zustand Werte: ready, creating, applying, deleting. |
data.disabled | boolean | Deaktiviert |
data.traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.location | string | Standort |
data.listen_port | integer | null | WireGuard-Port am Server |
data.ipv4 | string | null | Gateway-Adresse IPv4 (CIDR) |
data.ipv6 | string | null | Gateway-Adresse IPv6 (CIDR) |
data.public_key | string | null | Öffentlicher Schlüssel |
data.ospf | object | null | |
data.ospf.area_id | string | Area |
data.ospf.ospf_version | integer | Version |
data.ospf.cost | integer | Kosten |
data.traffic_bytes | object | |
data.traffic_bytes.in | number | Eingehend |
data.traffic_bytes.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
data.peers | object[] | Nur in der Detailansicht |
data.peers[].id | string | Peer-ID |
data.peers[].name | string | Name |
data.peers[].state | string | Zustand Werte: ready, applying, deleting. |
data.peers[].disabled | boolean | Deaktiviert |
data.peers[].site_to_site | boolean | Als Site-to-Site markiert |
data.peers[].ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.peers[].ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.peers[].dns_server | string | null | DNS-Server in der Client-Config |
data.peers[].endpoint | string | null | Fester Endpunkt des Peers |
data.peers[].endpoint_port | integer | null | Port des Endpunkts |
data.peers[].keepalive | string | Keepalive hh:mm:ss |
data.peers[].public_key | string | null | Öffentlicher Schlüssel |
data.peers[].has_preshared_key | boolean | Preshared Key gesetzt |
data.peers[].current_endpoint | string | null | Zuletzt gesehene Adresse |
data.peers[].last_handshake | string | null | Letzter Handshake |
data.peers[].traffic_bytes | object | |
data.peers[].traffic_bytes.in | number | Eingehend |
data.peers[].traffic_bytes.out | number | Ausgehend |
data.peers[].allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.peers[].allowed_ips[].id | integer | ID |
data.peers[].allowed_ips[].network | string | Netz |
Mögliche Fehler: 401404429 Fehlercodes
/gateways/{token}
Gateway ändern
Adressen in CIDR-Schreibweise. Leerer String entfernt die Adresse.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Name | |
ipv4 | string | Gateway-Adresse IPv4 | |
ipv6 | string | Gateway-Adresse IPv6 | |
disabled | boolean | Gateway deaktivieren |
curl -X PATCH "https://ipv64.net/api/v2/gateways/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ipv4":"10.7.0.1/24"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Gateway-ID |
data.name | string | Name |
data.state | string | Zustand Werte: ready, creating, applying, deleting. |
data.disabled | boolean | Deaktiviert |
data.traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.location | string | Standort |
data.listen_port | integer | null | WireGuard-Port am Server |
data.ipv4 | string | null | Gateway-Adresse IPv4 (CIDR) |
data.ipv6 | string | null | Gateway-Adresse IPv6 (CIDR) |
data.public_key | string | null | Öffentlicher Schlüssel |
data.ospf | object | null | |
data.ospf.area_id | string | Area |
data.ospf.ospf_version | integer | Version |
data.ospf.cost | integer | Kosten |
data.traffic_bytes | object | |
data.traffic_bytes.in | number | Eingehend |
data.traffic_bytes.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
data.peers | object[] | Nur in der Detailansicht |
data.peers[].id | string | Peer-ID |
data.peers[].name | string | Name |
data.peers[].state | string | Zustand Werte: ready, applying, deleting. |
data.peers[].disabled | boolean | Deaktiviert |
data.peers[].site_to_site | boolean | Als Site-to-Site markiert |
data.peers[].ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.peers[].ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.peers[].dns_server | string | null | DNS-Server in der Client-Config |
data.peers[].endpoint | string | null | Fester Endpunkt des Peers |
data.peers[].endpoint_port | integer | null | Port des Endpunkts |
data.peers[].keepalive | string | Keepalive hh:mm:ss |
data.peers[].public_key | string | null | Öffentlicher Schlüssel |
data.peers[].has_preshared_key | boolean | Preshared Key gesetzt |
data.peers[].current_endpoint | string | null | Zuletzt gesehene Adresse |
data.peers[].last_handshake | string | null | Letzter Handshake |
data.peers[].traffic_bytes | object | |
data.peers[].traffic_bytes.in | number | Eingehend |
data.peers[].traffic_bytes.out | number | Ausgehend |
data.peers[].allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.peers[].allowed_ips[].id | integer | ID |
data.peers[].allowed_ips[].network | string | Netz |
Mögliche Fehler: 401404409422429 Fehlercodes
/gateways/{token}
Gateway mit allen Peers löschen
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X DELETE "https://ipv64.net/api/v2/gateways/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Gateway-ID |
data.name | string | Name |
data.state | string | Zustand Werte: ready, creating, applying, deleting. |
data.disabled | boolean | Deaktiviert |
data.traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.location | string | Standort |
data.listen_port | integer | null | WireGuard-Port am Server |
data.ipv4 | string | null | Gateway-Adresse IPv4 (CIDR) |
data.ipv6 | string | null | Gateway-Adresse IPv6 (CIDR) |
data.public_key | string | null | Öffentlicher Schlüssel |
data.ospf | object | null | |
data.ospf.area_id | string | Area |
data.ospf.ospf_version | integer | Version |
data.ospf.cost | integer | Kosten |
data.traffic_bytes | object | |
data.traffic_bytes.in | number | Eingehend |
data.traffic_bytes.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
data.peers | object[] | Nur in der Detailansicht |
data.peers[].id | string | Peer-ID |
data.peers[].name | string | Name |
data.peers[].state | string | Zustand Werte: ready, applying, deleting. |
data.peers[].disabled | boolean | Deaktiviert |
data.peers[].site_to_site | boolean | Als Site-to-Site markiert |
data.peers[].ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.peers[].ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.peers[].dns_server | string | null | DNS-Server in der Client-Config |
data.peers[].endpoint | string | null | Fester Endpunkt des Peers |
data.peers[].endpoint_port | integer | null | Port des Endpunkts |
data.peers[].keepalive | string | Keepalive hh:mm:ss |
data.peers[].public_key | string | null | Öffentlicher Schlüssel |
data.peers[].has_preshared_key | boolean | Preshared Key gesetzt |
data.peers[].current_endpoint | string | null | Zuletzt gesehene Adresse |
data.peers[].last_handshake | string | null | Letzter Handshake |
data.peers[].traffic_bytes | object | |
data.peers[].traffic_bytes.in | number | Eingehend |
data.peers[].traffic_bytes.out | number | Ausgehend |
data.peers[].allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.peers[].allowed_ips[].id | integer | ID |
data.peers[].allowed_ips[].network | string | Netz |
Mögliche Fehler: 401404409429 Fehlercodes
/gateways/{token}/rotate-keys
Neues Schlüsselpaar für das Gateway
asynchron Danach müssen alle Peers die neue Konfiguration erhalten.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/gateways/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/rotate-keys" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Gateway-ID |
data.name | string | Name |
data.state | string | Zustand Werte: ready, creating, applying, deleting. |
data.disabled | boolean | Deaktiviert |
data.traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.location | string | Standort |
data.listen_port | integer | null | WireGuard-Port am Server |
data.ipv4 | string | null | Gateway-Adresse IPv4 (CIDR) |
data.ipv6 | string | null | Gateway-Adresse IPv6 (CIDR) |
data.public_key | string | null | Öffentlicher Schlüssel |
data.ospf | object | null | |
data.ospf.area_id | string | Area |
data.ospf.ospf_version | integer | Version |
data.ospf.cost | integer | Kosten |
data.traffic_bytes | object | |
data.traffic_bytes.in | number | Eingehend |
data.traffic_bytes.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
data.peers | object[] | Nur in der Detailansicht |
data.peers[].id | string | Peer-ID |
data.peers[].name | string | Name |
data.peers[].state | string | Zustand Werte: ready, applying, deleting. |
data.peers[].disabled | boolean | Deaktiviert |
data.peers[].site_to_site | boolean | Als Site-to-Site markiert |
data.peers[].ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.peers[].ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.peers[].dns_server | string | null | DNS-Server in der Client-Config |
data.peers[].endpoint | string | null | Fester Endpunkt des Peers |
data.peers[].endpoint_port | integer | null | Port des Endpunkts |
data.peers[].keepalive | string | Keepalive hh:mm:ss |
data.peers[].public_key | string | null | Öffentlicher Schlüssel |
data.peers[].has_preshared_key | boolean | Preshared Key gesetzt |
data.peers[].current_endpoint | string | null | Zuletzt gesehene Adresse |
data.peers[].last_handshake | string | null | Letzter Handshake |
data.peers[].traffic_bytes | object | |
data.peers[].traffic_bytes.in | number | Eingehend |
data.peers[].traffic_bytes.out | number | Ausgehend |
data.peers[].allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.peers[].allowed_ips[].id | integer | ID |
data.peers[].allowed_ips[].network | string | Netz |
Mögliche Fehler: 401404409429 Fehlercodes
/gateways/{token}/reset-traffic
Traffic-Zähler zurücksetzen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/gateways/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/reset-traffic" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Gateway-ID |
data.name | string | Name |
data.state | string | Zustand Werte: ready, creating, applying, deleting. |
data.disabled | boolean | Deaktiviert |
data.traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.location | string | Standort |
data.listen_port | integer | null | WireGuard-Port am Server |
data.ipv4 | string | null | Gateway-Adresse IPv4 (CIDR) |
data.ipv6 | string | null | Gateway-Adresse IPv6 (CIDR) |
data.public_key | string | null | Öffentlicher Schlüssel |
data.ospf | object | null | |
data.ospf.area_id | string | Area |
data.ospf.ospf_version | integer | Version |
data.ospf.cost | integer | Kosten |
data.traffic_bytes | object | |
data.traffic_bytes.in | number | Eingehend |
data.traffic_bytes.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
data.peers | object[] | Nur in der Detailansicht |
data.peers[].id | string | Peer-ID |
data.peers[].name | string | Name |
data.peers[].state | string | Zustand Werte: ready, applying, deleting. |
data.peers[].disabled | boolean | Deaktiviert |
data.peers[].site_to_site | boolean | Als Site-to-Site markiert |
data.peers[].ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.peers[].ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.peers[].dns_server | string | null | DNS-Server in der Client-Config |
data.peers[].endpoint | string | null | Fester Endpunkt des Peers |
data.peers[].endpoint_port | integer | null | Port des Endpunkts |
data.peers[].keepalive | string | Keepalive hh:mm:ss |
data.peers[].public_key | string | null | Öffentlicher Schlüssel |
data.peers[].has_preshared_key | boolean | Preshared Key gesetzt |
data.peers[].current_endpoint | string | null | Zuletzt gesehene Adresse |
data.peers[].last_handshake | string | null | Letzter Handshake |
data.peers[].traffic_bytes | object | |
data.peers[].traffic_bytes.in | number | Eingehend |
data.peers[].traffic_bytes.out | number | Ausgehend |
data.peers[].allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.peers[].allowed_ips[].id | integer | ID |
data.peers[].allowed_ips[].network | string | Netz |
Mögliche Fehler: 401404429 Fehlercodes
/gateways/{token}/ospf
OSPF einschalten oder einstellen
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
area_id | string | Area | |
version | integer | OSPF-Version Bereich: 2 bis 3. | |
cost | integer | Kosten Bereich: 1 bis 256. |
curl -X PUT "https://ipv64.net/api/v2/gateways/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/ospf" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"area_id":"0.0.0.0","version":2,"cost":10}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Gateway-ID |
data.name | string | Name |
data.state | string | Zustand Werte: ready, creating, applying, deleting. |
data.disabled | boolean | Deaktiviert |
data.traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.location | string | Standort |
data.listen_port | integer | null | WireGuard-Port am Server |
data.ipv4 | string | null | Gateway-Adresse IPv4 (CIDR) |
data.ipv6 | string | null | Gateway-Adresse IPv6 (CIDR) |
data.public_key | string | null | Öffentlicher Schlüssel |
data.ospf | object | null | |
data.ospf.area_id | string | Area |
data.ospf.ospf_version | integer | Version |
data.ospf.cost | integer | Kosten |
data.traffic_bytes | object | |
data.traffic_bytes.in | number | Eingehend |
data.traffic_bytes.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
data.peers | object[] | Nur in der Detailansicht |
data.peers[].id | string | Peer-ID |
data.peers[].name | string | Name |
data.peers[].state | string | Zustand Werte: ready, applying, deleting. |
data.peers[].disabled | boolean | Deaktiviert |
data.peers[].site_to_site | boolean | Als Site-to-Site markiert |
data.peers[].ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.peers[].ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.peers[].dns_server | string | null | DNS-Server in der Client-Config |
data.peers[].endpoint | string | null | Fester Endpunkt des Peers |
data.peers[].endpoint_port | integer | null | Port des Endpunkts |
data.peers[].keepalive | string | Keepalive hh:mm:ss |
data.peers[].public_key | string | null | Öffentlicher Schlüssel |
data.peers[].has_preshared_key | boolean | Preshared Key gesetzt |
data.peers[].current_endpoint | string | null | Zuletzt gesehene Adresse |
data.peers[].last_handshake | string | null | Letzter Handshake |
data.peers[].traffic_bytes | object | |
data.peers[].traffic_bytes.in | number | Eingehend |
data.peers[].traffic_bytes.out | number | Ausgehend |
data.peers[].allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.peers[].allowed_ips[].id | integer | ID |
data.peers[].allowed_ips[].network | string | Netz |
Mögliche Fehler: 401404409422429 Fehlercodes
/gateways/{token}/ospf
OSPF ausschalten
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X DELETE "https://ipv64.net/api/v2/gateways/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/ospf" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Gateway-ID |
data.name | string | Name |
data.state | string | Zustand Werte: ready, creating, applying, deleting. |
data.disabled | boolean | Deaktiviert |
data.traffic_limited | boolean | Durch Traffic-Limit gesperrt |
data.server | object | null | |
data.server.name | string | Name |
data.server.hostname | string | Hostname |
data.server.location | string | Standort |
data.listen_port | integer | null | WireGuard-Port am Server |
data.ipv4 | string | null | Gateway-Adresse IPv4 (CIDR) |
data.ipv6 | string | null | Gateway-Adresse IPv6 (CIDR) |
data.public_key | string | null | Öffentlicher Schlüssel |
data.ospf | object | null | |
data.ospf.area_id | string | Area |
data.ospf.ospf_version | integer | Version |
data.ospf.cost | integer | Kosten |
data.traffic_bytes | object | |
data.traffic_bytes.in | number | Eingehend |
data.traffic_bytes.out | number | Ausgehend |
data.created_at | datetime | null | Angelegt |
data.peers | object[] | Nur in der Detailansicht |
data.peers[].id | string | Peer-ID |
data.peers[].name | string | Name |
data.peers[].state | string | Zustand Werte: ready, applying, deleting. |
data.peers[].disabled | boolean | Deaktiviert |
data.peers[].site_to_site | boolean | Als Site-to-Site markiert |
data.peers[].ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.peers[].ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.peers[].dns_server | string | null | DNS-Server in der Client-Config |
data.peers[].endpoint | string | null | Fester Endpunkt des Peers |
data.peers[].endpoint_port | integer | null | Port des Endpunkts |
data.peers[].keepalive | string | Keepalive hh:mm:ss |
data.peers[].public_key | string | null | Öffentlicher Schlüssel |
data.peers[].has_preshared_key | boolean | Preshared Key gesetzt |
data.peers[].current_endpoint | string | null | Zuletzt gesehene Adresse |
data.peers[].last_handshake | string | null | Letzter Handshake |
data.peers[].traffic_bytes | object | |
data.peers[].traffic_bytes.in | number | Eingehend |
data.peers[].traffic_bytes.out | number | Ausgehend |
data.peers[].allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.peers[].allowed_ips[].id | integer | ID |
data.peers[].allowed_ips[].network | string | Netz |
Mögliche Fehler: 401404409429 Fehlercodes
/gateways/{token}/port-forwards
Port-Forwards
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl "https://ipv64.net/api/v2/gateways/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/port-forwards" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | ID |
data[].name | string | Name |
data[].destination | string | Ziel-IP im Tunnel |
data[].target_port | integer | Ziel-Port |
data[].protocol | string | Protokoll Werte: tcp, udp. |
data[].public_port | integer | null | Vom Server vergebener öffentlicher Port |
data[].public_ip | string | server = Adresse des VPN-Servers, router = öffentliche IP des Routers Werte: server, router. |
data[].disabled | boolean | Deaktiviert |
data[].state | string | Zustand Werte: ready, applying, deleting. |
Mögliche Fehler: 401404429 Fehlercodes
/gateways/{token}/port-forwards
Port-Forward anlegen
asynchron Den öffentlichen Port vergibt der Server, er steht danach in public_port.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
destination | string | Pflicht | Ziel-IP im Tunnel |
target_port | integer | Pflicht | Ziel-Port Bereich: 1 bis 65499. |
protocol | string | Pflicht | Protokoll Werte: tcp, udp. |
name | string | Name | |
public_ip | string | server oder router (öffentliche IP des Routers, vorher anlegen) Werte: server, router. |
curl -X POST "https://ipv64.net/api/v2/gateways/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/port-forwards" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"destination":"10.7.0.2","target_port":443,"protocol":"tcp","name":"Webserver"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.name | string | Name |
data.destination | string | Ziel-IP im Tunnel |
data.target_port | integer | Ziel-Port |
data.protocol | string | Protokoll Werte: tcp, udp. |
data.public_port | integer | null | Vom Server vergebener öffentlicher Port |
data.public_ip | string | server = Adresse des VPN-Servers, router = öffentliche IP des Routers Werte: server, router. |
data.disabled | boolean | Deaktiviert |
data.state | string | Zustand Werte: ready, applying, deleting. |
Mögliche Fehler: 401404409422429 Fehlercodes
/gateways/{token}/port-forwards/{id}
Port-Forward ein- oder ausschalten
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
id | Pfad, string | Pflicht | ID der Ressource |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
disabled | boolean | Deaktiviert |
curl -X PATCH "https://ipv64.net/api/v2/gateways/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/port-forwards/12" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"disabled":true}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.name | string | Name |
data.destination | string | Ziel-IP im Tunnel |
data.target_port | integer | Ziel-Port |
data.protocol | string | Protokoll Werte: tcp, udp. |
data.public_port | integer | null | Vom Server vergebener öffentlicher Port |
data.public_ip | string | server = Adresse des VPN-Servers, router = öffentliche IP des Routers Werte: server, router. |
data.disabled | boolean | Deaktiviert |
data.state | string | Zustand Werte: ready, applying, deleting. |
Mögliche Fehler: 401404409422429 Fehlercodes
/gateways/{token}/port-forwards/{id}
Port-Forward löschen
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
id | Pfad, string | Pflicht | ID der Ressource |
curl -X DELETE "https://ipv64.net/api/v2/gateways/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/port-forwards/12" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | ID |
data.state | string | Zustand |
Mögliche Fehler: 401404409429 Fehlercodes
/gateways/{token}/peers
Peers des Gateways
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl "https://ipv64.net/api/v2/gateways/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/peers" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | string | Peer-ID |
data[].name | string | Name |
data[].state | string | Zustand Werte: ready, applying, deleting. |
data[].disabled | boolean | Deaktiviert |
data[].site_to_site | boolean | Als Site-to-Site markiert |
data[].ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data[].ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data[].dns_server | string | null | DNS-Server in der Client-Config |
data[].endpoint | string | null | Fester Endpunkt des Peers |
data[].endpoint_port | integer | null | Port des Endpunkts |
data[].keepalive | string | Keepalive hh:mm:ss |
data[].public_key | string | null | Öffentlicher Schlüssel |
data[].has_preshared_key | boolean | Preshared Key gesetzt |
data[].current_endpoint | string | null | Zuletzt gesehene Adresse |
data[].last_handshake | string | null | Letzter Handshake |
data[].traffic_bytes | object | |
data[].traffic_bytes.in | number | Eingehend |
data[].traffic_bytes.out | number | Ausgehend |
data[].allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data[].allowed_ips[].id | integer | ID |
data[].allowed_ips[].network | string | Netz |
Mögliche Fehler: 401404429 Fehlercodes
/gateways/{token}/peers
Peer anlegen
asynchron Schlüssel und Adressen werden automatisch vergeben.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Name |
curl -X POST "https://ipv64.net/api/v2/gateways/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/peers" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Laptop"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Peer-ID |
data.name | string | Name |
data.state | string | Zustand Werte: ready, applying, deleting. |
data.disabled | boolean | Deaktiviert |
data.site_to_site | boolean | Als Site-to-Site markiert |
data.ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.dns_server | string | null | DNS-Server in der Client-Config |
data.endpoint | string | null | Fester Endpunkt des Peers |
data.endpoint_port | integer | null | Port des Endpunkts |
data.keepalive | string | Keepalive hh:mm:ss |
data.public_key | string | null | Öffentlicher Schlüssel |
data.has_preshared_key | boolean | Preshared Key gesetzt |
data.current_endpoint | string | null | Zuletzt gesehene Adresse |
data.last_handshake | string | null | Letzter Handshake |
data.traffic_bytes | object | |
data.traffic_bytes.in | number | Eingehend |
data.traffic_bytes.out | number | Ausgehend |
data.allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.allowed_ips[].id | integer | ID |
data.allowed_ips[].network | string | Netz |
Mögliche Fehler: 401403404409422429 Fehlercodes
WireGuard-Peers. {token} ist die Peer-ID.
/peers/{token}
Peer mit AllowedIPs
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl "https://ipv64.net/api/v2/peers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Peer-ID |
data.name | string | Name |
data.state | string | Zustand Werte: ready, applying, deleting. |
data.disabled | boolean | Deaktiviert |
data.site_to_site | boolean | Als Site-to-Site markiert |
data.ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.dns_server | string | null | DNS-Server in der Client-Config |
data.endpoint | string | null | Fester Endpunkt des Peers |
data.endpoint_port | integer | null | Port des Endpunkts |
data.keepalive | string | Keepalive hh:mm:ss |
data.public_key | string | null | Öffentlicher Schlüssel |
data.has_preshared_key | boolean | Preshared Key gesetzt |
data.current_endpoint | string | null | Zuletzt gesehene Adresse |
data.last_handshake | string | null | Letzter Handshake |
data.traffic_bytes | object | |
data.traffic_bytes.in | number | Eingehend |
data.traffic_bytes.out | number | Ausgehend |
data.allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.allowed_ips[].id | integer | ID |
data.allowed_ips[].network | string | Netz |
Mögliche Fehler: 401404429 Fehlercodes
/peers/{token}
Peer ändern
name und dns_server wirken sofort (200). Alle anderen Felder werden am Gateway umgesetzt (202).
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Name | |
dns_server | string | DNS-Server für die Client-Config, leer = keiner | |
keepalive | string | Keepalive hh:mm:ss | |
endpoint | string | Fester Endpunkt (IP oder Hostname) | |
endpoint_port | integer | Port des Endpunkts Bereich: 0 bis 65535. | |
ipv4 | string | Tunnel-IPv4 in CIDR | |
ipv6 | string | Tunnel-IPv6 in CIDR | |
disabled | boolean | Deaktiviert | |
site_to_site | boolean | Site-to-Site |
curl -X PATCH "https://ipv64.net/api/v2/peers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keepalive":"00:00:25","dns_server":"1.1.1.1"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Peer-ID |
data.name | string | Name |
data.state | string | Zustand Werte: ready, applying, deleting. |
data.disabled | boolean | Deaktiviert |
data.site_to_site | boolean | Als Site-to-Site markiert |
data.ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.dns_server | string | null | DNS-Server in der Client-Config |
data.endpoint | string | null | Fester Endpunkt des Peers |
data.endpoint_port | integer | null | Port des Endpunkts |
data.keepalive | string | Keepalive hh:mm:ss |
data.public_key | string | null | Öffentlicher Schlüssel |
data.has_preshared_key | boolean | Preshared Key gesetzt |
data.current_endpoint | string | null | Zuletzt gesehene Adresse |
data.last_handshake | string | null | Letzter Handshake |
data.traffic_bytes | object | |
data.traffic_bytes.in | number | Eingehend |
data.traffic_bytes.out | number | Ausgehend |
data.allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.allowed_ips[].id | integer | ID |
data.allowed_ips[].network | string | Netz |
Mögliche Fehler: 401404409422429 Fehlercodes
/peers/{token}
Peer löschen
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X DELETE "https://ipv64.net/api/v2/peers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Peer-ID |
data.name | string | Name |
data.state | string | Zustand Werte: ready, applying, deleting. |
data.disabled | boolean | Deaktiviert |
data.site_to_site | boolean | Als Site-to-Site markiert |
data.ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.dns_server | string | null | DNS-Server in der Client-Config |
data.endpoint | string | null | Fester Endpunkt des Peers |
data.endpoint_port | integer | null | Port des Endpunkts |
data.keepalive | string | Keepalive hh:mm:ss |
data.public_key | string | null | Öffentlicher Schlüssel |
data.has_preshared_key | boolean | Preshared Key gesetzt |
data.current_endpoint | string | null | Zuletzt gesehene Adresse |
data.last_handshake | string | null | Letzter Handshake |
data.traffic_bytes | object | |
data.traffic_bytes.in | number | Eingehend |
data.traffic_bytes.out | number | Ausgehend |
data.allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.allowed_ips[].id | integer | ID |
data.allowed_ips[].network | string | Netz |
Mögliche Fehler: 401404409429 Fehlercodes
/peers/{token}/config
WireGuard-Konfiguration
Mit dem Header Accept: text/plain kommt die .conf-Datei direkt als Download. Sie enthält den privaten Schlüssel des Peers.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl "https://ipv64.net/api/v2/peers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/config" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.peer | string | Peer-ID |
data.config | string | Inhalt der .conf-Datei |
Mögliche Fehler: 401404409429 Fehlercodes
/peers/{token}/rotate-keys
Neues Schlüsselpaar
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/peers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/rotate-keys" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Peer-ID |
data.name | string | Name |
data.state | string | Zustand Werte: ready, applying, deleting. |
data.disabled | boolean | Deaktiviert |
data.site_to_site | boolean | Als Site-to-Site markiert |
data.ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.dns_server | string | null | DNS-Server in der Client-Config |
data.endpoint | string | null | Fester Endpunkt des Peers |
data.endpoint_port | integer | null | Port des Endpunkts |
data.keepalive | string | Keepalive hh:mm:ss |
data.public_key | string | null | Öffentlicher Schlüssel |
data.has_preshared_key | boolean | Preshared Key gesetzt |
data.current_endpoint | string | null | Zuletzt gesehene Adresse |
data.last_handshake | string | null | Letzter Handshake |
data.traffic_bytes | object | |
data.traffic_bytes.in | number | Eingehend |
data.traffic_bytes.out | number | Ausgehend |
data.allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.allowed_ips[].id | integer | ID |
data.allowed_ips[].network | string | Netz |
Mögliche Fehler: 401404409429 Fehlercodes
/peers/{token}/keys
Eigene Schlüssel setzen
asynchron Ohne private_key wird nur der öffentliche Schlüssel hinterlegt. Die Config enthält dann keinen privaten Schlüssel.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
public_key | string | Pflicht | Öffentlicher Schlüssel (Base64) |
private_key | string | Privater Schlüssel, muss passen | |
preshared_key | string | Preshared Key (Base64) |
curl -X PUT "https://ipv64.net/api/v2/peers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/keys" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"public_key":"xTIBA5rboUvnH4htodjb6e697QjLERt1NAB4mZqp8Dg="}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Peer-ID |
data.name | string | Name |
data.state | string | Zustand Werte: ready, applying, deleting. |
data.disabled | boolean | Deaktiviert |
data.site_to_site | boolean | Als Site-to-Site markiert |
data.ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.dns_server | string | null | DNS-Server in der Client-Config |
data.endpoint | string | null | Fester Endpunkt des Peers |
data.endpoint_port | integer | null | Port des Endpunkts |
data.keepalive | string | Keepalive hh:mm:ss |
data.public_key | string | null | Öffentlicher Schlüssel |
data.has_preshared_key | boolean | Preshared Key gesetzt |
data.current_endpoint | string | null | Zuletzt gesehene Adresse |
data.last_handshake | string | null | Letzter Handshake |
data.traffic_bytes | object | |
data.traffic_bytes.in | number | Eingehend |
data.traffic_bytes.out | number | Ausgehend |
data.allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.allowed_ips[].id | integer | ID |
data.allowed_ips[].network | string | Netz |
Mögliche Fehler: 401404409422429 Fehlercodes
/peers/{token}/allowed-ips
AllowedIP hinzufügen
Zusätzliches Netz in der Client-Config, zum Beispiel ein Netz hinter einem anderen Peer.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
network | string | Pflicht | IP oder Netz in CIDR |
curl -X POST "https://ipv64.net/api/v2/peers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/allowed-ips" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"network":"192.168.50.0/24"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Peer-ID |
data.name | string | Name |
data.state | string | Zustand Werte: ready, applying, deleting. |
data.disabled | boolean | Deaktiviert |
data.site_to_site | boolean | Als Site-to-Site markiert |
data.ipv4 | string | null | Tunnel-IPv4 (CIDR) |
data.ipv6 | string | null | Tunnel-IPv6 (CIDR) |
data.dns_server | string | null | DNS-Server in der Client-Config |
data.endpoint | string | null | Fester Endpunkt des Peers |
data.endpoint_port | integer | null | Port des Endpunkts |
data.keepalive | string | Keepalive hh:mm:ss |
data.public_key | string | null | Öffentlicher Schlüssel |
data.has_preshared_key | boolean | Preshared Key gesetzt |
data.current_endpoint | string | null | Zuletzt gesehene Adresse |
data.last_handshake | string | null | Letzter Handshake |
data.traffic_bytes | object | |
data.traffic_bytes.in | number | Eingehend |
data.traffic_bytes.out | number | Ausgehend |
data.allowed_ips | object[] | Nur in der Detailansicht: zusätzliche AllowedIPs der Client-Config |
data.allowed_ips[].id | integer | ID |
data.allowed_ips[].network | string | Netz |
Mögliche Fehler: 401404409422429 Fehlercodes
/peers/{token}/allowed-ips/{id}
AllowedIP entfernen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
id | Pfad, string | Pflicht | ID der Ressource |
curl -X DELETE "https://ipv64.net/api/v2/peers/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/allowed-ips/12" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404429 Fehlercodes
Persönliche DNS-Resolver mit DNS64, DoH, DoT, DoQ und Blocklisten. {token} ist die Client-ID.
/dns64/clients
Alle DNS64-Clients
curl "https://ipv64.net/api/v2/dns64/clients" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | string | Client-ID |
data[].name | string | Name |
data[].client_id | string | null | Kurzkennung in den Resolver-Adressen |
data[].state | string | Zustand Werte: ready, applying. |
data[].blocking_enabled | boolean | Filter aktiv |
data[].blocklists | string[] | Aktive Blocklisten Werte: ads, adult, threats. |
data[].servers | object[] | |
data[].servers[].location | string | Standort |
data[].servers[].hostname | string | Hostname |
data[].servers[].doh | string | DNS over HTTPS |
data[].servers[].dot | string | DNS over TLS |
data[].servers[].doq | string | DNS over QUIC |
data[].servers[].ipv6 | string | Persönliche IPv6 des Resolvers |
data[].servers[].ipv4_shared | string | Gemeinsame IPv4 (Zuordnung über Quell-Adressen) |
data[].servers[].ipv6_shared | string | Gemeinsame IPv6 |
data[].servers[].stamps | object | null | DNS-Stamps, nur in der Detailansicht |
data[].servers[].stamps.doh | string | |
data[].servers[].stamps.dot | string | |
data[].servers[].stamps.doq | string | |
data[].queries_total | integer | Anfragen gesamt |
data[].queries_blocked | integer | Davon blockiert |
data[].created_at | datetime | null | Angelegt |
data[].rules | object[] | Nur in der Detailansicht: eigene Allow- und Blockliste |
data[].rules[].id | integer | ID |
data[].rules[].domain | string | Domain |
data[].rules[].action | string | Aktion Werte: allow, block. |
data[].rules[].state | string | Zustand Werte: ready, applying. |
data[].sources | object[] | Nur in der Detailansicht: Quell-Adressen für die gemeinsamen Resolver-IPs |
data[].sources[].id | string | Numerische ID bei kind ip, Record-Token bei kind record |
data[].sources[].kind | string | Art Werte: ip, record. |
data[].sources[].address | string | Adresse |
data[].sources[].fqdn | string | Nur bei kind record |
Mögliche Fehler: 401429 Fehlercodes
/dns64/clients
Client anlegen
asynchron Resolver-Adressen und client_id stehen bereit, sobald state ready ist.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Name |
curl -X POST "https://ipv64.net/api/v2/dns64/clients" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Familie"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Client-ID |
data.name | string | Name |
data.client_id | string | null | Kurzkennung in den Resolver-Adressen |
data.state | string | Zustand Werte: ready, applying. |
data.blocking_enabled | boolean | Filter aktiv |
data.blocklists | string[] | Aktive Blocklisten Werte: ads, adult, threats. |
data.servers | object[] | |
data.servers[].location | string | Standort |
data.servers[].hostname | string | Hostname |
data.servers[].doh | string | DNS over HTTPS |
data.servers[].dot | string | DNS over TLS |
data.servers[].doq | string | DNS over QUIC |
data.servers[].ipv6 | string | Persönliche IPv6 des Resolvers |
data.servers[].ipv4_shared | string | Gemeinsame IPv4 (Zuordnung über Quell-Adressen) |
data.servers[].ipv6_shared | string | Gemeinsame IPv6 |
data.servers[].stamps | object | null | DNS-Stamps, nur in der Detailansicht |
data.servers[].stamps.doh | string | |
data.servers[].stamps.dot | string | |
data.servers[].stamps.doq | string | |
data.queries_total | integer | Anfragen gesamt |
data.queries_blocked | integer | Davon blockiert |
data.created_at | datetime | null | Angelegt |
data.rules | object[] | Nur in der Detailansicht: eigene Allow- und Blockliste |
data.rules[].id | integer | ID |
data.rules[].domain | string | Domain |
data.rules[].action | string | Aktion Werte: allow, block. |
data.rules[].state | string | Zustand Werte: ready, applying. |
data.sources | object[] | Nur in der Detailansicht: Quell-Adressen für die gemeinsamen Resolver-IPs |
data.sources[].id | string | Numerische ID bei kind ip, Record-Token bei kind record |
data.sources[].kind | string | Art Werte: ip, record. |
data.sources[].address | string | Adresse |
data.sources[].fqdn | string | Nur bei kind record |
Mögliche Fehler: 401403422429 Fehlercodes
/dns64/clients/{token}
Client mit Regeln, Quellen und DNS-Stamps
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl "https://ipv64.net/api/v2/dns64/clients/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Client-ID |
data.name | string | Name |
data.client_id | string | null | Kurzkennung in den Resolver-Adressen |
data.state | string | Zustand Werte: ready, applying. |
data.blocking_enabled | boolean | Filter aktiv |
data.blocklists | string[] | Aktive Blocklisten Werte: ads, adult, threats. |
data.servers | object[] | |
data.servers[].location | string | Standort |
data.servers[].hostname | string | Hostname |
data.servers[].doh | string | DNS over HTTPS |
data.servers[].dot | string | DNS over TLS |
data.servers[].doq | string | DNS over QUIC |
data.servers[].ipv6 | string | Persönliche IPv6 des Resolvers |
data.servers[].ipv4_shared | string | Gemeinsame IPv4 (Zuordnung über Quell-Adressen) |
data.servers[].ipv6_shared | string | Gemeinsame IPv6 |
data.servers[].stamps | object | null | DNS-Stamps, nur in der Detailansicht |
data.servers[].stamps.doh | string | |
data.servers[].stamps.dot | string | |
data.servers[].stamps.doq | string | |
data.queries_total | integer | Anfragen gesamt |
data.queries_blocked | integer | Davon blockiert |
data.created_at | datetime | null | Angelegt |
data.rules | object[] | Nur in der Detailansicht: eigene Allow- und Blockliste |
data.rules[].id | integer | ID |
data.rules[].domain | string | Domain |
data.rules[].action | string | Aktion Werte: allow, block. |
data.rules[].state | string | Zustand Werte: ready, applying. |
data.sources | object[] | Nur in der Detailansicht: Quell-Adressen für die gemeinsamen Resolver-IPs |
data.sources[].id | string | Numerische ID bei kind ip, Record-Token bei kind record |
data.sources[].kind | string | Art Werte: ip, record. |
data.sources[].address | string | Adresse |
data.sources[].fqdn | string | Nur bei kind record |
Mögliche Fehler: 401404429 Fehlercodes
/dns64/clients/{token}
Client ändern
Die Blocklisten adult und threats gibt es nicht im Free-Paket.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Name | |
blocking_enabled | boolean | Filter aktiv | |
blocklists | string[] | Aktive Blocklisten Werte: ads, adult, threats. |
curl -X PATCH "https://ipv64.net/api/v2/dns64/clients/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"blocklists":["ads","threats"]}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Client-ID |
data.name | string | Name |
data.client_id | string | null | Kurzkennung in den Resolver-Adressen |
data.state | string | Zustand Werte: ready, applying. |
data.blocking_enabled | boolean | Filter aktiv |
data.blocklists | string[] | Aktive Blocklisten Werte: ads, adult, threats. |
data.servers | object[] | |
data.servers[].location | string | Standort |
data.servers[].hostname | string | Hostname |
data.servers[].doh | string | DNS over HTTPS |
data.servers[].dot | string | DNS over TLS |
data.servers[].doq | string | DNS over QUIC |
data.servers[].ipv6 | string | Persönliche IPv6 des Resolvers |
data.servers[].ipv4_shared | string | Gemeinsame IPv4 (Zuordnung über Quell-Adressen) |
data.servers[].ipv6_shared | string | Gemeinsame IPv6 |
data.servers[].stamps | object | null | DNS-Stamps, nur in der Detailansicht |
data.servers[].stamps.doh | string | |
data.servers[].stamps.dot | string | |
data.servers[].stamps.doq | string | |
data.queries_total | integer | Anfragen gesamt |
data.queries_blocked | integer | Davon blockiert |
data.created_at | datetime | null | Angelegt |
data.rules | object[] | Nur in der Detailansicht: eigene Allow- und Blockliste |
data.rules[].id | integer | ID |
data.rules[].domain | string | Domain |
data.rules[].action | string | Aktion Werte: allow, block. |
data.rules[].state | string | Zustand Werte: ready, applying. |
data.sources | object[] | Nur in der Detailansicht: Quell-Adressen für die gemeinsamen Resolver-IPs |
data.sources[].id | string | Numerische ID bei kind ip, Record-Token bei kind record |
data.sources[].kind | string | Art Werte: ip, record. |
data.sources[].address | string | Adresse |
data.sources[].fqdn | string | Nur bei kind record |
Mögliche Fehler: 401403404422429 Fehlercodes
/dns64/clients/{token}
Client löschen
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
curl -X DELETE "https://ipv64.net/api/v2/dns64/clients/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Client-ID |
data.state | string | Zustand |
Mögliche Fehler: 401404429 Fehlercodes
/dns64/clients/{token}/rules
Domain erlauben oder sperren
asynchron | Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
domain | string | Pflicht | Domain |
action | string | Aktion Werte: allow, block. |
curl -X POST "https://ipv64.net/api/v2/dns64/clients/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/rules" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain":"example.com","action":"block"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Client-ID |
data.name | string | Name |
data.client_id | string | null | Kurzkennung in den Resolver-Adressen |
data.state | string | Zustand Werte: ready, applying. |
data.blocking_enabled | boolean | Filter aktiv |
data.blocklists | string[] | Aktive Blocklisten Werte: ads, adult, threats. |
data.servers | object[] | |
data.servers[].location | string | Standort |
data.servers[].hostname | string | Hostname |
data.servers[].doh | string | DNS over HTTPS |
data.servers[].dot | string | DNS over TLS |
data.servers[].doq | string | DNS over QUIC |
data.servers[].ipv6 | string | Persönliche IPv6 des Resolvers |
data.servers[].ipv4_shared | string | Gemeinsame IPv4 (Zuordnung über Quell-Adressen) |
data.servers[].ipv6_shared | string | Gemeinsame IPv6 |
data.servers[].stamps | object | null | DNS-Stamps, nur in der Detailansicht |
data.servers[].stamps.doh | string | |
data.servers[].stamps.dot | string | |
data.servers[].stamps.doq | string | |
data.queries_total | integer | Anfragen gesamt |
data.queries_blocked | integer | Davon blockiert |
data.created_at | datetime | null | Angelegt |
data.rules | object[] | Nur in der Detailansicht: eigene Allow- und Blockliste |
data.rules[].id | integer | ID |
data.rules[].domain | string | Domain |
data.rules[].action | string | Aktion Werte: allow, block. |
data.rules[].state | string | Zustand Werte: ready, applying. |
data.sources | object[] | Nur in der Detailansicht: Quell-Adressen für die gemeinsamen Resolver-IPs |
data.sources[].id | string | Numerische ID bei kind ip, Record-Token bei kind record |
data.sources[].kind | string | Art Werte: ip, record. |
data.sources[].address | string | Adresse |
data.sources[].fqdn | string | Nur bei kind record |
Mögliche Fehler: 401404409422429 Fehlercodes
/dns64/clients/{token}/rules/{id}
Regel entfernen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
id | Pfad, string | Pflicht | ID der Ressource |
curl -X DELETE "https://ipv64.net/api/v2/dns64/clients/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/rules/12" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404429 Fehlercodes
/dns64/clients/{token}/sources
Quell-Adresse hinzufügen
asynchron Damit die gemeinsamen Resolver-IPs Anfragen deinem Client zuordnen. Entweder eine feste ip oder ein eigener A/AAAA-Record, dessen DynDNS-Adresse verfolgt wird. Je Art höchstens 5.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
ip | string | Feste IP | |
record | string | Record-ID oder -Token |
curl -X POST "https://ipv64.net/api/v2/dns64/clients/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/sources" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"record":"4711"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | string | Client-ID |
data.name | string | Name |
data.client_id | string | null | Kurzkennung in den Resolver-Adressen |
data.state | string | Zustand Werte: ready, applying. |
data.blocking_enabled | boolean | Filter aktiv |
data.blocklists | string[] | Aktive Blocklisten Werte: ads, adult, threats. |
data.servers | object[] | |
data.servers[].location | string | Standort |
data.servers[].hostname | string | Hostname |
data.servers[].doh | string | DNS over HTTPS |
data.servers[].dot | string | DNS over TLS |
data.servers[].doq | string | DNS over QUIC |
data.servers[].ipv6 | string | Persönliche IPv6 des Resolvers |
data.servers[].ipv4_shared | string | Gemeinsame IPv4 (Zuordnung über Quell-Adressen) |
data.servers[].ipv6_shared | string | Gemeinsame IPv6 |
data.servers[].stamps | object | null | DNS-Stamps, nur in der Detailansicht |
data.servers[].stamps.doh | string | |
data.servers[].stamps.dot | string | |
data.servers[].stamps.doq | string | |
data.queries_total | integer | Anfragen gesamt |
data.queries_blocked | integer | Davon blockiert |
data.created_at | datetime | null | Angelegt |
data.rules | object[] | Nur in der Detailansicht: eigene Allow- und Blockliste |
data.rules[].id | integer | ID |
data.rules[].domain | string | Domain |
data.rules[].action | string | Aktion Werte: allow, block. |
data.rules[].state | string | Zustand Werte: ready, applying. |
data.sources | object[] | Nur in der Detailansicht: Quell-Adressen für die gemeinsamen Resolver-IPs |
data.sources[].id | string | Numerische ID bei kind ip, Record-Token bei kind record |
data.sources[].kind | string | Art Werte: ip, record. |
data.sources[].address | string | Adresse |
data.sources[].fqdn | string | Nur bei kind record |
Mögliche Fehler: 401403404409422429 Fehlercodes
/dns64/clients/{token}/sources/{id}
Quell-Adresse entfernen
{id} ist die numerische ID bei festen IPs oder der Record-Token bei Records.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token bzw. ID der Ressource (32 Zeichen) |
id | Pfad, string | Pflicht | ID der Ressource |
curl -X DELETE "https://ipv64.net/api/v2/dns64/clients/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/sources/12" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404429 Fehlercodes
Neue Healthcheck-Welt (ipv64-hub, Node64): Checks mit Messstellen (online bei ipv64, lokal auf einer Node, hybrid), Kanäle, Wartungsfenster, Störungen. Nur für Accounts der neuen Welt; die alten /healthchecks-Pfade bleiben unverändert.
/hc2/account
Account: Paket, Limits, Standorte
curl "https://ipv64.net/api/v2/hc2/account" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.plan | string | |
data.online_measuring_points | object | |
data.online_measuring_points.used | integer | |
data.online_measuring_points.limit | integer | null = unbegrenzt |
data.checks_per_day | object | Tageskontingent: Online-Messungen je Standort plus Pushes an die Online-Adresse (Tag Europe/Berlin). Erreicht: Online-Checks pausieren bis Mitternacht. |
data.checks_per_day.used | integer | heute |
data.checks_per_day.limit | integer | null = unbegrenzt |
data.locations_per_check | integer | |
data.sms_per_day | integer | |
data.locations | object[] | |
data.locations[].code | string | |
data.locations[].name | string | |
data.nodes | object | |
data.nodes.total | integer | |
data.nodes.online | integer | |
data.checks | integer |
Mögliche Fehler: 401429 Fehlercodes
/hc2/settings
Benachrichtigungs-Einstellungen (Ruhezeiten, Sammelmeldung)
curl "https://ipv64.net/api/v2/hc2/settings" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object |
Mögliche Fehler: 401429 Fehlercodes
/hc2/settings
Einstellungen ändern
| Feld | Typ | Beschreibung | |
|---|---|---|---|
notify.quiet_enabled | boolean | ||
notify.quiet_from | string | HH:MM | |
notify.quiet_to | string | HH:MM | |
notify.quiet_days | string | 1-7, Komma | |
notify.rate_per_hour | integer | 0 = unbegrenzt | |
notify.batch_threshold | integer | ||
notify.batch_window_seconds | integer |
curl -X PATCH "https://ipv64.net/api/v2/hc2/settings" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object |
Mögliche Fehler: 401422429 Fehlercodes
/hc2/checks
Checks auflisten
| Feld | Typ | Beschreibung | |
|---|---|---|---|
type | Query, string | ||
state | Query, string | up, down, degraded, flapping, paused, pending | |
execution | Query, string | online, local, both | |
node_id | Query, string | ||
tag | Query, string | ||
group | Query, string | Gruppe | |
q | Query, string | Suche in Name/Ziel |
curl "https://ipv64.net/api/v2/hc2/checks" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].name | string | Name |
data[].type | string | Typ Werte: http, keyword, json, dns, icmp, tcp, port, cert, push, docker, whois. |
data[].target | string | Ziel: URL (http/keyword/json), Name (dns, bei PTR auch IP), Host/IP (icmp), host oder host:port (tcp/port/cert); leer bei push |
data[].params | object | Typabhängige Parameter (Schlüssel wie in der Node) |
data[].params.method | string | http/keyword: Methode (GET, HEAD, POST, ...) |
data[].params.accept_status | string | http/keyword: erlaubte Statuscodes, z. B. 200-299,301 |
data[].params.follow_redirects | boolean | http/keyword |
data[].params.max_redirects | integer | http/keyword |
data[].params.keyword | string | keyword: gesuchter Text |
data[].params.keyword_absent | boolean | keyword: Text darf NICHT vorkommen |
data[].params.basic_user | string | http/keyword |
data[].params.basic_password | string | http/keyword |
data[].params.headers | object | http/keyword: zusätzliche Header |
data[].params.body | string | http/keyword |
data[].params.insecure_tls | boolean | http/keyword: Zertifikatsfehler ignorieren |
data[].params.cert_min_days | integer | http/keyword (HTTPS): gestört, wenn das Zertifikat in weniger Tagen abläuft (0 = aus) |
data[].params.count | integer | icmp: Pakete (1-20) |
data[].params.max_loss_percent | integer | icmp |
data[].params.max_latency_ms | integer | icmp, 0 = aus |
data[].params.port | integer | tcp/port/cert: Port, alternativ host:port im Ziel |
data[].params.send | string | tcp: zu sendende Daten |
data[].params.expect | string | tcp: erwarteter Antwortanfang; port: open|closed; dns: any, contains, equals, regex, nxdomain, public_ip (nur lokal) |
data[].params.tls | boolean | tcp: TLS nach dem Verbinden |
data[].params.min_days | integer | cert: Mindest-Restlaufzeit in Tagen |
data[].params.server_name | string | cert: SNI |
data[].params.skip_chain | boolean | cert |
data[].params.skip_hostname | boolean | cert |
data[].params.period_seconds | integer | push: erwarteter Abstand |
data[].params.grace_seconds | integer | push: Kulanz |
data[].params.json_rules | object[] | json: Bedingungen auf die JSON-Antwort (höchstens 10). Pfad z. B. data.items[0].status; op: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists |
data[].params.json_rules[].path | string | |
data[].params.json_rules[].op | string | Werte: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists. |
data[].params.json_rules[].value | string | |
data[].params.json_any | boolean | json: eine erfüllte Bedingung genügt (sonst alle) |
data[].params.record_type | string | dns: Eintragstyp (Standard A) Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR, SOA. |
data[].params.resolver | string | dns: Standard-Resolver, bestimmter Server (server) oder zuständige Nameserver der Zone Werte: system, server, authoritative. |
data[].params.server | string | dns bei resolver=server: IP, optional mit Port (1.1.1.1, [2606:4700::1111]:53) |
data[].params.values | string[] | dns: erwartete Werte (contains/equals) bzw. ein Muster (regex) |
data[].params.dnssec | boolean | dns: Antwort muss DNSSEC-validiert sein |
data[].params.min_ttl | integer | dns: Mindest-TTL in Sekunden (0 = egal) |
data[].interval_seconds | integer | Intervall, mindestens 20 |
data[].retry_interval_seconds | integer | Wiederholung bei Fehler, mindestens 5 |
data[].retries | integer | zusätzliche Versuche vor Alarm (0-10) |
data[].connect_timeout_seconds | number | Verbindungs-Timeout |
data[].timeout_seconds | number | Gesamt-Timeout |
data[].invert | boolean | Ergebnis umkehren |
data[].stabilize | integer | Messungen bis Zustandswechsel (1-20) |
data[].ip_mode | string | auto, ipv4, ipv6 oder both Werte: auto, ipv4, ipv6, both. |
data[].tags | string[] | Tags |
data[].group | string | Gruppe (frei benannt) |
data[].description | string | Beschreibung |
data[].paused | boolean | pausiert |
data[].parent | string | Token des übergeordneten Checks (Abhängigkeit) oder leer |
data[].critical | boolean | kritisch: ignoriert Ruhezeiten |
data[].execution | string | Ausführungsort: online (ipv64), local (Node), both (hybrid) Werte: online, local, both. |
data[].node_id | string | Besitzer-Node für local/both (bearbeitet in der Node, benachrichtigt ohne Verbindung); allein angegeben = eine messende Node |
data[].nodes | string[] | Messende Nodes (IDs) für local/both; mehrere möglich, Docker/Push genau eine. Ausgabe: Liste {node_id, name} |
data[].locations | string[] | Standorte für online/both (Anzahl je Account-Klasse) Werte: nbg, fsn. |
data[].policy | string | Gesamtregel bei mehreren Messstellen Werte: all, any, majority. |
data[].notify_degraded | boolean | auch bei teilweise gestört benachrichtigen |
data[].notify_down | boolean | bei Störung benachrichtigen |
data[].notify_up | boolean | bei Entwarnung benachrichtigen |
data[].channels | integer[] | Kanal-IDs; leer = Standardkanäle |
data[].repeat_minutes | integer | Erinnerung bei anhaltender Störung in Minuten, 0 = aus |
data[].token | string | Token |
data[].node_name | string | Name der Node |
data[].revision | integer | Revision |
data[].created_at | datetime | angelegt |
data[].updated_at | datetime | geändert |
data[].state | object | |
data[].state.state | string | up, down, degraded, flapping, paused, pending |
data[].state.since | datetime | seit |
data[].state.last_check_at | datetime | letzte Messung |
data[].state.last_status | string | up|down |
data[].state.last_latency_ms | number | Latenz |
data[].state.last_reason | string | Grund |
data[].state.last_message | string | Meldung |
data[].state.down_since | datetime | gestört seit |
data[].state.last_push_at | datetime | letzter Push |
data[].push | object | nur bei type push |
data[].push.url | string | Push-URL bei ipv64 |
data[].push.hub_url | string | Push-URL am hub |
data[].push.node_path | string | Pfad an der Node (http://<node>/api/push/<token>) |
Mögliche Fehler: 401429 Fehlercodes
/hc2/checks
Check anlegen
Online-Checks zählen je Standort gegen das Limit und dürfen keine privaten Ziele haben; lokale Checks brauchen eine verknüpfte Node.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Pflicht | Name |
type | string | Pflicht | Typ Werte: http, keyword, json, dns, icmp, tcp, port, cert, push, docker, whois. |
target | string | Ziel: URL (http/keyword/json), Name (dns, bei PTR auch IP), Host/IP (icmp), host oder host:port (tcp/port/cert); leer bei push | |
params | object | Typabhängige Parameter (Schlüssel wie in der Node) | |
params.method | string | http/keyword: Methode (GET, HEAD, POST, ...) | |
params.accept_status | string | http/keyword: erlaubte Statuscodes, z. B. 200-299,301 | |
params.follow_redirects | boolean | http/keyword | |
params.max_redirects | integer | http/keyword | |
params.keyword | string | keyword: gesuchter Text | |
params.keyword_absent | boolean | keyword: Text darf NICHT vorkommen | |
params.basic_user | string | http/keyword | |
params.basic_password | string | http/keyword | |
params.headers | object | http/keyword: zusätzliche Header | |
params.body | string | http/keyword | |
params.insecure_tls | boolean | http/keyword: Zertifikatsfehler ignorieren | |
params.cert_min_days | integer | http/keyword (HTTPS): gestört, wenn das Zertifikat in weniger Tagen abläuft (0 = aus) | |
params.count | integer | icmp: Pakete (1-20) | |
params.max_loss_percent | integer | icmp | |
params.max_latency_ms | integer | icmp, 0 = aus | |
params.port | integer | tcp/port/cert: Port, alternativ host:port im Ziel | |
params.send | string | tcp: zu sendende Daten | |
params.expect | string | tcp: erwarteter Antwortanfang; port: open|closed; dns: any, contains, equals, regex, nxdomain, public_ip (nur lokal) | |
params.tls | boolean | tcp: TLS nach dem Verbinden | |
params.min_days | integer | cert: Mindest-Restlaufzeit in Tagen | |
params.server_name | string | cert: SNI | |
params.skip_chain | boolean | cert | |
params.skip_hostname | boolean | cert | |
params.period_seconds | integer | push: erwarteter Abstand | |
params.grace_seconds | integer | push: Kulanz | |
params.json_rules | object[] | json: Bedingungen auf die JSON-Antwort (höchstens 10). Pfad z. B. data.items[0].status; op: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists | |
params.json_rules[].path | string | Pflicht | |
params.json_rules[].op | string | Pflicht | Werte: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists. |
params.json_rules[].value | string | ||
params.json_any | boolean | json: eine erfüllte Bedingung genügt (sonst alle) | |
params.record_type | string | dns: Eintragstyp (Standard A) Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR, SOA. | |
params.resolver | string | dns: Standard-Resolver, bestimmter Server (server) oder zuständige Nameserver der Zone Werte: system, server, authoritative. | |
params.server | string | dns bei resolver=server: IP, optional mit Port (1.1.1.1, [2606:4700::1111]:53) | |
params.values | string[] | dns: erwartete Werte (contains/equals) bzw. ein Muster (regex) | |
params.dnssec | boolean | dns: Antwort muss DNSSEC-validiert sein | |
params.min_ttl | integer | dns: Mindest-TTL in Sekunden (0 = egal) | |
interval_seconds | integer | Intervall, mindestens 20 | |
retry_interval_seconds | integer | Wiederholung bei Fehler, mindestens 5 | |
retries | integer | zusätzliche Versuche vor Alarm (0-10) | |
connect_timeout_seconds | number | Verbindungs-Timeout | |
timeout_seconds | number | Gesamt-Timeout | |
invert | boolean | Ergebnis umkehren | |
stabilize | integer | Messungen bis Zustandswechsel (1-20) | |
ip_mode | string | auto, ipv4, ipv6 oder both Werte: auto, ipv4, ipv6, both. | |
tags | string[] | Tags | |
group | string | Gruppe (frei benannt) | |
description | string | Beschreibung | |
paused | boolean | pausiert | |
parent | string | Token des übergeordneten Checks (Abhängigkeit) oder leer | |
critical | boolean | kritisch: ignoriert Ruhezeiten | |
execution | string | Ausführungsort: online (ipv64), local (Node), both (hybrid) Werte: online, local, both. | |
node_id | string | Besitzer-Node für local/both (bearbeitet in der Node, benachrichtigt ohne Verbindung); allein angegeben = eine messende Node | |
nodes | string[] | Messende Nodes (IDs) für local/both; mehrere möglich, Docker/Push genau eine. Ausgabe: Liste {node_id, name} | |
locations | string[] | Standorte für online/both (Anzahl je Account-Klasse) Werte: nbg, fsn. | |
policy | string | Gesamtregel bei mehreren Messstellen Werte: all, any, majority. | |
notify_degraded | boolean | auch bei teilweise gestört benachrichtigen | |
notify_down | boolean | bei Störung benachrichtigen | |
notify_up | boolean | bei Entwarnung benachrichtigen | |
channels | integer[] | Kanal-IDs; leer = Standardkanäle | |
repeat_minutes | integer | Erinnerung bei anhaltender Störung in Minuten, 0 = aus |
curl -X POST "https://ipv64.net/api/v2/hc2/checks" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.name | string | Name |
data.type | string | Typ Werte: http, keyword, json, dns, icmp, tcp, port, cert, push, docker, whois. |
data.target | string | Ziel: URL (http/keyword/json), Name (dns, bei PTR auch IP), Host/IP (icmp), host oder host:port (tcp/port/cert); leer bei push |
data.params | object | Typabhängige Parameter (Schlüssel wie in der Node) |
data.params.method | string | http/keyword: Methode (GET, HEAD, POST, ...) |
data.params.accept_status | string | http/keyword: erlaubte Statuscodes, z. B. 200-299,301 |
data.params.follow_redirects | boolean | http/keyword |
data.params.max_redirects | integer | http/keyword |
data.params.keyword | string | keyword: gesuchter Text |
data.params.keyword_absent | boolean | keyword: Text darf NICHT vorkommen |
data.params.basic_user | string | http/keyword |
data.params.basic_password | string | http/keyword |
data.params.headers | object | http/keyword: zusätzliche Header |
data.params.body | string | http/keyword |
data.params.insecure_tls | boolean | http/keyword: Zertifikatsfehler ignorieren |
data.params.cert_min_days | integer | http/keyword (HTTPS): gestört, wenn das Zertifikat in weniger Tagen abläuft (0 = aus) |
data.params.count | integer | icmp: Pakete (1-20) |
data.params.max_loss_percent | integer | icmp |
data.params.max_latency_ms | integer | icmp, 0 = aus |
data.params.port | integer | tcp/port/cert: Port, alternativ host:port im Ziel |
data.params.send | string | tcp: zu sendende Daten |
data.params.expect | string | tcp: erwarteter Antwortanfang; port: open|closed; dns: any, contains, equals, regex, nxdomain, public_ip (nur lokal) |
data.params.tls | boolean | tcp: TLS nach dem Verbinden |
data.params.min_days | integer | cert: Mindest-Restlaufzeit in Tagen |
data.params.server_name | string | cert: SNI |
data.params.skip_chain | boolean | cert |
data.params.skip_hostname | boolean | cert |
data.params.period_seconds | integer | push: erwarteter Abstand |
data.params.grace_seconds | integer | push: Kulanz |
data.params.json_rules | object[] | json: Bedingungen auf die JSON-Antwort (höchstens 10). Pfad z. B. data.items[0].status; op: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists |
data.params.json_rules[].path | string | |
data.params.json_rules[].op | string | Werte: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists. |
data.params.json_rules[].value | string | |
data.params.json_any | boolean | json: eine erfüllte Bedingung genügt (sonst alle) |
data.params.record_type | string | dns: Eintragstyp (Standard A) Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR, SOA. |
data.params.resolver | string | dns: Standard-Resolver, bestimmter Server (server) oder zuständige Nameserver der Zone Werte: system, server, authoritative. |
data.params.server | string | dns bei resolver=server: IP, optional mit Port (1.1.1.1, [2606:4700::1111]:53) |
data.params.values | string[] | dns: erwartete Werte (contains/equals) bzw. ein Muster (regex) |
data.params.dnssec | boolean | dns: Antwort muss DNSSEC-validiert sein |
data.params.min_ttl | integer | dns: Mindest-TTL in Sekunden (0 = egal) |
data.interval_seconds | integer | Intervall, mindestens 20 |
data.retry_interval_seconds | integer | Wiederholung bei Fehler, mindestens 5 |
data.retries | integer | zusätzliche Versuche vor Alarm (0-10) |
data.connect_timeout_seconds | number | Verbindungs-Timeout |
data.timeout_seconds | number | Gesamt-Timeout |
data.invert | boolean | Ergebnis umkehren |
data.stabilize | integer | Messungen bis Zustandswechsel (1-20) |
data.ip_mode | string | auto, ipv4, ipv6 oder both Werte: auto, ipv4, ipv6, both. |
data.tags | string[] | Tags |
data.group | string | Gruppe (frei benannt) |
data.description | string | Beschreibung |
data.paused | boolean | pausiert |
data.parent | string | Token des übergeordneten Checks (Abhängigkeit) oder leer |
data.critical | boolean | kritisch: ignoriert Ruhezeiten |
data.execution | string | Ausführungsort: online (ipv64), local (Node), both (hybrid) Werte: online, local, both. |
data.node_id | string | Besitzer-Node für local/both (bearbeitet in der Node, benachrichtigt ohne Verbindung); allein angegeben = eine messende Node |
data.nodes | string[] | Messende Nodes (IDs) für local/both; mehrere möglich, Docker/Push genau eine. Ausgabe: Liste {node_id, name} |
data.locations | string[] | Standorte für online/both (Anzahl je Account-Klasse) Werte: nbg, fsn. |
data.policy | string | Gesamtregel bei mehreren Messstellen Werte: all, any, majority. |
data.notify_degraded | boolean | auch bei teilweise gestört benachrichtigen |
data.notify_down | boolean | bei Störung benachrichtigen |
data.notify_up | boolean | bei Entwarnung benachrichtigen |
data.channels | integer[] | Kanal-IDs; leer = Standardkanäle |
data.repeat_minutes | integer | Erinnerung bei anhaltender Störung in Minuten, 0 = aus |
data.token | string | Token |
data.node_name | string | Name der Node |
data.revision | integer | Revision |
data.created_at | datetime | angelegt |
data.updated_at | datetime | geändert |
data.state | object | |
data.state.state | string | up, down, degraded, flapping, paused, pending |
data.state.since | datetime | seit |
data.state.last_check_at | datetime | letzte Messung |
data.state.last_status | string | up|down |
data.state.last_latency_ms | number | Latenz |
data.state.last_reason | string | Grund |
data.state.last_message | string | Meldung |
data.state.down_since | datetime | gestört seit |
data.state.last_push_at | datetime | letzter Push |
data.push | object | nur bei type push |
data.push.url | string | Push-URL bei ipv64 |
data.push.hub_url | string | Push-URL am hub |
data.push.node_path | string | Pfad an der Node (http://<node>/api/push/<token>) |
data.sources | object[] | Zustand je Messstelle |
data.sources[].source | string | loc:nbg, loc:fsn oder node:<id> |
data.sources[].label | string | lesbarer Name |
data.sources[].state | string | Zustand dieser Messstelle |
data.sources[].since | datetime | |
data.sources[].last_check_at | datetime | |
data.sources[].last_status | string | |
data.sources[].last_latency_ms | number | |
data.sources[].last_reason | string | |
data.sources[].last_message | string | |
data.sources[].consecutive_fail | integer | |
data.sources[].consecutive_ok | integer | |
data.availability_percent | object | |
data.availability_percent.24h | number | |
data.availability_percent.30d | number | |
data.availability_percent.1y | number |
Mögliche Fehler: 401403422429 Fehlercodes
/hc2/checks/{token}
Check mit Messstellen und Verfügbarkeit
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token des Checks (32 Zeichen) |
curl "https://ipv64.net/api/v2/hc2/checks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.name | string | Name |
data.type | string | Typ Werte: http, keyword, json, dns, icmp, tcp, port, cert, push, docker, whois. |
data.target | string | Ziel: URL (http/keyword/json), Name (dns, bei PTR auch IP), Host/IP (icmp), host oder host:port (tcp/port/cert); leer bei push |
data.params | object | Typabhängige Parameter (Schlüssel wie in der Node) |
data.params.method | string | http/keyword: Methode (GET, HEAD, POST, ...) |
data.params.accept_status | string | http/keyword: erlaubte Statuscodes, z. B. 200-299,301 |
data.params.follow_redirects | boolean | http/keyword |
data.params.max_redirects | integer | http/keyword |
data.params.keyword | string | keyword: gesuchter Text |
data.params.keyword_absent | boolean | keyword: Text darf NICHT vorkommen |
data.params.basic_user | string | http/keyword |
data.params.basic_password | string | http/keyword |
data.params.headers | object | http/keyword: zusätzliche Header |
data.params.body | string | http/keyword |
data.params.insecure_tls | boolean | http/keyword: Zertifikatsfehler ignorieren |
data.params.cert_min_days | integer | http/keyword (HTTPS): gestört, wenn das Zertifikat in weniger Tagen abläuft (0 = aus) |
data.params.count | integer | icmp: Pakete (1-20) |
data.params.max_loss_percent | integer | icmp |
data.params.max_latency_ms | integer | icmp, 0 = aus |
data.params.port | integer | tcp/port/cert: Port, alternativ host:port im Ziel |
data.params.send | string | tcp: zu sendende Daten |
data.params.expect | string | tcp: erwarteter Antwortanfang; port: open|closed; dns: any, contains, equals, regex, nxdomain, public_ip (nur lokal) |
data.params.tls | boolean | tcp: TLS nach dem Verbinden |
data.params.min_days | integer | cert: Mindest-Restlaufzeit in Tagen |
data.params.server_name | string | cert: SNI |
data.params.skip_chain | boolean | cert |
data.params.skip_hostname | boolean | cert |
data.params.period_seconds | integer | push: erwarteter Abstand |
data.params.grace_seconds | integer | push: Kulanz |
data.params.json_rules | object[] | json: Bedingungen auf die JSON-Antwort (höchstens 10). Pfad z. B. data.items[0].status; op: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists |
data.params.json_rules[].path | string | |
data.params.json_rules[].op | string | Werte: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists. |
data.params.json_rules[].value | string | |
data.params.json_any | boolean | json: eine erfüllte Bedingung genügt (sonst alle) |
data.params.record_type | string | dns: Eintragstyp (Standard A) Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR, SOA. |
data.params.resolver | string | dns: Standard-Resolver, bestimmter Server (server) oder zuständige Nameserver der Zone Werte: system, server, authoritative. |
data.params.server | string | dns bei resolver=server: IP, optional mit Port (1.1.1.1, [2606:4700::1111]:53) |
data.params.values | string[] | dns: erwartete Werte (contains/equals) bzw. ein Muster (regex) |
data.params.dnssec | boolean | dns: Antwort muss DNSSEC-validiert sein |
data.params.min_ttl | integer | dns: Mindest-TTL in Sekunden (0 = egal) |
data.interval_seconds | integer | Intervall, mindestens 20 |
data.retry_interval_seconds | integer | Wiederholung bei Fehler, mindestens 5 |
data.retries | integer | zusätzliche Versuche vor Alarm (0-10) |
data.connect_timeout_seconds | number | Verbindungs-Timeout |
data.timeout_seconds | number | Gesamt-Timeout |
data.invert | boolean | Ergebnis umkehren |
data.stabilize | integer | Messungen bis Zustandswechsel (1-20) |
data.ip_mode | string | auto, ipv4, ipv6 oder both Werte: auto, ipv4, ipv6, both. |
data.tags | string[] | Tags |
data.group | string | Gruppe (frei benannt) |
data.description | string | Beschreibung |
data.paused | boolean | pausiert |
data.parent | string | Token des übergeordneten Checks (Abhängigkeit) oder leer |
data.critical | boolean | kritisch: ignoriert Ruhezeiten |
data.execution | string | Ausführungsort: online (ipv64), local (Node), both (hybrid) Werte: online, local, both. |
data.node_id | string | Besitzer-Node für local/both (bearbeitet in der Node, benachrichtigt ohne Verbindung); allein angegeben = eine messende Node |
data.nodes | string[] | Messende Nodes (IDs) für local/both; mehrere möglich, Docker/Push genau eine. Ausgabe: Liste {node_id, name} |
data.locations | string[] | Standorte für online/both (Anzahl je Account-Klasse) Werte: nbg, fsn. |
data.policy | string | Gesamtregel bei mehreren Messstellen Werte: all, any, majority. |
data.notify_degraded | boolean | auch bei teilweise gestört benachrichtigen |
data.notify_down | boolean | bei Störung benachrichtigen |
data.notify_up | boolean | bei Entwarnung benachrichtigen |
data.channels | integer[] | Kanal-IDs; leer = Standardkanäle |
data.repeat_minutes | integer | Erinnerung bei anhaltender Störung in Minuten, 0 = aus |
data.token | string | Token |
data.node_name | string | Name der Node |
data.revision | integer | Revision |
data.created_at | datetime | angelegt |
data.updated_at | datetime | geändert |
data.state | object | |
data.state.state | string | up, down, degraded, flapping, paused, pending |
data.state.since | datetime | seit |
data.state.last_check_at | datetime | letzte Messung |
data.state.last_status | string | up|down |
data.state.last_latency_ms | number | Latenz |
data.state.last_reason | string | Grund |
data.state.last_message | string | Meldung |
data.state.down_since | datetime | gestört seit |
data.state.last_push_at | datetime | letzter Push |
data.push | object | nur bei type push |
data.push.url | string | Push-URL bei ipv64 |
data.push.hub_url | string | Push-URL am hub |
data.push.node_path | string | Pfad an der Node (http://<node>/api/push/<token>) |
data.sources | object[] | Zustand je Messstelle |
data.sources[].source | string | loc:nbg, loc:fsn oder node:<id> |
data.sources[].label | string | lesbarer Name |
data.sources[].state | string | Zustand dieser Messstelle |
data.sources[].since | datetime | |
data.sources[].last_check_at | datetime | |
data.sources[].last_status | string | |
data.sources[].last_latency_ms | number | |
data.sources[].last_reason | string | |
data.sources[].last_message | string | |
data.sources[].consecutive_fail | integer | |
data.sources[].consecutive_ok | integer | |
data.availability_percent | object | |
data.availability_percent.24h | number | |
data.availability_percent.30d | number | |
data.availability_percent.1y | number |
Mögliche Fehler: 401404429 Fehlercodes
/hc2/checks/{token}
Check ändern
Nur mitgeschickte Felder werden geändert. Eine Änderung von execution/node_id/locations wird nicht direkt übernommen (409 move_requires_test): dafür POST .../move mit Testlauf, oder force_move=true.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token des Checks (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Pflicht | Name |
type | string | Pflicht | Typ Werte: http, keyword, json, dns, icmp, tcp, port, cert, push, docker, whois. |
target | string | Ziel: URL (http/keyword/json), Name (dns, bei PTR auch IP), Host/IP (icmp), host oder host:port (tcp/port/cert); leer bei push | |
params | object | Typabhängige Parameter (Schlüssel wie in der Node) | |
params.method | string | http/keyword: Methode (GET, HEAD, POST, ...) | |
params.accept_status | string | http/keyword: erlaubte Statuscodes, z. B. 200-299,301 | |
params.follow_redirects | boolean | http/keyword | |
params.max_redirects | integer | http/keyword | |
params.keyword | string | keyword: gesuchter Text | |
params.keyword_absent | boolean | keyword: Text darf NICHT vorkommen | |
params.basic_user | string | http/keyword | |
params.basic_password | string | http/keyword | |
params.headers | object | http/keyword: zusätzliche Header | |
params.body | string | http/keyword | |
params.insecure_tls | boolean | http/keyword: Zertifikatsfehler ignorieren | |
params.cert_min_days | integer | http/keyword (HTTPS): gestört, wenn das Zertifikat in weniger Tagen abläuft (0 = aus) | |
params.count | integer | icmp: Pakete (1-20) | |
params.max_loss_percent | integer | icmp | |
params.max_latency_ms | integer | icmp, 0 = aus | |
params.port | integer | tcp/port/cert: Port, alternativ host:port im Ziel | |
params.send | string | tcp: zu sendende Daten | |
params.expect | string | tcp: erwarteter Antwortanfang; port: open|closed; dns: any, contains, equals, regex, nxdomain, public_ip (nur lokal) | |
params.tls | boolean | tcp: TLS nach dem Verbinden | |
params.min_days | integer | cert: Mindest-Restlaufzeit in Tagen | |
params.server_name | string | cert: SNI | |
params.skip_chain | boolean | cert | |
params.skip_hostname | boolean | cert | |
params.period_seconds | integer | push: erwarteter Abstand | |
params.grace_seconds | integer | push: Kulanz | |
params.json_rules | object[] | json: Bedingungen auf die JSON-Antwort (höchstens 10). Pfad z. B. data.items[0].status; op: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists | |
params.json_rules[].path | string | Pflicht | |
params.json_rules[].op | string | Pflicht | Werte: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists. |
params.json_rules[].value | string | ||
params.json_any | boolean | json: eine erfüllte Bedingung genügt (sonst alle) | |
params.record_type | string | dns: Eintragstyp (Standard A) Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR, SOA. | |
params.resolver | string | dns: Standard-Resolver, bestimmter Server (server) oder zuständige Nameserver der Zone Werte: system, server, authoritative. | |
params.server | string | dns bei resolver=server: IP, optional mit Port (1.1.1.1, [2606:4700::1111]:53) | |
params.values | string[] | dns: erwartete Werte (contains/equals) bzw. ein Muster (regex) | |
params.dnssec | boolean | dns: Antwort muss DNSSEC-validiert sein | |
params.min_ttl | integer | dns: Mindest-TTL in Sekunden (0 = egal) | |
interval_seconds | integer | Intervall, mindestens 20 | |
retry_interval_seconds | integer | Wiederholung bei Fehler, mindestens 5 | |
retries | integer | zusätzliche Versuche vor Alarm (0-10) | |
connect_timeout_seconds | number | Verbindungs-Timeout | |
timeout_seconds | number | Gesamt-Timeout | |
invert | boolean | Ergebnis umkehren | |
stabilize | integer | Messungen bis Zustandswechsel (1-20) | |
ip_mode | string | auto, ipv4, ipv6 oder both Werte: auto, ipv4, ipv6, both. | |
tags | string[] | Tags | |
group | string | Gruppe (frei benannt) | |
description | string | Beschreibung | |
paused | boolean | pausiert | |
parent | string | Token des übergeordneten Checks (Abhängigkeit) oder leer | |
critical | boolean | kritisch: ignoriert Ruhezeiten | |
execution | string | Ausführungsort: online (ipv64), local (Node), both (hybrid) Werte: online, local, both. | |
node_id | string | Besitzer-Node für local/both (bearbeitet in der Node, benachrichtigt ohne Verbindung); allein angegeben = eine messende Node | |
nodes | string[] | Messende Nodes (IDs) für local/both; mehrere möglich, Docker/Push genau eine. Ausgabe: Liste {node_id, name} | |
locations | string[] | Standorte für online/both (Anzahl je Account-Klasse) Werte: nbg, fsn. | |
policy | string | Gesamtregel bei mehreren Messstellen Werte: all, any, majority. | |
notify_degraded | boolean | auch bei teilweise gestört benachrichtigen | |
notify_down | boolean | bei Störung benachrichtigen | |
notify_up | boolean | bei Entwarnung benachrichtigen | |
channels | integer[] | Kanal-IDs; leer = Standardkanäle | |
repeat_minutes | integer | Erinnerung bei anhaltender Störung in Minuten, 0 = aus |
curl -X PATCH "https://ipv64.net/api/v2/hc2/checks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.name | string | Name |
data.type | string | Typ Werte: http, keyword, json, dns, icmp, tcp, port, cert, push, docker, whois. |
data.target | string | Ziel: URL (http/keyword/json), Name (dns, bei PTR auch IP), Host/IP (icmp), host oder host:port (tcp/port/cert); leer bei push |
data.params | object | Typabhängige Parameter (Schlüssel wie in der Node) |
data.params.method | string | http/keyword: Methode (GET, HEAD, POST, ...) |
data.params.accept_status | string | http/keyword: erlaubte Statuscodes, z. B. 200-299,301 |
data.params.follow_redirects | boolean | http/keyword |
data.params.max_redirects | integer | http/keyword |
data.params.keyword | string | keyword: gesuchter Text |
data.params.keyword_absent | boolean | keyword: Text darf NICHT vorkommen |
data.params.basic_user | string | http/keyword |
data.params.basic_password | string | http/keyword |
data.params.headers | object | http/keyword: zusätzliche Header |
data.params.body | string | http/keyword |
data.params.insecure_tls | boolean | http/keyword: Zertifikatsfehler ignorieren |
data.params.cert_min_days | integer | http/keyword (HTTPS): gestört, wenn das Zertifikat in weniger Tagen abläuft (0 = aus) |
data.params.count | integer | icmp: Pakete (1-20) |
data.params.max_loss_percent | integer | icmp |
data.params.max_latency_ms | integer | icmp, 0 = aus |
data.params.port | integer | tcp/port/cert: Port, alternativ host:port im Ziel |
data.params.send | string | tcp: zu sendende Daten |
data.params.expect | string | tcp: erwarteter Antwortanfang; port: open|closed; dns: any, contains, equals, regex, nxdomain, public_ip (nur lokal) |
data.params.tls | boolean | tcp: TLS nach dem Verbinden |
data.params.min_days | integer | cert: Mindest-Restlaufzeit in Tagen |
data.params.server_name | string | cert: SNI |
data.params.skip_chain | boolean | cert |
data.params.skip_hostname | boolean | cert |
data.params.period_seconds | integer | push: erwarteter Abstand |
data.params.grace_seconds | integer | push: Kulanz |
data.params.json_rules | object[] | json: Bedingungen auf die JSON-Antwort (höchstens 10). Pfad z. B. data.items[0].status; op: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists |
data.params.json_rules[].path | string | |
data.params.json_rules[].op | string | Werte: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists. |
data.params.json_rules[].value | string | |
data.params.json_any | boolean | json: eine erfüllte Bedingung genügt (sonst alle) |
data.params.record_type | string | dns: Eintragstyp (Standard A) Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR, SOA. |
data.params.resolver | string | dns: Standard-Resolver, bestimmter Server (server) oder zuständige Nameserver der Zone Werte: system, server, authoritative. |
data.params.server | string | dns bei resolver=server: IP, optional mit Port (1.1.1.1, [2606:4700::1111]:53) |
data.params.values | string[] | dns: erwartete Werte (contains/equals) bzw. ein Muster (regex) |
data.params.dnssec | boolean | dns: Antwort muss DNSSEC-validiert sein |
data.params.min_ttl | integer | dns: Mindest-TTL in Sekunden (0 = egal) |
data.interval_seconds | integer | Intervall, mindestens 20 |
data.retry_interval_seconds | integer | Wiederholung bei Fehler, mindestens 5 |
data.retries | integer | zusätzliche Versuche vor Alarm (0-10) |
data.connect_timeout_seconds | number | Verbindungs-Timeout |
data.timeout_seconds | number | Gesamt-Timeout |
data.invert | boolean | Ergebnis umkehren |
data.stabilize | integer | Messungen bis Zustandswechsel (1-20) |
data.ip_mode | string | auto, ipv4, ipv6 oder both Werte: auto, ipv4, ipv6, both. |
data.tags | string[] | Tags |
data.group | string | Gruppe (frei benannt) |
data.description | string | Beschreibung |
data.paused | boolean | pausiert |
data.parent | string | Token des übergeordneten Checks (Abhängigkeit) oder leer |
data.critical | boolean | kritisch: ignoriert Ruhezeiten |
data.execution | string | Ausführungsort: online (ipv64), local (Node), both (hybrid) Werte: online, local, both. |
data.node_id | string | Besitzer-Node für local/both (bearbeitet in der Node, benachrichtigt ohne Verbindung); allein angegeben = eine messende Node |
data.nodes | string[] | Messende Nodes (IDs) für local/both; mehrere möglich, Docker/Push genau eine. Ausgabe: Liste {node_id, name} |
data.locations | string[] | Standorte für online/both (Anzahl je Account-Klasse) Werte: nbg, fsn. |
data.policy | string | Gesamtregel bei mehreren Messstellen Werte: all, any, majority. |
data.notify_degraded | boolean | auch bei teilweise gestört benachrichtigen |
data.notify_down | boolean | bei Störung benachrichtigen |
data.notify_up | boolean | bei Entwarnung benachrichtigen |
data.channels | integer[] | Kanal-IDs; leer = Standardkanäle |
data.repeat_minutes | integer | Erinnerung bei anhaltender Störung in Minuten, 0 = aus |
data.token | string | Token |
data.node_name | string | Name der Node |
data.revision | integer | Revision |
data.created_at | datetime | angelegt |
data.updated_at | datetime | geändert |
data.state | object | |
data.state.state | string | up, down, degraded, flapping, paused, pending |
data.state.since | datetime | seit |
data.state.last_check_at | datetime | letzte Messung |
data.state.last_status | string | up|down |
data.state.last_latency_ms | number | Latenz |
data.state.last_reason | string | Grund |
data.state.last_message | string | Meldung |
data.state.down_since | datetime | gestört seit |
data.state.last_push_at | datetime | letzter Push |
data.push | object | nur bei type push |
data.push.url | string | Push-URL bei ipv64 |
data.push.hub_url | string | Push-URL am hub |
data.push.node_path | string | Pfad an der Node (http://<node>/api/push/<token>) |
data.sources | object[] | Zustand je Messstelle |
data.sources[].source | string | loc:nbg, loc:fsn oder node:<id> |
data.sources[].label | string | lesbarer Name |
data.sources[].state | string | Zustand dieser Messstelle |
data.sources[].since | datetime | |
data.sources[].last_check_at | datetime | |
data.sources[].last_status | string | |
data.sources[].last_latency_ms | number | |
data.sources[].last_reason | string | |
data.sources[].last_message | string | |
data.sources[].consecutive_fail | integer | |
data.sources[].consecutive_ok | integer | |
data.availability_percent | object | |
data.availability_percent.24h | number | |
data.availability_percent.30d | number | |
data.availability_percent.1y | number |
Mögliche Fehler: 401403404409422429 Fehlercodes
/hc2/checks/{token}
Check löschen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token des Checks (32 Zeichen) |
curl -X DELETE "https://ipv64.net/api/v2/hc2/checks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404429 Fehlercodes
/hc2/checks/{token}/pause
Pausieren
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token des Checks (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/hc2/checks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/pause" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.name | string | Name |
data.type | string | Typ Werte: http, keyword, json, dns, icmp, tcp, port, cert, push, docker, whois. |
data.target | string | Ziel: URL (http/keyword/json), Name (dns, bei PTR auch IP), Host/IP (icmp), host oder host:port (tcp/port/cert); leer bei push |
data.params | object | Typabhängige Parameter (Schlüssel wie in der Node) |
data.params.method | string | http/keyword: Methode (GET, HEAD, POST, ...) |
data.params.accept_status | string | http/keyword: erlaubte Statuscodes, z. B. 200-299,301 |
data.params.follow_redirects | boolean | http/keyword |
data.params.max_redirects | integer | http/keyword |
data.params.keyword | string | keyword: gesuchter Text |
data.params.keyword_absent | boolean | keyword: Text darf NICHT vorkommen |
data.params.basic_user | string | http/keyword |
data.params.basic_password | string | http/keyword |
data.params.headers | object | http/keyword: zusätzliche Header |
data.params.body | string | http/keyword |
data.params.insecure_tls | boolean | http/keyword: Zertifikatsfehler ignorieren |
data.params.cert_min_days | integer | http/keyword (HTTPS): gestört, wenn das Zertifikat in weniger Tagen abläuft (0 = aus) |
data.params.count | integer | icmp: Pakete (1-20) |
data.params.max_loss_percent | integer | icmp |
data.params.max_latency_ms | integer | icmp, 0 = aus |
data.params.port | integer | tcp/port/cert: Port, alternativ host:port im Ziel |
data.params.send | string | tcp: zu sendende Daten |
data.params.expect | string | tcp: erwarteter Antwortanfang; port: open|closed; dns: any, contains, equals, regex, nxdomain, public_ip (nur lokal) |
data.params.tls | boolean | tcp: TLS nach dem Verbinden |
data.params.min_days | integer | cert: Mindest-Restlaufzeit in Tagen |
data.params.server_name | string | cert: SNI |
data.params.skip_chain | boolean | cert |
data.params.skip_hostname | boolean | cert |
data.params.period_seconds | integer | push: erwarteter Abstand |
data.params.grace_seconds | integer | push: Kulanz |
data.params.json_rules | object[] | json: Bedingungen auf die JSON-Antwort (höchstens 10). Pfad z. B. data.items[0].status; op: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists |
data.params.json_rules[].path | string | |
data.params.json_rules[].op | string | Werte: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists. |
data.params.json_rules[].value | string | |
data.params.json_any | boolean | json: eine erfüllte Bedingung genügt (sonst alle) |
data.params.record_type | string | dns: Eintragstyp (Standard A) Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR, SOA. |
data.params.resolver | string | dns: Standard-Resolver, bestimmter Server (server) oder zuständige Nameserver der Zone Werte: system, server, authoritative. |
data.params.server | string | dns bei resolver=server: IP, optional mit Port (1.1.1.1, [2606:4700::1111]:53) |
data.params.values | string[] | dns: erwartete Werte (contains/equals) bzw. ein Muster (regex) |
data.params.dnssec | boolean | dns: Antwort muss DNSSEC-validiert sein |
data.params.min_ttl | integer | dns: Mindest-TTL in Sekunden (0 = egal) |
data.interval_seconds | integer | Intervall, mindestens 20 |
data.retry_interval_seconds | integer | Wiederholung bei Fehler, mindestens 5 |
data.retries | integer | zusätzliche Versuche vor Alarm (0-10) |
data.connect_timeout_seconds | number | Verbindungs-Timeout |
data.timeout_seconds | number | Gesamt-Timeout |
data.invert | boolean | Ergebnis umkehren |
data.stabilize | integer | Messungen bis Zustandswechsel (1-20) |
data.ip_mode | string | auto, ipv4, ipv6 oder both Werte: auto, ipv4, ipv6, both. |
data.tags | string[] | Tags |
data.group | string | Gruppe (frei benannt) |
data.description | string | Beschreibung |
data.paused | boolean | pausiert |
data.parent | string | Token des übergeordneten Checks (Abhängigkeit) oder leer |
data.critical | boolean | kritisch: ignoriert Ruhezeiten |
data.execution | string | Ausführungsort: online (ipv64), local (Node), both (hybrid) Werte: online, local, both. |
data.node_id | string | Besitzer-Node für local/both (bearbeitet in der Node, benachrichtigt ohne Verbindung); allein angegeben = eine messende Node |
data.nodes | string[] | Messende Nodes (IDs) für local/both; mehrere möglich, Docker/Push genau eine. Ausgabe: Liste {node_id, name} |
data.locations | string[] | Standorte für online/both (Anzahl je Account-Klasse) Werte: nbg, fsn. |
data.policy | string | Gesamtregel bei mehreren Messstellen Werte: all, any, majority. |
data.notify_degraded | boolean | auch bei teilweise gestört benachrichtigen |
data.notify_down | boolean | bei Störung benachrichtigen |
data.notify_up | boolean | bei Entwarnung benachrichtigen |
data.channels | integer[] | Kanal-IDs; leer = Standardkanäle |
data.repeat_minutes | integer | Erinnerung bei anhaltender Störung in Minuten, 0 = aus |
data.token | string | Token |
data.node_name | string | Name der Node |
data.revision | integer | Revision |
data.created_at | datetime | angelegt |
data.updated_at | datetime | geändert |
data.state | object | |
data.state.state | string | up, down, degraded, flapping, paused, pending |
data.state.since | datetime | seit |
data.state.last_check_at | datetime | letzte Messung |
data.state.last_status | string | up|down |
data.state.last_latency_ms | number | Latenz |
data.state.last_reason | string | Grund |
data.state.last_message | string | Meldung |
data.state.down_since | datetime | gestört seit |
data.state.last_push_at | datetime | letzter Push |
data.push | object | nur bei type push |
data.push.url | string | Push-URL bei ipv64 |
data.push.hub_url | string | Push-URL am hub |
data.push.node_path | string | Pfad an der Node (http://<node>/api/push/<token>) |
Mögliche Fehler: 401404429 Fehlercodes
/hc2/checks/{token}/resume
Fortsetzen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token des Checks (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/hc2/checks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/resume" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.name | string | Name |
data.type | string | Typ Werte: http, keyword, json, dns, icmp, tcp, port, cert, push, docker, whois. |
data.target | string | Ziel: URL (http/keyword/json), Name (dns, bei PTR auch IP), Host/IP (icmp), host oder host:port (tcp/port/cert); leer bei push |
data.params | object | Typabhängige Parameter (Schlüssel wie in der Node) |
data.params.method | string | http/keyword: Methode (GET, HEAD, POST, ...) |
data.params.accept_status | string | http/keyword: erlaubte Statuscodes, z. B. 200-299,301 |
data.params.follow_redirects | boolean | http/keyword |
data.params.max_redirects | integer | http/keyword |
data.params.keyword | string | keyword: gesuchter Text |
data.params.keyword_absent | boolean | keyword: Text darf NICHT vorkommen |
data.params.basic_user | string | http/keyword |
data.params.basic_password | string | http/keyword |
data.params.headers | object | http/keyword: zusätzliche Header |
data.params.body | string | http/keyword |
data.params.insecure_tls | boolean | http/keyword: Zertifikatsfehler ignorieren |
data.params.cert_min_days | integer | http/keyword (HTTPS): gestört, wenn das Zertifikat in weniger Tagen abläuft (0 = aus) |
data.params.count | integer | icmp: Pakete (1-20) |
data.params.max_loss_percent | integer | icmp |
data.params.max_latency_ms | integer | icmp, 0 = aus |
data.params.port | integer | tcp/port/cert: Port, alternativ host:port im Ziel |
data.params.send | string | tcp: zu sendende Daten |
data.params.expect | string | tcp: erwarteter Antwortanfang; port: open|closed; dns: any, contains, equals, regex, nxdomain, public_ip (nur lokal) |
data.params.tls | boolean | tcp: TLS nach dem Verbinden |
data.params.min_days | integer | cert: Mindest-Restlaufzeit in Tagen |
data.params.server_name | string | cert: SNI |
data.params.skip_chain | boolean | cert |
data.params.skip_hostname | boolean | cert |
data.params.period_seconds | integer | push: erwarteter Abstand |
data.params.grace_seconds | integer | push: Kulanz |
data.params.json_rules | object[] | json: Bedingungen auf die JSON-Antwort (höchstens 10). Pfad z. B. data.items[0].status; op: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists |
data.params.json_rules[].path | string | |
data.params.json_rules[].op | string | Werte: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists. |
data.params.json_rules[].value | string | |
data.params.json_any | boolean | json: eine erfüllte Bedingung genügt (sonst alle) |
data.params.record_type | string | dns: Eintragstyp (Standard A) Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR, SOA. |
data.params.resolver | string | dns: Standard-Resolver, bestimmter Server (server) oder zuständige Nameserver der Zone Werte: system, server, authoritative. |
data.params.server | string | dns bei resolver=server: IP, optional mit Port (1.1.1.1, [2606:4700::1111]:53) |
data.params.values | string[] | dns: erwartete Werte (contains/equals) bzw. ein Muster (regex) |
data.params.dnssec | boolean | dns: Antwort muss DNSSEC-validiert sein |
data.params.min_ttl | integer | dns: Mindest-TTL in Sekunden (0 = egal) |
data.interval_seconds | integer | Intervall, mindestens 20 |
data.retry_interval_seconds | integer | Wiederholung bei Fehler, mindestens 5 |
data.retries | integer | zusätzliche Versuche vor Alarm (0-10) |
data.connect_timeout_seconds | number | Verbindungs-Timeout |
data.timeout_seconds | number | Gesamt-Timeout |
data.invert | boolean | Ergebnis umkehren |
data.stabilize | integer | Messungen bis Zustandswechsel (1-20) |
data.ip_mode | string | auto, ipv4, ipv6 oder both Werte: auto, ipv4, ipv6, both. |
data.tags | string[] | Tags |
data.group | string | Gruppe (frei benannt) |
data.description | string | Beschreibung |
data.paused | boolean | pausiert |
data.parent | string | Token des übergeordneten Checks (Abhängigkeit) oder leer |
data.critical | boolean | kritisch: ignoriert Ruhezeiten |
data.execution | string | Ausführungsort: online (ipv64), local (Node), both (hybrid) Werte: online, local, both. |
data.node_id | string | Besitzer-Node für local/both (bearbeitet in der Node, benachrichtigt ohne Verbindung); allein angegeben = eine messende Node |
data.nodes | string[] | Messende Nodes (IDs) für local/both; mehrere möglich, Docker/Push genau eine. Ausgabe: Liste {node_id, name} |
data.locations | string[] | Standorte für online/both (Anzahl je Account-Klasse) Werte: nbg, fsn. |
data.policy | string | Gesamtregel bei mehreren Messstellen Werte: all, any, majority. |
data.notify_degraded | boolean | auch bei teilweise gestört benachrichtigen |
data.notify_down | boolean | bei Störung benachrichtigen |
data.notify_up | boolean | bei Entwarnung benachrichtigen |
data.channels | integer[] | Kanal-IDs; leer = Standardkanäle |
data.repeat_minutes | integer | Erinnerung bei anhaltender Störung in Minuten, 0 = aus |
data.token | string | Token |
data.node_name | string | Name der Node |
data.revision | integer | Revision |
data.created_at | datetime | angelegt |
data.updated_at | datetime | geändert |
data.state | object | |
data.state.state | string | up, down, degraded, flapping, paused, pending |
data.state.since | datetime | seit |
data.state.last_check_at | datetime | letzte Messung |
data.state.last_status | string | up|down |
data.state.last_latency_ms | number | Latenz |
data.state.last_reason | string | Grund |
data.state.last_message | string | Meldung |
data.state.down_since | datetime | gestört seit |
data.state.last_push_at | datetime | letzter Push |
data.push | object | nur bei type push |
data.push.url | string | Push-URL bei ipv64 |
data.push.hub_url | string | Push-URL am hub |
data.push.node_path | string | Pfad an der Node (http://<node>/api/push/<token>) |
Mögliche Fehler: 401404429 Fehlercodes
/hc2/checks/{token}/run
Sofort prüfen (Node-Checks: Befehl an die Node)
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token des Checks (32 Zeichen) |
curl -X POST "https://ipv64.net/api/v2/hc2/checks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/run" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.queued | boolean | |
data.command_id | integer | |
data.node_id | string | |
data.detail | string |
Mögliche Fehler: 401404422429 Fehlercodes
/hc2/checks/{token}/move
Umhängen: Ausführungsort mit Testlauf ändern
Der hub misst je Standort, die Node per Befehl. Status mit GET /hc2/testruns/{id} abfragen (alle 2 s, höchstens 60 s). Bei status ok ist der Wechsel übernommen; der Token und die Messhistorie bleiben.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token des Checks (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
execution | string | Pflicht | local, online, both Werte: local, online, both. |
node_id | string | Besitzer-Node für local/both (bearbeitet in der Node, benachrichtigt ohne Verbindung); allein angegeben = eine messende Node | |
nodes | string[] | Messende Nodes (IDs) für local/both; mehrere möglich, Docker/Push genau eine. Ausgabe: Liste {node_id, name} | |
locations | string[] | Standorte für online/both |
curl -X POST "https://ipv64.net/api/v2/hc2/checks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/move" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | |
data.status | string | pending, running, ok, failed, expired |
data.target | string | Ziel-Ausführungsort |
data.applied | boolean | Wechsel wurde übernommen |
data.results | object[] | Ergebnis je Messstelle |
data.results[].source | string | |
data.results[].ok | boolean | |
data.results[].message | string | |
data.error | string |
Mögliche Fehler: 401404409422429 Fehlercodes
/hc2/testruns/{id}
Status eines Testlaufs
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, integer | Pflicht | Nummer |
curl "https://ipv64.net/api/v2/hc2/testruns/7" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | |
data.status | string | pending, running, ok, failed, expired |
data.target | string | Ziel-Ausführungsort |
data.applied | boolean | Wechsel wurde übernommen |
data.results | object[] | Ergebnis je Messstelle |
data.results[].source | string | |
data.results[].ok | boolean | |
data.results[].message | string | |
data.error | string |
Mögliche Fehler: 401404429 Fehlercodes
/hc2/checks/{token}/measurements
Rohmesspunkte (neueste zuerst, 7 Tage)
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token des Checks (32 Zeichen) |
limit | Query, integer | höchstens 5000 | |
since | Query, string | ISO 8601 | |
until | Query, string | ISO 8601 | |
source | Query, string | loc:nbg, loc:fsn, node:<id> |
curl "https://ipv64.net/api/v2/hc2/checks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/measurements" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].time | datetime | |
data[].source | string | |
data[].source_label | string | |
data[].status | string | up|down |
data[].latency_ms | number | |
data[].reason | string | |
data[].message | string | |
data[].family | string | ipv4|ipv6 |
data[].details | object | Rohdaten |
Mögliche Fehler: 401404429 Fehlercodes
/hc2/checks/{token}/events
Ereignisse eines Checks
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token des Checks (32 Zeichen) |
limit | Query, integer | höchstens 100 | |
before | Query, integer | nur IDs kleiner (ältere) | |
after | Query, integer | nur IDs größer (neuere, aufsteigend) | |
since | Query, string | ab Zeitpunkt (ISO 8601) |
curl "https://ipv64.net/api/v2/hc2/checks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/events" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | |
data[].event_id | string | |
data[].token | string | |
data[].source | string | leer = Gesamtzustand |
data[].source_label | string | |
data[].kind | string | down, up, degraded, degraded_end, flapping_start, flapping_end, reminder |
data[].time | datetime | |
data[].from_state | string | |
data[].to_state | string | |
data[].reason | string | |
data[].message | string | |
data[].duration_seconds | integer | |
data[].flaps | integer | |
data[].silent | boolean | ohne Alarm |
data[].incident_id | integer | |
meta | object | |
meta.limit | integer | |
meta.has_more | boolean | |
meta.next_before | integer | |
meta.next_after | integer |
Mögliche Fehler: 401404429 Fehlercodes
/hc2/events
Ereignisse aller Checks
| Feld | Typ | Beschreibung | |
|---|---|---|---|
limit | Query, integer | höchstens 100 | |
before | Query, integer | nur IDs kleiner (ältere) | |
after | Query, integer | nur IDs größer (neuere, aufsteigend) | |
since | Query, string | ab Zeitpunkt (ISO 8601) |
curl "https://ipv64.net/api/v2/hc2/events" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | |
data[].event_id | string | |
data[].token | string | |
data[].source | string | leer = Gesamtzustand |
data[].source_label | string | |
data[].kind | string | down, up, degraded, degraded_end, flapping_start, flapping_end, reminder |
data[].time | datetime | |
data[].from_state | string | |
data[].to_state | string | |
data[].reason | string | |
data[].message | string | |
data[].duration_seconds | integer | |
data[].flaps | integer | |
data[].silent | boolean | ohne Alarm |
data[].incident_id | integer | |
meta | object | |
meta.limit | integer | |
meta.has_more | boolean | |
meta.next_before | integer | |
meta.next_after | integer |
Mögliche Fehler: 401429 Fehlercodes
/hc2/checks/{token}/incidents
Störungen eines Checks
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token des Checks (32 Zeichen) |
limit | Query, integer | höchstens 500 |
curl "https://ipv64.net/api/v2/hc2/checks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/incidents" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | |
data[].token | string | |
data[].name | string | |
data[].status | string | open|closed |
data[].started_at | datetime | |
data[].ended_at | datetime | |
data[].duration_seconds | integer | |
data[].reason | string | |
data[].message | string | |
data[].sources | string[] | betroffene Messstellen |
Mögliche Fehler: 401404429 Fehlercodes
/hc2/incidents
Störungen des Accounts
| Feld | Typ | Beschreibung | |
|---|---|---|---|
limit | Query, integer | höchstens 1000 | |
open | Query, boolean | true = nur offene | |
since | Query, string | ISO 8601 |
curl "https://ipv64.net/api/v2/hc2/incidents" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | |
data[].token | string | |
data[].name | string | |
data[].status | string | open|closed |
data[].started_at | datetime | |
data[].ended_at | datetime | |
data[].duration_seconds | integer | |
data[].reason | string | |
data[].message | string | |
data[].sources | string[] | betroffene Messstellen |
Mögliche Fehler: 401429 Fehlercodes
/hc2/checks/{token}/stats
Verfügbarkeit und Latenz (aus Stunden-/Tageswerten)
| Feld | Typ | Beschreibung | |
|---|---|---|---|
token | Pfad, string | Pflicht | Token des Checks (32 Zeichen) |
range | Query, string | 24h, 7d, 30d, 1y Werte: 24h, 7d, 30d, 1y. |
curl "https://ipv64.net/api/v2/hc2/checks/Ab3dEf6hIj9kLm2nOp5qRs8tUv1wXy4z/stats" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.range | string | |
data.bucket | string | hour|day |
data.measurements | integer | |
data.availability_percent | number | |
data.sources | object[] | je Messstelle |
data.sources[].source | string | |
data.sources[].label | string | |
data.sources[].measurements | integer | |
data.sources[].availability_percent | number | |
data.sources[].latency_ms | object | |
data.sources[].latency_ms.min | number | |
data.sources[].latency_ms.avg | number | |
data.sources[].latency_ms.max | number | |
data.series | object[] | Zeitreihe |
data.series[].time | datetime | |
data.series[].source | string | |
data.series[].measurements | integer | |
data.series[].availability_percent | number | |
data.series[].latency_avg_ms | number | |
data.series[].latency_max_ms | number |
Mögliche Fehler: 400401404429 Fehlercodes
/hc2/channel-types
Kanaltypen mit Feldern
curl "https://ipv64.net/api/v2/hc2/channel-types" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].type | string | |
data[].label | string | |
data[].needs_verification | boolean | |
data[].fields | object[] | |
data[].fields[].key | string | |
data[].fields[].label | string | |
data[].fields[].kind | string | text, password, url, email, number, select, textarea, bool |
data[].fields[].required | boolean | |
data[].fields[].secret | boolean | |
data[].fields[].options | string[] | |
data[].fields[].default | string |
Mögliche Fehler: 401429 Fehlercodes
/hc2/channels
Kanäle auflisten
curl "https://ipv64.net/api/v2/hc2/channels" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | |
data[].type | string | ipv64_mail, ipv64_sms, app (IPv64 App: config device_key NTFY-DEVICE-…, critical; secntfy is accepted as old name), telegram, discord, slack, teams, matrix, ntfy, gotify, pushover, webhook, smtp |
data[].type_label | string | |
data[].name | string | |
data[].config | object | Konfiguration ohne Geheimnisse |
data[].secrets_set | string[] | gesetzte geheime Felder |
data[].enabled | boolean | |
data[].default | boolean | Standardkanal |
data[].verified | boolean | Mail/SMS: per Code bestätigt |
data[].lang | string | de|en |
data[].notify_down | boolean | |
data[].notify_up | boolean | |
data[].execution | string | server|node |
data[].node_id | string | |
data[].last_used | datetime | |
data[].last_error | string | |
data[].revision | integer | |
data[].created_at | datetime | |
data[].sendable_via_api | boolean | Über POST /hc2/channels/{id}/send nutzbar (ipv64-Kanal, verifiziert, aktiv) |
Mögliche Fehler: 401429 Fehlercodes
/hc2/channels
Kanal anlegen
Mail- und SMS-Kanäle müssen danach im Portal per Code bestätigt werden (verification_required), vorher wird nicht gesendet.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
type | string | Kanaltyp (nur beim Anlegen) | |
name | string | Pflicht | Name |
config | object | Felder laut GET /hc2/channel-types; geheime Felder beim Ändern weglassen = unverändert | |
enabled | boolean | ||
default | boolean | ||
lang | string | de|en | |
notify_down | boolean | ||
notify_up | boolean |
curl -X POST "https://ipv64.net/api/v2/hc2/channels" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | |
data.type | string | ipv64_mail, ipv64_sms, app (IPv64 App: config device_key NTFY-DEVICE-…, critical; secntfy is accepted as old name), telegram, discord, slack, teams, matrix, ntfy, gotify, pushover, webhook, smtp |
data.type_label | string | |
data.name | string | |
data.config | object | Konfiguration ohne Geheimnisse |
data.secrets_set | string[] | gesetzte geheime Felder |
data.enabled | boolean | |
data.default | boolean | Standardkanal |
data.verified | boolean | Mail/SMS: per Code bestätigt |
data.lang | string | de|en |
data.notify_down | boolean | |
data.notify_up | boolean | |
data.execution | string | server|node |
data.node_id | string | |
data.last_used | datetime | |
data.last_error | string | |
data.revision | integer | |
data.created_at | datetime | |
data.sendable_via_api | boolean | Über POST /hc2/channels/{id}/send nutzbar (ipv64-Kanal, verifiziert, aktiv) |
Mögliche Fehler: 401403422429 Fehlercodes
/hc2/channels/{id}
Kanal
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, integer | Pflicht | Nummer |
curl "https://ipv64.net/api/v2/hc2/channels/7" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | |
data.type | string | ipv64_mail, ipv64_sms, app (IPv64 App: config device_key NTFY-DEVICE-…, critical; secntfy is accepted as old name), telegram, discord, slack, teams, matrix, ntfy, gotify, pushover, webhook, smtp |
data.type_label | string | |
data.name | string | |
data.config | object | Konfiguration ohne Geheimnisse |
data.secrets_set | string[] | gesetzte geheime Felder |
data.enabled | boolean | |
data.default | boolean | Standardkanal |
data.verified | boolean | Mail/SMS: per Code bestätigt |
data.lang | string | de|en |
data.notify_down | boolean | |
data.notify_up | boolean | |
data.execution | string | server|node |
data.node_id | string | |
data.last_used | datetime | |
data.last_error | string | |
data.revision | integer | |
data.created_at | datetime | |
data.sendable_via_api | boolean | Über POST /hc2/channels/{id}/send nutzbar (ipv64-Kanal, verifiziert, aktiv) |
Mögliche Fehler: 401404429 Fehlercodes
/hc2/channels/{id}
Kanal ändern
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, integer | Pflicht | Nummer |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
type | string | Kanaltyp (nur beim Anlegen) | |
name | string | Pflicht | Name |
config | object | Felder laut GET /hc2/channel-types; geheime Felder beim Ändern weglassen = unverändert | |
enabled | boolean | ||
default | boolean | ||
lang | string | de|en | |
notify_down | boolean | ||
notify_up | boolean |
curl -X PATCH "https://ipv64.net/api/v2/hc2/channels/7" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | |
data.type | string | ipv64_mail, ipv64_sms, app (IPv64 App: config device_key NTFY-DEVICE-…, critical; secntfy is accepted as old name), telegram, discord, slack, teams, matrix, ntfy, gotify, pushover, webhook, smtp |
data.type_label | string | |
data.name | string | |
data.config | object | Konfiguration ohne Geheimnisse |
data.secrets_set | string[] | gesetzte geheime Felder |
data.enabled | boolean | |
data.default | boolean | Standardkanal |
data.verified | boolean | Mail/SMS: per Code bestätigt |
data.lang | string | de|en |
data.notify_down | boolean | |
data.notify_up | boolean | |
data.execution | string | server|node |
data.node_id | string | |
data.last_used | datetime | |
data.last_error | string | |
data.revision | integer | |
data.created_at | datetime | |
data.sendable_via_api | boolean | Über POST /hc2/channels/{id}/send nutzbar (ipv64-Kanal, verifiziert, aktiv) |
Mögliche Fehler: 401404409422429 Fehlercodes
/hc2/channels/{id}
Kanal löschen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, integer | Pflicht | Nummer |
curl -X DELETE "https://ipv64.net/api/v2/hc2/channels/7" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404409429 Fehlercodes
/hc2/channels/{id}/test
Testnachricht senden
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, integer | Pflicht | Nummer |
curl -X POST "https://ipv64.net/api/v2/hc2/channels/7/test" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.sent | boolean | |
data.queued_at_node | boolean | Node-Kanal: die Node sendet selbst |
Mögliche Fehler: 401404409429 Fehlercodes
/hc2/maintenance
Wartungsfenster
curl "https://ipv64.net/api/v2/hc2/maintenance" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | integer | |
data[].name | string | |
data[].start_at | datetime | |
data[].end_at | datetime | |
data[].repeat | string | none, daily, weekly, monthly |
data[].repeat_until | datetime | |
data[].tokens | string[] | leer = alle Checks |
data[].active | boolean | |
data[].node_id | string | |
data[].revision | integer |
Mögliche Fehler: 401429 Fehlercodes
/hc2/maintenance
Wartungsfenster anlegen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Pflicht | |
start_at | datetime | Pflicht | ISO 8601 |
end_at | datetime | Pflicht | ISO 8601 |
repeat | string | none, daily, weekly, monthly | |
repeat_until | datetime | ||
tokens | string[] | ||
active | boolean |
curl -X POST "https://ipv64.net/api/v2/hc2/maintenance" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | |
data.name | string | |
data.start_at | datetime | |
data.end_at | datetime | |
data.repeat | string | none, daily, weekly, monthly |
data.repeat_until | datetime | |
data.tokens | string[] | leer = alle Checks |
data.active | boolean | |
data.node_id | string | |
data.revision | integer |
Mögliche Fehler: 401422429 Fehlercodes
/hc2/maintenance/{id}
Wartungsfenster
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, integer | Pflicht | Nummer |
curl "https://ipv64.net/api/v2/hc2/maintenance/7" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | |
data.name | string | |
data.start_at | datetime | |
data.end_at | datetime | |
data.repeat | string | none, daily, weekly, monthly |
data.repeat_until | datetime | |
data.tokens | string[] | leer = alle Checks |
data.active | boolean | |
data.node_id | string | |
data.revision | integer |
Mögliche Fehler: 401404429 Fehlercodes
/hc2/maintenance/{id}
Wartungsfenster ändern
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, integer | Pflicht | Nummer |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Pflicht | |
start_at | datetime | Pflicht | ISO 8601 |
end_at | datetime | Pflicht | ISO 8601 |
repeat | string | none, daily, weekly, monthly | |
repeat_until | datetime | ||
tokens | string[] | ||
active | boolean |
curl -X PATCH "https://ipv64.net/api/v2/hc2/maintenance/7" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | |
data.name | string | |
data.start_at | datetime | |
data.end_at | datetime | |
data.repeat | string | none, daily, weekly, monthly |
data.repeat_until | datetime | |
data.tokens | string[] | leer = alle Checks |
data.active | boolean | |
data.node_id | string | |
data.revision | integer |
Mögliche Fehler: 401404422429 Fehlercodes
/hc2/maintenance/{id}
Wartungsfenster löschen
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, integer | Pflicht | Nummer |
curl -X DELETE "https://ipv64.net/api/v2/hc2/maintenance/7" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404429 Fehlercodes
/hc2/channels/{id}/send
Nachricht über einen ipv64-Kanal senden
Verschickt eine Nachricht über einen verifizierten, aktiven ipv64-Kanal (ipv64_mail, ipv64_sms, app) direkt, ohne hub, z. B. für Meldungen der Node-Module (DynDNS). Der Empfänger kommt nur aus dem Kanal. Mails werden im ipv64-Design gesetzt. SMS zählen gegen das Tageslimit des Tarifs. Rate-Limit: 30 auf einmal, danach 30 je Stunde, höchstens 200 je Tag. Eine event_id, die innerhalb von 24 h schon erfolgreich verschickt wurde, wird nicht erneut gesendet (duplicate=true).
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, integer | Pflicht | Nummer |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
subject | string | Pflicht | |
text | string | Pflicht | Text; Zeilen "Bezeichnung: Wert" erscheinen in der Mail als Tabelle |
kind | string | Art der Meldung, z. B. dyndns_ip, dyndns_fail (steuert Farbe und Status der Mail) | |
event_id | string | Kennung zum Erkennen doppelter Meldungen (24 h) | |
source | string |
curl -X POST "https://ipv64.net/api/v2/hc2/channels/7/send" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.sent | boolean | |
data.duplicate | boolean | |
data.sms_left | integer | SMS heute noch übrig (nur bei SMS-Kanälen, null = unbegrenzt) |
Mögliche Fehler: 404409422429502 Fehlercodes
/hc2/channels/{id}/verify/send
Bestätigungscode senden
Schickt einen 6-stelligen Code an die E-Mail-Adresse bzw. Handynummer des Kanals (15 Minuten gültig, höchstens 5 je Stunde). Schon bestätigte Kanäle: verified true, nichts gesendet.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, integer | Pflicht | Nummer |
curl -X POST "https://ipv64.net/api/v2/hc2/channels/7/verify/send" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 404429 Fehlercodes
/hc2/channels/{id}/verify
Kanal mit Code bestätigen
Bestätigt den Kanal mit dem Code aus /verify/send; danach stellt ipv64 über ihn zu. Falscher oder abgelaufener Code: 422 invalid_code.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, integer | Pflicht | Nummer |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
code | string | Pflicht |
curl -X POST "https://ipv64.net/api/v2/hc2/channels/7/verify" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 404429 Fehlercodes
Node64-Nodes: verknüpfen, umbenennen, Befehle, trennen.
/node64/hello
Node64-Container meldet sich an (Node-Übersicht)
Wird vom Node64-Container beim Start, nach Änderungen und alle 15 Minuten aufgerufen. Header X-Node64-Node muss der node_id im Body entsprechen. Ist die Node in der Übersicht entfernt, antwortet der Server mit 403 node_removed.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
node_id | string | Pflicht | |
name | string | ||
location | string | ||
version | string | ||
os_arch | string | ||
mode | string | ||
modules | string[] | ||
features | object | ||
features.hc_sync_linked | boolean | ||
features.hub_node_id | string | ||
features.honeypot_sensor_id | string | ||
features.cdn64_tunnel | string | ||
features.dyndns | boolean |
curl -X POST "https://ipv64.net/api/v2/node64/hello" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401403429 Fehlercodes
/node64/nodes
Alle Node64-Container des Accounts (Node-Übersicht)
curl "https://ipv64.net/api/v2/node64/nodes" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401429 Fehlercodes
/hc2/nodes
Nodes auflisten
curl "https://ipv64.net/api/v2/hc2/nodes" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].node_id | string | |
data[].name | string | |
data[].location | string | |
data[].version | string | |
data[].timezone | string | |
data[].modules | string[] | |
data[].remote_mgmt | string | off, read, full |
data[].online | boolean | |
data[].last_seen | datetime | |
data[].last_sync | datetime | |
data[].outbox_size | integer | |
data[].conflicts | integer | |
data[].hub | string | verbunden mit |
data[].linked_at | datetime |
Mögliche Fehler: 401429 Fehlercodes
/hc2/nodes/link
Node per Code verknüpfen
Die Node zeigt unter „ipv64-Verknüpfung“ einen Code; nach dem Einlösen holt sie sich ihren Token selbst.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
code | string | Pflicht | 8 Zeichen aus der Node |
location | string | Standort (frei) | |
remote_mgmt | string | off, read, full (Standard: full) |
curl -X POST "https://ipv64.net/api/v2/hc2/nodes/link" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.accepted | boolean | |
data.detail | string |
Mögliche Fehler: 401404422429 Fehlercodes
/hc2/nodes/{node_id}
Node mit ihren Checks
| Feld | Typ | Beschreibung | |
|---|---|---|---|
node_id | Pfad, string | Pflicht | Kennung der Node (32 Zeichen) |
curl "https://ipv64.net/api/v2/hc2/nodes/nz5EcCnDHtOXEprvZMXP9L8u58wguMKE" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.node_id | string | |
data.name | string | |
data.location | string | |
data.version | string | |
data.timezone | string | |
data.modules | string[] | |
data.remote_mgmt | string | off, read, full |
data.online | boolean | |
data.last_seen | datetime | |
data.last_sync | datetime | |
data.outbox_size | integer | |
data.conflicts | integer | |
data.hub | string | verbunden mit |
data.linked_at | datetime | |
data.checks | object[] | Checks dieser Node |
data.checks[].name | string | Name |
data.checks[].type | string | Typ Werte: http, keyword, json, dns, icmp, tcp, port, cert, push, docker, whois. |
data.checks[].target | string | Ziel: URL (http/keyword/json), Name (dns, bei PTR auch IP), Host/IP (icmp), host oder host:port (tcp/port/cert); leer bei push |
data.checks[].params | object | Typabhängige Parameter (Schlüssel wie in der Node) |
data.checks[].params.method | string | http/keyword: Methode (GET, HEAD, POST, ...) |
data.checks[].params.accept_status | string | http/keyword: erlaubte Statuscodes, z. B. 200-299,301 |
data.checks[].params.follow_redirects | boolean | http/keyword |
data.checks[].params.max_redirects | integer | http/keyword |
data.checks[].params.keyword | string | keyword: gesuchter Text |
data.checks[].params.keyword_absent | boolean | keyword: Text darf NICHT vorkommen |
data.checks[].params.basic_user | string | http/keyword |
data.checks[].params.basic_password | string | http/keyword |
data.checks[].params.headers | object | http/keyword: zusätzliche Header |
data.checks[].params.body | string | http/keyword |
data.checks[].params.insecure_tls | boolean | http/keyword: Zertifikatsfehler ignorieren |
data.checks[].params.cert_min_days | integer | http/keyword (HTTPS): gestört, wenn das Zertifikat in weniger Tagen abläuft (0 = aus) |
data.checks[].params.count | integer | icmp: Pakete (1-20) |
data.checks[].params.max_loss_percent | integer | icmp |
data.checks[].params.max_latency_ms | integer | icmp, 0 = aus |
data.checks[].params.port | integer | tcp/port/cert: Port, alternativ host:port im Ziel |
data.checks[].params.send | string | tcp: zu sendende Daten |
data.checks[].params.expect | string | tcp: erwarteter Antwortanfang; port: open|closed; dns: any, contains, equals, regex, nxdomain, public_ip (nur lokal) |
data.checks[].params.tls | boolean | tcp: TLS nach dem Verbinden |
data.checks[].params.min_days | integer | cert: Mindest-Restlaufzeit in Tagen |
data.checks[].params.server_name | string | cert: SNI |
data.checks[].params.skip_chain | boolean | cert |
data.checks[].params.skip_hostname | boolean | cert |
data.checks[].params.period_seconds | integer | push: erwarteter Abstand |
data.checks[].params.grace_seconds | integer | push: Kulanz |
data.checks[].params.json_rules | object[] | json: Bedingungen auf die JSON-Antwort (höchstens 10). Pfad z. B. data.items[0].status; op: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists |
data.checks[].params.json_rules[].path | string | |
data.checks[].params.json_rules[].op | string | Werte: eq, ne, lt, le, gt, ge, contains, not_contains, regex, exists, not_exists. |
data.checks[].params.json_rules[].value | string | |
data.checks[].params.json_any | boolean | json: eine erfüllte Bedingung genügt (sonst alle) |
data.checks[].params.record_type | string | dns: Eintragstyp (Standard A) Werte: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR, SOA. |
data.checks[].params.resolver | string | dns: Standard-Resolver, bestimmter Server (server) oder zuständige Nameserver der Zone Werte: system, server, authoritative. |
data.checks[].params.server | string | dns bei resolver=server: IP, optional mit Port (1.1.1.1, [2606:4700::1111]:53) |
data.checks[].params.values | string[] | dns: erwartete Werte (contains/equals) bzw. ein Muster (regex) |
data.checks[].params.dnssec | boolean | dns: Antwort muss DNSSEC-validiert sein |
data.checks[].params.min_ttl | integer | dns: Mindest-TTL in Sekunden (0 = egal) |
data.checks[].interval_seconds | integer | Intervall, mindestens 20 |
data.checks[].retry_interval_seconds | integer | Wiederholung bei Fehler, mindestens 5 |
data.checks[].retries | integer | zusätzliche Versuche vor Alarm (0-10) |
data.checks[].connect_timeout_seconds | number | Verbindungs-Timeout |
data.checks[].timeout_seconds | number | Gesamt-Timeout |
data.checks[].invert | boolean | Ergebnis umkehren |
data.checks[].stabilize | integer | Messungen bis Zustandswechsel (1-20) |
data.checks[].ip_mode | string | auto, ipv4, ipv6 oder both Werte: auto, ipv4, ipv6, both. |
data.checks[].tags | string[] | Tags |
data.checks[].group | string | Gruppe (frei benannt) |
data.checks[].description | string | Beschreibung |
data.checks[].paused | boolean | pausiert |
data.checks[].parent | string | Token des übergeordneten Checks (Abhängigkeit) oder leer |
data.checks[].critical | boolean | kritisch: ignoriert Ruhezeiten |
data.checks[].execution | string | Ausführungsort: online (ipv64), local (Node), both (hybrid) Werte: online, local, both. |
data.checks[].node_id | string | Besitzer-Node für local/both (bearbeitet in der Node, benachrichtigt ohne Verbindung); allein angegeben = eine messende Node |
data.checks[].nodes | string[] | Messende Nodes (IDs) für local/both; mehrere möglich, Docker/Push genau eine. Ausgabe: Liste {node_id, name} |
data.checks[].locations | string[] | Standorte für online/both (Anzahl je Account-Klasse) Werte: nbg, fsn. |
data.checks[].policy | string | Gesamtregel bei mehreren Messstellen Werte: all, any, majority. |
data.checks[].notify_degraded | boolean | auch bei teilweise gestört benachrichtigen |
data.checks[].notify_down | boolean | bei Störung benachrichtigen |
data.checks[].notify_up | boolean | bei Entwarnung benachrichtigen |
data.checks[].channels | integer[] | Kanal-IDs; leer = Standardkanäle |
data.checks[].repeat_minutes | integer | Erinnerung bei anhaltender Störung in Minuten, 0 = aus |
data.checks[].token | string | Token |
data.checks[].node_name | string | Name der Node |
data.checks[].revision | integer | Revision |
data.checks[].created_at | datetime | angelegt |
data.checks[].updated_at | datetime | geändert |
data.checks[].state | object | |
data.checks[].state.state | string | up, down, degraded, flapping, paused, pending |
data.checks[].state.since | datetime | seit |
data.checks[].state.last_check_at | datetime | letzte Messung |
data.checks[].state.last_status | string | up|down |
data.checks[].state.last_latency_ms | number | Latenz |
data.checks[].state.last_reason | string | Grund |
data.checks[].state.last_message | string | Meldung |
data.checks[].state.down_since | datetime | gestört seit |
data.checks[].state.last_push_at | datetime | letzter Push |
data.checks[].push | object | nur bei type push |
data.checks[].push.url | string | Push-URL bei ipv64 |
data.checks[].push.hub_url | string | Push-URL am hub |
data.checks[].push.node_path | string | Pfad an der Node (http://<node>/api/push/<token>) |
Mögliche Fehler: 401404429 Fehlercodes
/hc2/nodes/{node_id}
Node umbenennen, Standort, Fernverwaltung
| Feld | Typ | Beschreibung | |
|---|---|---|---|
node_id | Pfad, string | Pflicht | Kennung der Node (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | ||
location | string | ||
remote_mgmt | string | off, read, full |
curl -X PATCH "https://ipv64.net/api/v2/hc2/nodes/nz5EcCnDHtOXEprvZMXP9L8u58wguMKE" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.node_id | string | |
data.name | string | |
data.location | string | |
data.version | string | |
data.timezone | string | |
data.modules | string[] | |
data.remote_mgmt | string | off, read, full |
data.online | boolean | |
data.last_seen | datetime | |
data.last_sync | datetime | |
data.outbox_size | integer | |
data.conflicts | integer | |
data.hub | string | verbunden mit |
data.linked_at | datetime |
Mögliche Fehler: 401404422429 Fehlercodes
/hc2/nodes/{node_id}
Node trennen (Token widerrufen)
Die Node läuft danach standalone weiter.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
node_id | Pfad, string | Pflicht | Kennung der Node (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
keep_checks | boolean | Checks mit öffentlichem Ziel als Online-Checks weiterführen (Standard true) |
curl -X DELETE "https://ipv64.net/api/v2/hc2/nodes/nz5EcCnDHtOXEprvZMXP9L8u58wguMKE" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.unlinked | boolean | |
data.checks_kept_online | integer | |
data.checks_deleted | integer |
Mögliche Fehler: 401404429 Fehlercodes
/hc2/nodes/{node_id}/commands
Letzte Befehle
| Feld | Typ | Beschreibung | |
|---|---|---|---|
node_id | Pfad, string | Pflicht | Kennung der Node (32 Zeichen) |
limit | Query, integer | höchstens 200 |
curl "https://ipv64.net/api/v2/hc2/nodes/nz5EcCnDHtOXEprvZMXP9L8u58wguMKE/commands" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].command_id | integer | |
data[].node_id | string | |
data[].name | string | |
data[].args | object | |
data[].created_at | datetime | |
data[].done_at | datetime | |
data[].ok | boolean | |
data[].output | Ergebnis |
Mögliche Fehler: 401404429 Fehlercodes
/hc2/nodes/{node_id}/commands
Befehl an die Node
Die Node nimmt Befehle nur an, wenn ihre Fernverwaltung es erlaubt.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
node_id | Pfad, string | Pflicht | Kennung der Node (32 Zeichen) |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
name | string | Pflicht | run_check, repair, pause, resume, resolve_conflict |
args | object | ||
args.token | string | Check-Token (run_check, pause, resume) | |
args.id | integer | Konflikt-Nr. (resolve_conflict) | |
args.keep | string | server|local (resolve_conflict) |
curl -X POST "https://ipv64.net/api/v2/hc2/nodes/nz5EcCnDHtOXEprvZMXP9L8u58wguMKE/commands" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.command_id | integer | |
data.node_id | string | |
data.name | string | |
data.args | object | |
data.created_at | datetime | |
data.done_at | datetime | |
data.ok | boolean | |
data.output | Ergebnis |
Mögliche Fehler: 401404422429 Fehlercodes
Honeypot64-Sensoren (Node64) melden alle 10 Minuten Angriffe (Format schema 1); eigene Sensoren und eigener Beitrag. Aus den Meldungen mehrerer Accounts entsteht die v64 Blocklist.
/honeypot/reports
Meldung eines Sensors annehmen
Nur für Node64 (Modul honeypot bzw. NODE64_MODE=honeypot). Body JSON, optional mit Content-Encoding: gzip, höchstens 2 MiB entpackt. report_id = <sensor.id>-<period.start unix>; schon bekannte report_id: 200 mit duplicate. Höchstens eine Meldung je Sensor in 2 Minuten (429 mit Retry-After), neue Sensoren je Account höchstens 5 (Klasse Standard) bzw. 25 (andere Klassen), es zählen Sensoren mit Meldung in den letzten 30 Tagen (sonst 403 sensor_limit). Quellen mit privater/reservierter IP, der IP eines eigenen Sensors oder unbekannter Art/Dienst werden verworfen und in rejected gezählt. 400/413/422: nicht wiederholen; 401/403: Key bzw. Sensor prüfen; 429/5xx: später erneut.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
Content-Encoding | Query, string | Werte: gzip, identity. |
| Feld | Typ | Beschreibung | |
|---|---|---|---|
schema | integer | Pflicht | |
report_id | string | Pflicht | <sensor.id>-<period.start unix> |
sensor | object | Pflicht | |
sensor.id | string | Pflicht | fest je Installation, nicht die IP |
sensor.version | string | Pflicht | |
sensor.profile | string | Pflicht | Werte: minimal, standard, full, custom, proxy. |
sensor.mode | string | Pflicht | Werte: module, headless. |
sensor.country | string | eingestellter Standort des Sensors (ISO 3166-1 alpha-2), nur fuer die Live-Karte; fehlt = automatisch | |
period | object | Pflicht | UTC, start inklusive, end exklusive; höchstens 7 Tage, Ende höchstens 5 min in der Zukunft |
period.start | datetime | Pflicht | |
period.end | datetime | Pflicht | |
sources | object[] | Pflicht | |
sources[].ip | string | Pflicht | öffentliche IPv4/IPv6 |
sources[].kind | string | Pflicht | feste Liste: ssh:bruteforce, telnet:bruteforce, http:bruteforce, http:exploit[:sqli|xss|traversal|rce|jndi|log4shell|ssrf|upload], http:scan, http:bad-useragent, generic:portscan, generic:probe, scanner:research, rdp:bruteforce, mail:auth-bruteforce, db:bruteforce, vpn:bruteforce |
sources[].service | string | Pflicht | |
sources[].port | integer | Pflicht | Bereich: 0 bis 65535. |
sources[].count | integer | Pflicht | Bereich: 1 bis …. |
sources[].first | datetime | Pflicht | |
sources[].last | datetime | Pflicht | |
sources[].source | string | Pflicht | Werte: honeypot, log, syslog. |
sources[].rule | string | ||
sources[].detail | string | ||
samples | object | Proben (nur Honeypot), als Tagessummen gespeichert | |
samples.credentials | object[] | ||
samples.credentials[].service | string | Pflicht | |
samples.credentials[].user | string | Pflicht | |
samples.credentials[].pass | string | Pflicht | |
samples.credentials[].count | integer | Pflicht | Bereich: 1 bis …. |
samples.paths | object[] | ||
samples.paths[].key | string | Pflicht | |
samples.paths[].count | integer | Pflicht | Bereich: 1 bis …. |
samples.user_agents | object[] | ||
samples.user_agents[].key | string | Pflicht | |
samples.user_agents[].count | integer | Pflicht | Bereich: 1 bis …. |
samples.payloads | object[] | ||
samples.payloads[].sha256 | string | Pflicht | |
samples.payloads[].head | string | Pflicht | höchstens 256 Bytes |
samples.payloads[].service | string | Pflicht | |
samples.payloads[].port | integer | Pflicht | Bereich: 0 bis 65535. |
samples.payloads[].count | integer | Pflicht | Bereich: 1 bis …. |
samples.fingerprints | object[] | H6: Fingerabdrücke der Werkzeuge (optional). Keys, die nicht dem Muster folgen, werden verworfen und als invalid_fingerprint gezählt. | |
samples.fingerprints[].key | string | Pflicht | |
samples.fingerprints[].count | integer | Pflicht | Bereich: 1 bis …. |
dropped | integer | vom Sensor wegen Grenzen weggelassen Bereich: 0 bis …. |
curl -X POST "https://ipv64.net/api/v2/honeypot/reports" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.accepted | integer | gespeicherte Quellen |
data.rejected | integer | verworfene Quellen/Proben |
data.rejected_reasons | object | not_public, own_ip, unknown_kind, unknown_service, unknown_source, out_of_period, invalid_fingerprint |
data.report_id | string |
Mögliche Fehler: 400401403413415422429 Fehlercodes
/honeypot/sensors
Eigene Sensoren
Sensoren des Accounts mit Beitrag 24 h / 7 d. Die IP eines Sensors wird nie ausgegeben.
curl "https://ipv64.net/api/v2/honeypot/sensors" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object[] | |
data[].id | string | |
data[].version | string | |
data[].profile | string | |
data[].mode | string | |
data[].first_seen | datetime | |
data[].last_seen | datetime | |
data[].online | boolean | Meldung in den letzten 30 Minuten |
data[].reports | integer | |
data[].disabled | boolean | |
data[].sources_24h | integer | verschiedene Quell-IPs |
data[].sources_7d | integer | |
data[].events_24h | integer | |
data[].events_7d | integer |
Mögliche Fehler: 401429 Fehlercodes
/honeypot/list-token
Listen-Token für den Live-Stand der v64 Blocklist
Persönliches Listen-Token (wie unter /honeypot/token.php). Fehlt es, wird es angelegt; ein vorhandenes bleibt. Abruf dann über base + Dateiname (z. B. ipv64_blocklist_v64.txt). live = Berechtigung jetzt (Klasse außer Standard oder Beitragende/r); ohne Berechtigung liefert die Live-Adresse den Tagesstand (Kopfzeile X-IPv64-List: daily). Token geheim halten.
curl "https://ipv64.net/api/v2/honeypot/list-token" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.token | string | |
data.live | boolean | |
data.base | string |
Mögliche Fehler: 401429 Fehlercodes
/honeypot/stats
Eigener Beitrag
Ereignisse und verschiedene Quell-IPs 24 h / 7 d, Top-Arten und Top-Ports (7 Tage), Verlauf je Tag (UTC, 7 Tage).
curl "https://ipv64.net/api/v2/honeypot/stats" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.sensors | integer | |
data.sensors_online | integer | |
data.contributor | boolean | mindestens ein Sensor hat in den letzten 7 Tagen gemeldet |
data.last_report | datetime | |
data.events_24h | integer | |
data.events_7d | integer | |
data.sources_24h | integer | |
data.sources_7d | integer | |
data.top_kinds | object[] | |
data.top_kinds[].kind | string | |
data.top_kinds[].events | integer | |
data.top_kinds[].sources | integer | |
data.top_ports | object[] | |
data.top_ports[].service | string | |
data.top_ports[].port | integer | |
data.top_ports[].events | integer | |
data.top_ports[].sources | integer | |
data.timeline | object[] | |
data.timeline[].day | string | |
data.timeline[].events | integer |
Mögliche Fehler: 401429 Fehlercodes
IP-Auskunft zur v64 Blocklist (Honeypot64): Warum ist eine IP gelistet? Ohne API-Key mit engem Limit je Client-IP (10 sofort, dann 1 je Minute), mit API-Key großzügiger (120 sofort, dann 2 je Sekunde je Account). Keine Angaben zu Sensoren oder meldenden Accounts.
/threat/ip/{ip}
IP-Auskunft
„Warum ist diese IP gelistet?“ Gelistet ja/nein, Status (auch Freigabe), Vertrauenswert, Listen, Arten, Ports (nur von mindestens 2 Accounts gemeldet), erste/letzte Sichtung (Tag, UTC), Anzahl meldender Accounts, Land/ASN (falls vorhanden, sonst null). Für nicht gelistete IPs keine Einzelheiten. Freigaben wirken hier sofort, in den Listen mit der nächsten Bewertung. Ein angegebener, aber ungültiger API-Key ergibt 401.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
ip | Pfad, string | Pflicht | Genau eine öffentliche IPv4- oder IPv6-Adresse (kein Netz) |
curl "https://ipv64.net/api/v2/threat/ip/{ip}" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.ip | string | Normalisierte Adresse |
data.family | integer | Werte: 4, 6. |
data.listed | boolean | steht auf der v64 Blocklist (Freigaben sind schon herausgerechnet) |
data.status | string | released = Freigabe aus Antrag (befristet), allowlisted = Freigabeliste Werte: listed, not_listed, released, allowlisted. |
data.score | integer | null | Vertrauenswert 0–100 (nur wenn gelistet) Bereich: 0 bis 100. |
data.lists | string[] | Teillisten (ipv64_blocklist_v64_<name>) Werte: ssh, web, mail, rdp, scanner, research. |
data.kinds | string[] | Arten (feste Einteilung, z. B. ssh:bruteforce) |
data.ports | object[] | angegriffene Ports, die mindestens 2 Accounts gemeldet haben (höchstens 10) |
data.ports[].service | string | |
data.ports[].port | integer | |
data.first_seen | string | null | erste Sichtung (Tag, UTC) |
data.last_seen | string | null | letzte Sichtung (Tag, UTC) |
data.accounts | integer | null | Anzahl verschiedener meldender Accounts |
data.country | string | null | Land (ISO 3166-1), falls bekannt |
data.asn | integer | null | Netzbetreiber (ASN), falls bekannt |
data.release | object | |
data.release.status | string | Werte: none, in_review, released, allowlisted, rejected. |
data.release.protected_until | datetime | null | Freigabe gilt bis (UTC); null = dauerhaft bzw. keine Freigabe |
data.details | string | Seite mit Erklärung und Freigabe-Antrag |
Mögliche Fehler: 401422429 Fehlercodes
/threat/stats
Statistik Honeypot64 (Überblick)
Öffentlicher Überblick wie auf https://ipv64.net/honeypot/stats.php: aktive Sensoren, Angriffe 24 h, Verlauf 30 Tage, Top 10 Ports und Arten, Größe der Listen, Top 10 Benutzernamen, Passwörter, Pfade und User-Agents, Top 10 Herkunftsländer der v64 Blocklist (top.countries). Ranglisten enthalten nur Einträge, die mindestens threshold.accounts unabhängige Accounts in den letzten 30 Tagen gemeldet haben (bereinigt: keine E-Mail-Adressen, Steuerzeichen, zufälligen Zeichenketten). Antwort aus dem Cache, höchstens alle 10 Minuten neu berechnet. Limit wie /threat/ip: ohne API-Key je Client-IP 10 sofort, dann 1 je Minute; mit API-Key je Account 120 sofort, dann 2 je Sekunde. Ein angegebener, aber ungültiger API-Key ergibt 401.
curl "https://ipv64.net/api/v2/threat/stats" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.generated_at | datetime | Stand des Caches (UTC) |
data.window_days | integer | Fenster der Ranglisten in Tagen |
data.threshold | object | |
data.threshold.accounts | integer | Mindestzahl meldender Accounts für Ranglisten und Listen (2 unter 20 aktiven Accounts, sonst 3) |
data.threshold.active_accounts_7d | integer | Accounts, deren Sensoren in den letzten 7 Tagen gemeldet haben |
data.sensors | object | |
data.sensors.active_7d | integer | |
data.sensors.online | integer | Meldung in den letzten 30 Minuten |
data.attacks_24h | object | |
data.attacks_24h.events | integer | |
data.attacks_24h.sources | integer | verschiedene Angreifer-IPs |
data.timeline | object[] | Angriffe je Tag (UTC), 30 Tage |
data.timeline[].day | string | |
data.timeline[].events | integer | |
data.top_ports | object[] | meistangegriffene Ports (7 Tage, höchstens 10) |
data.top_ports[].service | string | |
data.top_ports[].port | integer | |
data.top_ports[].events | integer | |
data.top_kinds | object[] | häufigste Arten (7 Tage, höchstens 10) |
data.top_kinds[].kind | string | |
data.top_kinds[].events | integer | |
data.lists | object | Größe der Listen: v64 (gelistete IPs, Live-Stand), honeypot_passwords, honeypot_usernames, honeypot_bad_useragents, honeypot_attack_paths (Einträge der Text-Listen) |
data.top | object | Top 10 je Bereich (30 Tage, ab threshold.accounts Accounts) |
data.top.usernames | object[] | |
data.top.usernames[].value | string | |
data.top.usernames[].events | integer | Summe der Versuche (30 Tage) |
data.top.usernames[].accounts | integer | verschiedene meldende Accounts (30 Tage) |
data.top.passwords | object[] | |
data.top.passwords[].value | string | |
data.top.passwords[].events | integer | Summe der Versuche (30 Tage) |
data.top.passwords[].accounts | integer | verschiedene meldende Accounts (30 Tage) |
data.top.paths | object[] | |
data.top.paths[].value | string | |
data.top.paths[].events | integer | Summe der Versuche (30 Tage) |
data.top.paths[].accounts | integer | verschiedene meldende Accounts (30 Tage) |
data.top.user_agents | object[] | |
data.top.user_agents[].value | string | |
data.top.user_agents[].events | integer | Summe der Versuche (30 Tage) |
data.top.user_agents[].accounts | integer | verschiedene meldende Accounts (30 Tage) |
data.top.fingerprints | object[] | H6: Fingerabdrücke (JA4/HASSH) |
data.top.fingerprints[].value | string | |
data.top.fingerprints[].events | integer | Summe der Versuche (30 Tage) |
data.top.fingerprints[].accounts | integer | verschiedene meldende Accounts (30 Tage) |
data.top.countries | object[] | Herkunft nach Land: IPs der v64 Blocklist mit Sichtung in den letzten 30 Tagen je Land (Top 10, nach Anzahl IPs). Land nach Standort aus DB-IP Lite (CC BY 4.0, IP-Länderdaten: DB-IP.com), Lücken aus den RIR-Daten (https://ipv64.net/blocklists/country_ranges.txt.gz). |
data.top.countries[].country | string | ISO 3166-1 alpha-2 |
data.top.countries[].ips | integer | gelistete IPs aus diesem Land |
data.top.countries[].events | integer | Ereignisse dieser IPs (Bewertungsfenster) |
data.info | string | |
data.license | string |
Mögliche Fehler: 401429503 Fehlercodes
/threat/watch
Frühwarnung: Netze und Limits
Frühwarnung für eigene Netze (Honeypot64): Limits deiner Klasse, eingetragene Netze und die automatisch überwachten DynDNS-IPs des Accounts (aktuelle öffentliche A/AAAA-Einträge deiner Domains). Limit wie GET /threat/ip mit API-Key (eigener Topf).
curl "https://ipv64.net/api/v2/threat/watch" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.limits | object | |
data.limits.max | integer | Netze je Account (Standard 3, sonst 50) |
data.limits.min_prefix_v4 | integer | IPv4 höchstens /16 |
data.limits.min_prefix_v6 | integer | IPv6 höchstens /32 |
data.networks | object[] | |
data.networks[].id | integer | |
data.networks[].cidr | string | Netz, normalisiert (Netzadresse ohne Host-Bits) |
data.networks[].label | string | |
data.networks[].verified | boolean | Nachweis erbracht (setzt nur ipv64): dann meldet jede Sichtung, sonst nur gelistete IPs |
data.networks[].created_at | datetime | |
data.dyndns | object[] | automatisch überwacht (gelten als nachgewiesen) |
data.dyndns[].ip | string | |
data.dyndns[].domain | string |
Mögliche Fehler: 401429 Fehlercodes
/threat/watch
Frühwarnung: Netz eintragen
Trägt ein öffentliches Netz (CIDR) oder eine einzelne IP ein; Host-Bits werden entfernt (203.0.113.7/24 → 203.0.113.0/24). Ohne Nachweis (verified false, setzt nur ipv64) gibt es Treffer nur für IPs, die auf der v64 Blocklist stehen. Fehler: 422 invalid_cidr, prefix_too_large (größer als limits.min_prefix_v4/v6), not_public; 409 duplicate; 403 limit_reached (limits.max erreicht).
| Feld | Typ | Beschreibung | |
|---|---|---|---|
cidr | string | Pflicht | Netz in CIDR-Form oder einzelne IP (IPv4 bis /16, IPv6 bis /32) |
label | string | Bezeichnung (optional) |
curl -X POST "https://ipv64.net/api/v2/threat/watch" \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"cidr":"203.0.113.0/24","label":"Büro"}'
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.id | integer | |
data.cidr | string | Netz, normalisiert (Netzadresse ohne Host-Bits) |
data.label | string | |
data.verified | boolean | Nachweis erbracht (setzt nur ipv64): dann meldet jede Sichtung, sonst nur gelistete IPs |
data.created_at | datetime |
Mögliche Fehler: 401403409422429 Fehlercodes
/threat/watch/{id}
Frühwarnung: Netz löschen
Entfernt ein eigenes Netz. Frühere Treffer bleiben (mit network_id) erhalten.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
id | Pfad, string | Pflicht | ID des Netzes |
curl -X DELETE "https://ipv64.net/api/v2/threat/watch/12" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401404429 Fehlercodes
/threat/watch/alerts
Frühwarnung: Treffer
Treffer der Frühwarnung: eine IP aus einem eigenen Netz bzw. eine DynDNS-IP des Accounts ist bei der Bewertung (alle 30 Minuten) als Angreifer aufgefallen. Netze ohne Nachweis nur mit gelisteten IPs, DynDNS-IPs mit jeder Sichtung. Dieselbe IP höchstens einmal je 24 h, außer sie wird neu gelistet. Älteste zuerst (created_at, id), höchstens 100 je Abruf. next ist ein Cursor (für den Client undurchsichtig, derzeit "<RFC 3339>_<id>"): unverändert als since des nächsten Abrufs verwenden; doppelte IDs verwerfen. Ohne neue Treffer ist next der übergebene Stand, bei leerem since die aktuelle Zeit (minus 5 Minuten). Treffer werden 90 Tage aufgehoben.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
since | Query, string | Cursor aus next der vorigen Antwort ((created_at, id) danach) oder ein RFC-3339-Zeitpunkt (created_at danach); ohne: alle |
curl "https://ipv64.net/api/v2/threat/watch/alerts" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.alerts | object[] | |
data.alerts[].id | integer | |
data.alerts[].ip | string | |
data.alerts[].cidr | string | Netz bzw. bei dyndns die IP als /32 bzw. /128 |
data.alerts[].network_id | integer | null | null bei dyndns |
data.alerts[].source | string | Werte: network, dyndns. |
data.alerts[].label | string | Bezeichnung des Netzes bzw. Domain (zusätzlich) |
data.alerts[].listed | boolean | steht auf der v64 Blocklist |
data.alerts[].score | integer | Vertrauenswert der Bewertung Bereich: 0 bis 100. |
data.alerts[].kinds | string[] | |
data.alerts[].first_seen | string | erste Sichtung (Tag, UTC) |
data.alerts[].last_seen | string | letzte Sichtung (Tag, UTC) |
data.alerts[].created_at | datetime | |
data.alerts[].details | object | Warum die IP aufgefallen ist (letzte 14 Tage): Anzahlen und je Herkunft, Dienst, Port, Art und Regel – nie Sensoren, Accounts oder Inhalte. null bei älteren Treffern (vor Einführung der Details). |
data.alerts[].details.accounts | integer | meldende Accounts |
data.alerts[].details.sensors | integer | |
data.alerts[].details.events | integer | |
data.alerts[].details.lists | string[] | |
data.alerts[].details.reason | string | Grund der Bewertung, z. B. threshold, customer_ip, allowlist |
data.alerts[].details.seen | object[] | höchstens 8 Zeilen, die häufigsten zuerst |
data.alerts[].details.seen[].origin | string | Werte: honeypot, log, syslog. |
data.alerts[].details.seen[].service | string | |
data.alerts[].details.seen[].port | integer | |
data.alerts[].details.seen[].kind | string | |
data.alerts[].details.seen[].rule | string | Regel des Log-Sensors, sonst leer |
data.alerts[].details.seen[].count | integer | |
data.alerts[].details.seen[].sensors | integer | |
data.alerts[].details.seen[].last | datetime | |
data.next | string | Cursor für den nächsten Abruf (unverändert als since zurückgeben) |
Mögliche Fehler: 400401429 Fehlercodes
/threat/passwords/range/{prefix}
Passwortprüfung mit k-Anonymität
Wie die Range-API von Have I Been Pwned: SHA-1 des Passworts lokal berechnen, nur die ersten 5 Hex-Zeichen schicken, die Antwort lokal vergleichen. Antwort text/plain, je Zeile "<restliche 35 Hex-Zeichen, groß>:<Anzahl>" (CRLF, sortiert) für alle Passwörter, die Angreifer in den letzten 365 Tagen an Honeypot64-Sensoren probiert haben und die mindestens 2 bzw. 3 unabhängige Accounts gemeldet haben (Schwelle wie die Ranglisten). Immer mindestens 64 Zeilen: fehlende werden mit Zufallszeilen mit Anzahl 0 aufgefüllt, damit die Größe der Antwort nichts verrät. Cache 1 h. Limit wie /threat/ip: ohne API-Key je Client-IP 10 sofort, dann 1 je Minute; mit API-Key je Account 120 sofort, dann 2 je Sekunde. Seite für Menschen: https://ipv64.net/honeypot/password.php
| Feld | Typ | Beschreibung | |
|---|---|---|---|
prefix | Pfad, string | Pflicht | Die ersten 5 Hex-Zeichen von SHA-1(Passwort), groß oder klein |
curl "https://ipv64.net/api/v2/threat/passwords/range/{prefix}" \
-H "Authorization: Bearer DEIN_API_KEY"
Kein Inhalt.
Mögliche Fehler: 401422429503 Fehlercodes
/threat/feed
Änderungs-Feed der v64 Blocklist
Änderungen der v64 Blocklist und ihrer Teillisten (Live-Stand, nach jeder Bewertung alle 30 Minuten) nach dem Cursor since, älteste zuerst, höchstens 10 000 je Abruf (more = true: sofort mit next weiter). Vorgehen: einmal die Live-Liste vollständig laden und /threat/feed ohne since abrufen (liefert nur den aktuellen Cursor), danach regelmäßig mit since = next. ETag/If-None-Match: ohne Änderungen 304. Änderungen bleiben 30 Tage; ist ein Cursor älter und sind Änderungen danach schon gelöscht, kommt 410 (Liste neu laden, ohne since beginnen). Für alle Klassen außer Standard und für Beitragende (ein Honeypot64-Sensor des Accounts hat in den letzten 7 Tagen gemeldet), sonst 403 feed_not_available. Limit je Account 120 sofort, dann 2 je Sekunde.
| Feld | Typ | Beschreibung | |
|---|---|---|---|
since | Query, string | Cursor aus next der vorigen Antwort; ohne: aktueller Cursor ohne Einträge | |
If-None-Match | Query, string | ETag der vorigen Antwort mit demselben since |
curl "https://ipv64.net/api/v2/threat/feed" \
-H "Authorization: Bearer DEIN_API_KEY"
| Feld | Typ | Beschreibung |
|---|---|---|
data | object | |
data.changes | object[] | älteste zuerst, höchstens 10 000 |
data.changes[].ip | string | |
data.changes[].action | string | add = neu gelistet, remove = nicht mehr gelistet, update = andere Teillisten Werte: add, remove, update. |
data.changes[].lists | string[] | Listen danach (v64, ssh, web, mail, rdp, scanner, research), leer bei remove |
data.changes[].previous_lists | string[] | Listen davor, leer bei add |
data.changes[].at | datetime | Zeitpunkt der Bewertung (UTC) |
data.next | string | Cursor für den nächsten Abruf (undurchsichtig, unverändert als since verwenden) |
data.more | boolean | es liegen weitere Änderungen bereit (sofort mit next weiter abrufen) |
Mögliche Fehler: 400401403410429503 Fehlercodes