Zum Inhalt springen
LOGICAR Entwickler Suchen

#Fehler und Grenzen

Auf dieser Seite

#Fehlercodes

Jede Fehlerantwort hat die Form { "error": { "code", "message", "requestId", "details" } } (Format). Werten Sie code aus, nicht message — der Satz kann sich ändern, der Code nicht. Interne Einzelheiten wie ein Stacktrace stehen in keiner Antwort; bei 500 hilft uns die requestId.

HTTPCodeBedeutungWas tun
400INVALID_REQUESTEin Pflichtfeld fehlt, ein Wert ist falsch oder ein Feld unbekannt. details.fields nennt jedes Feld mit Code und Grund — alle auf einmal.Anfrage korrigieren. Unverändert wiederholt, bleibt es ein Fehler.
400INVALID_JSONDer Rumpf ist kein gültiges JSON.Gültiges JSON mit Content-Type: application/json senden.
400INVALID_IDEMPOTENCY_KEYIdempotency-Key ist länger als 200 Zeichen.Einen kürzeren Schlüssel verwenden, etwa eine UUID.
400INVALID_CURSORDer cursor der Liste ist ungültig.Den nextCursor der letzten Seite unverändert zurückgeben.
400INVALID_WEBHOOK_URLDie Webhook-Adresse ist nicht erlaubt; details.reason nennt den Grund, etwa HTTPS_REQUIRED oder PRIVATE_ADDRESS.Eine öffentliche https-Adresse ohne Weiterleitung eintragen.
400INVALID_SCENARIONur Sandbox: unbekannter Wert in X-Sandbox-Scenario — bei POST /quotes jeder außer QUOTE_REQUIRED. details.allowed nennt die möglichen.Einen Wert aus der Tabelle der Szenarien verwenden; bei POST /quotes den Kopf weglassen.
401UNAUTHORIZEDDie Anfrage trägt keine Anmeldung.Authorization: Bearer <Token oder Schlüssel> oder X-API-Key mitschicken.
401INVALID_CREDENTIALSDer Schlüssel ist unbekannt oder widerrufen — oder der Zugang hinter einem Token gibt es nicht mehr.Den Zugang im Portal prüfen; ein widerrufener kommt nicht zurück.
401TOKEN_EXPIREDDas Zugriffstoken ist abgelaufen (nach einer Stunde).Ein neues Token holen (POST /oauth/token) und den Aufruf wiederholen.
401INVALID_TOKENDas Zugriffstoken ist ungültig — verändert, gekürzt oder nicht von LOGICAR.Ein neues Token holen und es unverändert mitschicken.
401ACCESS_TOKEN_REQUIREDDas Secret eines OAuth-Clients wurde als Schlüssel geschickt. Ein OAuth-Client holt erst ein Token.Mit Client-Kennung und Secret POST /oauth/token aufrufen und das Token mitschicken.
401CREDENTIALS_EXPIREDDer Zugang ist abgelaufen (Ablaufdatum im Portal).Im Portal einen neuen Zugang anlegen oder die Laufzeit verlängern lassen.
401CREDENTIALS_DISABLEDDer Zugang ist gesperrt.Im Portal wieder freigeben — oder den Grund der Sperre klären.
403ACCOUNT_SUSPENDEDIhr Konto ist gesperrt.Uns kontaktieren.
403ACCOUNT_NOT_ELIGIBLEDas Konto ist kein Auftraggeber-Konto.Uns kontaktieren — Schnittstellen sind für Auftraggeber.
403FEATURE_NOT_ENABLEDDie API v1 ist für den Echtbetrieb Ihres Kontos noch nicht freigeschaltet. Die Sandbox ist es immer.Die Freischaltung bei Ihrem Ansprechpartner anfragen.
403QUOTE_ACCEPTANCE_NOT_AGREEDIhre Vereinbarung sieht die Annahme von Angeboten über die Schnittstelle nicht vor.Das Angebot über den Link in der Angebotsmail annehmen — oder die Annahme per API in die Vereinbarung aufnehmen lassen.
403SANDBOX_ONLYDiesen Endpunkt gibt es nur in der Sandbox.Mit einem Testschlüssel (lc_test_…) oder einem Sandbox-Token aufrufen.
403INSUFFICIENT_SCOPEDem Zugang fehlt das Recht für diesen Aufruf. details.required nennt es, details.granted die vorhandenen.Im Portal dem Zugang das Recht geben — und ein neues Token holen, wenn es auf das Recht beschränkt war.
404NOT_FOUNDDiesen Endpunkt gibt es nicht.Pfad und Methode prüfen.
404ORDER_NOT_FOUNDZu dieser Kennung gibt es in Ihrem Konto keinen Auftrag und keine Anfrage.Kennung prüfen. Sandbox und Echtbetrieb sind getrennt.
404DOCUMENT_NOT_FOUNDDieses Dokument gibt es am Auftrag nicht — oder es ist für diesen Zugang nicht sichtbar.Die Liste GET …/documents abfragen; Rechte des Zugangs prüfen.
404QUOTE_NOT_FOUNDZu dieser Kennung gibt es in Ihrem Konto keine Anfrage und kein Angebot.Kennung der Anfrage, Anfrage- oder Angebotsnummer prüfen. Sandbox und Echtbetrieb sind getrennt.
404QUOTE_DOCUMENT_NOT_FOUNDZu diesem Angebot gibt es (noch) kein PDF — in der Sandbox nie.Warten, bis das Angebot vorliegt (OFFERED); in der Sandbox gibt es keine Dokumente.
404SUBSCRIPTION_NOT_FOUNDDiesen Webhook-Endpunkt gibt es in der Umgebung des Zugangs nicht.Kennung und Umgebung (Test- oder Live-Schlüssel) prüfen.
409IDEMPOTENCY_KEY_REUSEDDerselbe Idempotency-Key — oder dieselbe externalOrderId — kam mit anderem Inhalt.Für einen neuen Auftrag einen neuen Schlüssel verwenden; denselben nur für Wiederholungen.
409IDEMPOTENCY_REQUEST_IN_PROGRESSDer erste Aufruf mit diesem Schlüssel läuft noch.Nach Retry-After Sekunden wiederholen.
409EXTERNAL_ORDER_ID_EXISTSUnter dieser externalOrderId liegt schon ein Auftrag oder eine Anfrage. details nennt die Kennung.Den vorhandenen Vorgang abfragen, statt einen zweiten anzulegen.
409NO_CONTRACTING_PARTYFür Ihr Konto ist kein Auftraggeber (kaufmännischer Ansprechpartner) hinterlegt.Uns kontaktieren — das ist eine Lücke in der Einrichtung.
409ORDER_NOT_CHANGEABLEAb der Abholung ändert die API nichts mehr; eine Anfrage, die auf ein Angebot wartet, gar nicht.Uns anrufen — oder die Anfrage zurückziehen und neu stellen.
409ORDER_NOT_CANCELLABLEAb der Abholung storniert die API nicht mehr; eine abgeschlossene Anfrage lässt sich nicht zurückziehen.Uns anrufen: dann ist ein Fahrer mit dem Fahrzeug unterwegs.
409REQUEST_HAS_QUOTEZu dieser Anfrage liegt schon ein Angebot vor.Das Angebot ablehnen (POST /quotes/{id}/decline), statt die Anfrage zurückzuziehen.
409QUOTE_NOT_OFFEREDZu dieser Anfrage liegt (noch) kein Angebot vor, das sich annehmen oder ablehnen ließe.Den Stand mit GET /quotes/{id} abfragen; vor dem Angebot die Anfrage bei Bedarf zurückziehen (POST /orders/{id}/cancel).
409QUOTE_VERSION_MISMATCHAngeboten ist eine andere Fassung als die genannte (nachverhandelt). details.currentVersion nennt die aktuelle.Die aktuelle Fassung lesen und, wenn sie passt, diese annehmen.
409QUOTE_EXPIREDDie Gültigkeit des Angebots ist abgelaufen.Ein neues Angebot anfordern (POST /quotes).
409QUOTE_ALREADY_DECIDEDÜber das Angebot ist schon entschieden — angenommen, abgelehnt oder zurückgezogen. details.status nennt den Stand.Den Stand mit GET /quotes/{id} abfragen; nach einer Annahme steht der Auftrag in order.
409SANDBOX_FINISHEDNur Sandbox: das Szenario dieses Vorgangs ist durchgelaufen.Einen neuen Testvorgang anlegen.
409TOO_MANY_SUBSCRIPTIONSHöchstens zehn Webhook-Endpunkte je Umgebung.Einen nicht mehr gebrauchten Endpunkt löschen.
413PAYLOAD_TOO_LARGEDer Rumpf ist zu groß.Freie Daten kürzen (metadata, instructions).
422VEHICLE_NOT_DRIVEABLEDRIVEN, aber das Fahrzeug ist nicht fahrbereit oder nicht verkehrssicher.TRAILER oder TRUCK wählen — oder die Angabe zum Fahrzeug prüfen.
422SERVICE_NOT_SUPPORTEDEine Leistung, die LOGICAR nicht anbietet (Ausfuhrkennzeichen, Zoll).Die Leistung weglassen und selbst beauftragen.
422SERVICE_NOT_APPLICABLEDie Leistung passt nicht zum Auftrag, etwa ein Kurzzeitkennzeichen für einen Transport auf dem Lkw.Die Leistung weglassen.
422TRANSPORT_TYPE_NOT_ALLOWEDIhre Vereinbarung lässt diese Transportart nicht zu.Eine vereinbarte Transportart wählen oder die Vereinbarung erweitern lassen.
429RATE_LIMITEDZu viele Anfragen mit diesem Zugang — oder zu viele abgewiesene Anmeldungen von Ihrer Adresse.Nach Retry-After Sekunden wiederholen.
429SANDBOX_LIMITNur Sandbox: das Tageslimit an Testvorgängen ist erreicht.Am nächsten Tag weiter testen oder uns um ein höheres Limit bitten.
500INTERNAL_ERRORUnerwarteter Fehler auf unserer Seite — oder ein Dokument, dessen Prüfsumme nicht stimmt.Später wiederholen, mit demselben Idempotency-Key. Die requestId hilft uns beim Suchen.
503NUMBER_COLLISIONNur Sandbox: bei der Vergabe der Nummer kam ein gleichzeitiger Aufruf dazwischen.Unverändert erneut senden.

Der Token-Endpunkt POST /oauth/token antwortet im Format von OAuth 2.0; seine Codes stehen unter Anmeldung. Die bisherige Schnittstelle hat ihr eigenes Format und ihre eigenen Codes.

#Eingabefehler im Einzelnen

Bei INVALID_REQUEST nennt details.fields jedes beanstandete Feld — alle auf einmal, nicht nur das erste. field ist der Pfad im JSON, code die Art des Fehlers:

json
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "The request is invalid. See details.fields.",
    "requestId": "…",
    "details": {
      "fields": [
        { "field": "pickup.postalCode", "code": "invalid_type", "message": "Invalid input: expected string, received undefined" },
        { "field": "vehicle.vin", "code": "invalid_format", "message": "A VIN has 17 characters: letters and digits, no I, O or Q." },
        { "field": "pickup.zip", "code": "unrecognized_key", "message": "Unknown field." }
      ]
    }
  }
}

Häufige Werte von code: invalid_type (fehlt oder falscher Typ), invalid_value (Wert nicht erlaubt), invalid_format (etwa FIN oder Zeitpunkt), too_big / too_small (Länge oder Zahl außerhalb der Grenzen), unrecognized_key (Feld gibt es nicht — etwa ein Tippfehler oder ein Preisfeld).

Fachliche Absagen (422) haben dieselbe Form, nur heißen die Einträge details.errors und tragen je einen eigenen code (Beispiel).

#Grenzen

WasGrenzeAnmerkung
Anfragen je Zugang600 je Minutedarüber 429 mit Retry-After; RateLimit-* zeigt den Spielraum
Spitzen je Zugang50 je Sekundeauch innerhalb der Minutengrenze
Token-Abrufe30 je Minuteje client_id; ein Token gilt 1 h
Abgewiesene Anmeldungen je Adresse30 je Minuteschützt vor dem Raten von Schlüsseln
Webhook-Endpunkte10 je UmgebungEchtbetrieb und Sandbox getrennt
Antwortzeit Ihres Webhook-Endpunkts10 sdanach gilt der Versuch als gescheitert
Zeitstempel einer Webhook-Nachricht± 5 minältere Nachrichten verwerfen
Textfelder500 ZeichenexternalOrderId und Idempotency-Key: 200
Sandbox: Vorgänge500 je Tagje Mandant
Sandbox: automatischer Schrittalle 20 smit X-Sandbox-Mode: manual von Hand
Sandbox: Aufbewahrung30 Tagedanach werden Testvorgänge gelöscht

Die Köpfe RateLimit-Limit, RateLimit-Remaining und RateLimit-Reset jeder Antwort zeigen, wie viel Spielraum bleibt. Wird es knapp, verteilen Sie Aufrufe gleichmäßiger, statt sie gesammelt zu schicken — und nutzen Sie Webhooks, statt den Stand in kurzen Abständen abzufragen.

Hinweis

Braucht Ihre Anbindung dauerhaft mehr, sprechen Sie uns an.