---
title: "Domain-Diagnose"
description: "Live-Prüfung von DNS und Zertifikat einer eigenen App-Domain: autoritative Nameserver, gesehener TXT-Eintrag, Propagation, Zertifikatsstatus, letzte fehlgeschlagene Verifizierung. Nur für Admins."
---

`GET /api/organization/whitelabel/domains/{id}/diagnostics`

Prüft bei jedem Aufruf live und schreibt nichts. Gedacht für eine Domain, die sich nicht verifizieren lässt oder kein HTTPS ausliefert.

## Zugriff

Nur Organisations-Admins, wie bei [Domain abfragen](/de/api/whitelabel/get-domain).

## Beispiel (cURL)

```bash
BASE_URL="https://uptimeify.io"
TOKEN="<dein-api-token>"

curl -X GET "$BASE_URL/api/organization/whitelabel/domains/12/diagnostics" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
```

## Antwort (Response)

`200 OK`

```json
{
  "domainId": 12,
  "hostname": "status.acme.example",
  "status": "active",
  "checkedAt": "2026-10-29T09:30:00.000Z",
  "verification": {
    "recordFound": true,
    "recordName": "_verify-status.status.acme.example",
    "expected": "uptimeify-verify-abc123",
    "lookup": "records",
    "observed": ["uptimeify-verify-abc123"],
    "nameservers": { "zone": "acme.example", "hosts": ["ns1.dns-provider.example", "ns2.dns-provider.example"] },
    "authoritative": { "nameserver": "ns1.dns-provider.example", "lookup": "records", "observed": ["uptimeify-verify-abc123"] },
    "propagation": "propagated"
  },
  "certificate": {
    "state": "valid",
    "errorCode": null,
    "errorMessage": null,
    "issuer": "Let's Encrypt",
    "validFrom": "2026-10-01T00:00:00.000Z",
    "validTo": "2026-12-30T00:00:00.000Z",
    "daysUntilExpiry": 62
  },
  "lastVerificationError": null,
  "lastVerificationErrorAt": null
}
```

| Feld | Bedeutung |
|------|-----------|
| `verification` | Die Live-Prüfung des TXT-Eintrags, `null`, wenn die Domain keinen Verifizierungstoken hat. Dieselben Felder wie die Fehlerdaten von `domainVerificationFailed` beim Verifizieren, dazu `recordFound` (`true`: der Token ist veröffentlicht, die Verifizierung würde gelingen). |
| `verification.nameservers` | Die Zone, in die der Hostname delegiert ist, und ihre autoritativen Nameserver; `null`, wenn sich das nicht ermitteln ließ. |
| `verification.authoritative` | Die Antwort eines dieser Nameserver, direkt gefragt, an allen Caches vorbei; `null`, wenn keiner gefragt werden konnte. Gefragt werden nur öffentliche Nameserver-Adressen. |
| `verification.propagation` | `propagated` (unser Resolver sieht den Token), `propagating` (dein Nameserver hat ihn, unser Resolver noch nicht; nach Ablauf der TTL erneut versuchen), `not_published` (nicht einmal dein Nameserver hat ihn), `unknown` (kein Nameserver ließ sich fragen). |
| `certificate.state` | Was ein Browser unter `https://<hostname>` bekommt: `valid`, `invalid` (es wird ein Zertifikat ausgeliefert, die Prüfung schlägt fehl, Grund in `errorCode`), `handshake_failed` (kein TLS-Handshake: das Zertifikat wird eventuell noch ausgestellt, oder der CNAME zeigt noch nicht auf uns), `unreachable` (`errorCode` `not_resolved` oder `private_address`), `not_active` (die Domain ist noch nicht aktiviert, vorher wird kein Zertifikat ausgestellt, es wurde nichts geprüft). |
| `certificate.errorCode` | `expired`, `not_yet_valid`, `hostname_mismatch`, `untrusted`, `not_resolved`, `private_address` oder `null`. |
| `lastVerificationError`, `lastVerificationErrorAt` | Die letzte fehlgeschlagene Verifizierung, wie sie an der Domain gespeichert ist; `null` nach einer erfolgreichen. |

## Häufige Fehler

- `400 Bad Request` (`invalidDomainId`), wenn die ID keine positive Zahl ist
- `401 Unauthorized`, wenn du nicht angemeldet bist
- `403 Forbidden`, wenn du kein Organisations-Admin bist
- `404 Not Found` (`domainNotFound`), wenn die Domain nicht existiert oder zu einer anderen Organisation gehört
