Kennzeichen-Check API-Referenz
Die Kennzeichen-Check API-Referenz listet jeden Endpunkt mit Parametern, Antwortcodes und Feldern. Bei Zevra entsteht diese Seite direkt aus der maschinenlesbaren Beschreibung der Schnittstelle, deshalb weicht sie nie von der laufenden API ab.
Kennzeichen-Check · Kennzeichen-Check einbinden · Kennzeichen-Check Abdeckung
Basisadresse und Schlüssel
| Punkt | Wert |
|---|---|
| Basisadresse | https://app.zevra24.de/api/kc/v1 |
| Schlüssel im Header | X-WKZ-Key · Authorization: Bearer |
| Limit je Schlüssel | 120 Anfragen pro Minute |
| Sandbox-Schlüssel | Beginnt mit wkz_sbx_: feste Szenarien, keine Behörde, keine Berechnung |
Preis laut Beschreibung: Wunschkennzeichen live prüfen und reservieren. Grundgebühr 50,00 € im Monat, 0,05 € je berechneter Prüfung, 2,00 € je erfolgreicher Reservierung (netto, zuzüglich Behördengebühren). Limit: 120 Anfragen pro Minute je Schlüssel. Schlüssel mit wkz_sbx_ sind Sandbox-Schlüssel: feste Szenarien, keine Behörde, keine Berechnung.
Endpunkte
Mit Schlüssel heißt: Header X-WKZ-Key oder Authorization: Bearer. Jede Antwort mit Schlüssel trägt die Limit-Header.
- GETVerfügbarkeit einer Kombination prüfen (mit Schlüssel)
- POSTVerfügbarkeit aus dem domaingebundenen Widget prüfen (ohne Schlüssel)
- POSTÖffentliche Zevra-Testabfrage, 10 Versuche pro Besucher und Tag (ohne Schlüssel)
- POSTBis zu 50 Kombinationen in einem Aufruf prüfen (mit Schlüssel)
- POSTReservierung anlegen (nur mit aktivem Abonnement oder Sandbox-Schlüssel) (mit Schlüssel)
- GETStatus einer Reservierung (mit Schlüssel)
- GETVerbrauch und Kosten des laufenden Zeitraums (mit Schlüssel)
- GETZulassungsstellen und Zustand, optional nach Kürzel gefiltert (ohne Schlüssel) (ohne Schlüssel)
- GETFeste Szenarien der Sandbox (ohne Schlüssel) (ohne Schlüssel)
- GETDiese Beschreibung (ohne Schlüssel)
- GETDiese Beschreibung als Postman-Sammlung (ohne Schlüssel) (ohne Schlüssel)
GETVerfügbarkeit einer Kombination prüfen
GET https://app.zevra24.de/api/kc/v1/search
mit Schlüssel
Parameter
prefixquery · Pflichtfeld- Unterscheidungszeichen, 1 bis 3 Buchstaben
lettersquery · Pflichtfeld- 1 bis 2 Buchstaben
numbersquery · Pflichtfeld- 1 bis 4 Ziffern, ohne führende Null
plzquery- Postleitzahl, wenn das Kürzel zu mehreren Zulassungsstellen gehört (ambiguous_prefix) · genau 5 Stellen, nur Ziffern
office_idquery- Kennung der Zulassungsstelle aus der Antwort ambiguous_prefix
Antworten
| Code | Bedeutung | Datenmodell |
|---|---|---|
200 | OK | SearchResult |
401 | Schlüssel fehlt oder ist ungültig | Error |
403 | Zugang beendet (revoked) | Error |
429 | Monatslimit erreicht oder zu viele Anfragen | Error |
503 | Dienst vorübergehend nicht verfügbar | Error |
POSTVerfügbarkeit aus dem domaingebundenen Widget prüfen
POST https://app.zevra24.de/api/kc/v1/widget/search
ohne Schlüssel
Parameter
Originheader · Pflichtfeld- –
Inhalt der Anfrage
application/x-www-form-urlencoded ·
site_keystring· Pflichtfeld- beginnt mit
wkz_site_ codestring· Pflichtfeld- Unterscheidungszeichen, 1 bis 3 Buchstaben
lettersstring· Pflichtfeld- 1 bis 2 Buchstaben
numbersstring· Pflichtfeld- 1 bis 4 Ziffern, ohne führende Null
plzstring- genau 5 Stellen, nur Ziffern
office_idstring- höchstens 40 Zeichen
Antworten
| Code | Bedeutung | Datenmodell |
|---|---|---|
200 | OK | SearchResult |
400 | Ungültige Anfrage | Error |
401 | Site-Schlüssel oder Domain ungültig | Error |
429 | Limit erreicht | Error |
503 | Dienst nicht verfügbar | Error |
POSTÖffentliche Zevra-Testabfrage, 10 Versuche pro Besucher und Tag
POST https://app.zevra24.de/api/kc/v1/public/search
ohne Schlüssel
Parameter
Originheader · Pflichtfeld- –
Inhalt der Anfrage
application/x-www-form-urlencoded ·
codestring· Pflichtfeld- Unterscheidungszeichen, 1 bis 3 Buchstaben
lettersstring· Pflichtfeld- 1 bis 2 Buchstaben
numbersstring· Pflichtfeld- 1 bis 4 Ziffern, ohne führende Null
plzstring- genau 5 Stellen, nur Ziffern
office_idstring- höchstens 40 Zeichen
Antworten
| Code | Bedeutung | Datenmodell |
|---|---|---|
200 | OK | SearchResult |
400 | Ungültige Anfrage | Error |
401 | Anfragequelle ungültig | Error |
429 | Tageslimit erreicht | Error |
503 | Dienst nicht verfügbar | Error |
POSTBis zu 50 Kombinationen in einem Aufruf prüfen
POST https://app.zevra24.de/api/kc/v1/search/batch
mit Schlüssel
Inhalt der Anfrage
application/json ·
itemsarray <Plate> · Pflichtfeld- mindestens 1 Eintrag · höchstens 50 Einträge
Antworten
POSTReservierung anlegen (nur mit aktivem Abonnement oder Sandbox-Schlüssel)
POST https://app.zevra24.de/api/kc/v1/reservations
mit Schlüssel
Parameter
Idempotency-Keyheader · Pflichtfeld- mindestens 8 Zeichen · höchstens 80 Zeichen
Inhalt der Anfrage
application/json · ReservationRequest
Antworten
| Code | Bedeutung | Datenmodell |
|---|---|---|
200 | Bereits angelegt (gleicher Idempotency-Key) | Reservation |
202 | Angenommen | Reservation |
400 | Ungültige Anfrage | Error |
401 | Schlüssel fehlt oder ist ungültig | Error |
403 | Abonnement erforderlich | Error |
409 | Idempotency-Key mit anderem Inhalt verwendet | Error |
429 | Monatslimit erreicht oder zu viele Anfragen | Error |
503 | Dienst vorübergehend nicht verfügbar | Error |
GETStatus einer Reservierung
GET https://app.zevra24.de/api/kc/v1/reservations/{rid}mit Schlüssel
Parameter
ridpath · Pflichtfeld- –
Antworten
GETVerbrauch und Kosten des laufenden Zeitraums
GET https://app.zevra24.de/api/kc/v1/usage
mit Schlüssel
Antworten
GETZulassungsstellen und Zustand, optional nach Kürzel gefiltert (ohne Schlüssel)
GET https://app.zevra24.de/api/kc/v1/offices
ohne Schlüssel
Parameter
codequery- –
Antworten
| Code | Bedeutung | Datenmodell |
|---|---|---|
200 | OK | Offices |
GETFeste Szenarien der Sandbox (ohne Schlüssel)
GET https://app.zevra24.de/api/kc/v1/sandbox/scenarios
ohne Schlüssel
Antworten
| Code | Bedeutung | Datenmodell |
|---|---|---|
200 | OK | – |
GETDiese Beschreibung
GET https://app.zevra24.de/api/kc/v1/openapi.json
ohne Schlüssel
Antworten
| Code | Bedeutung | Datenmodell |
|---|---|---|
200 | OK | – |
GETDiese Beschreibung als Postman-Sammlung (ohne Schlüssel)
GET https://app.zevra24.de/api/kc/v1/postman.json
ohne Schlüssel
Antworten
| Code | Bedeutung | Datenmodell |
|---|---|---|
200 | OK | – |
Webhook
reservation.updated
Statuswechsel einer Reservierung, signiert mit HMAC-SHA256 (X-Zevra-Signature über »Zeitstempel.Inhalt«)
Parameter
X-Zevra-Eventheader · Pflichtfeld- –
X-Zevra-Timestampheader · Pflichtfeld- –
X-Zevra-Signatureheader · Pflichtfeld- –
Inhalt der Anfrage
application/json ·
idstring- –
typestring- Werte:
reservation.updated createdstring- –
dataReservation- –
Antworten
| Code | Bedeutung | Datenmodell |
|---|---|---|
200 | Jede 2xx-Antwort gilt als zugestellt; sonst Wiederholung nach 1, 5, 30, 120, 720 Minuten | – |
Limit-Header
X-RateLimit-Limitinteger- Anfragen pro Minute je Schlüssel
X-RateLimit-Remaininginteger- Verbleibende Anfragen in der laufenden Minute
X-RateLimit-Resetinteger- Sekunden bis zur nächsten Minute
Retry-Afterinteger- Nur bei zu vielen Anfragen pro Minute: Sekunden bis zum nächsten Versuch
Datenmodelle
Beschreibungen der Felder stammen unverändert aus der OpenAPI-Datei.
Error
errorstring· Pflichtfeld- Werte:
backend·bad_request·batch_size·holder·idem_conflict·idem_key·letters·no_backend·not_found·numbers·prefix·quota_exhausted·rate_limited·revoked·subscription_required·unauthorized messagestring· Pflichtfeld- –
message_enstring- Dieselbe Meldung auf Englisch
quotaobject- Nur bei quota_exhausted: Stand des Kontingents
Plate
prefixstring· Pflichtfeld- Unterscheidungszeichen, 1 bis 3 Buchstaben
lettersstring· Pflichtfeld- 1 bis 2 Buchstaben
numbersstring· Pflichtfeld- 1 bis 4 Ziffern, ohne führende Null
SearchResult
platestring | null- –
availableboolean | null- true = frei · false = vergeben · null = keine Aussage (nie als vergeben anzeigen)
reasonstring- Ohne Aussage (available = null): office_not_queryable/gate = Stelle nicht online prüfbar · check_failed/captcha_expired = Stelle antwortet gerade nicht, später erneut · unknown_prefix/unknown_office = Kürzel unbekannt · ambiguous_prefix = mehrere Stellen, plz oder office_id angeben. quota_exhausted · revoked · rate_limited · no_backend nur in /search/batch: ab diesem Eintrag wurde nicht mehr geprüft Werte:
checked·checked_via_twin·checked_via_warm_session·checked_via_captcha·check_failed·captcha_expired·gate·office_not_queryable·ambiguous_prefix·unknown_prefix·unknown_office·invalid·quota_exhausted·revoked·rate_limited·no_backend sandboxboolean- –
known_officeboolean- Das Kürzel gehört zu einer bekannten Zulassungsstelle
checkableboolean- Die Zulassungsstelle ist live abfragbar
latency_msinteger- Antwortzeit der Behörde in Millisekunden
plate_invalidstring- Gesetzt, wenn die Kombination formal unzulässig ist (keine Prüfung gezählt) Werte:
prefix·letters·numbers·office remaining_todayinteger- Nur /public/search: verbleibende Testabfragen heute
suggestionsarray <object>- Nur /public/search bei vergebenem Kennzeichen: freie Alternativen
suggestions_limitedboolean- Nur /public/search: die Behörde nannte weniger Alternativen als angefragt
suggestions_unavailableboolean- Nur /public/search: Alternativen konnten gerade nicht abgefragt werden
Holder
namestring· Pflichtfeld- –
vornamestring- –
geburtsdatumstring- –
strassestring- –
plzstring· Pflichtfeld- –
ortstring· Pflichtfeld- –
Reservation
idstring- –
statusstring- Werte:
queued·processing·reserved·failed environmentstring- Werte:
live·sandbox platestring- –
customerReferencestring | null- –
reasonstring | null- –
reservationCodestring | null- Code der Behörde für die Zulassung, nur bei status=reserved
authorityFeeAdvancedCentsinteger- Von Zevra verauslagte Behördengebühr in Cent (durchlaufender Posten)
createdAtstring- –
updatedAtstring- –
BatchResult
countinteger- –
resultsarray <SearchResult>- –
ReservationRequest
prefixstring· Pflichtfeld- Unterscheidungszeichen, 1 bis 3 Buchstaben
lettersstring· Pflichtfeld- 1 bis 2 Buchstaben
numbersstring· Pflichtfeld- 1 bis 4 Ziffern, ohne führende Null
halterHolder · Pflichtfeld- –
customerReferencestring- höchstens 80 Zeichen
Usage
environmentstring- –
statusstring- –
checksinteger- –
limitinteger- –
reservationsinteger- –
usageCentsinteger- –
authorityFeesAdvancedCentsinteger- –
periodEndstring | null- –
Offices
countinteger- –
officesarray <object>- –
Dateien zum Herunterladen
Fragen zur API-Referenz
Ist diese Referenz immer aktuell?
Wie teste ich ohne Kosten?
Was passiert bei mehr als 120 Anfragen pro Minute?
Welche Antwort wird berechnet?
Mehr zum Kennzeichen-Check
Kennzeichen-Check · Kennzeichen-Check einbinden · Kennzeichen-Check Abdeckung · Kennzeichen-Check für Shops · Kennzeichen-Check für Zulassungsdienste · Kennzeichen-Check Status
Zulassungsstellen mit Live-Prüfung, zum Beispiel: Berlin · Hamburg · Frankfurt am Main · Stuttgart · Kreis Recklinghausen · Düsseldorf · Dortmund · Bremerhaven · HB