Fehlercodes

HTTP-Statuscodes der Listings API, die SYxxxxx-Fehlercodes für Listings und Social sowie die drei Formate für Fehlerantworten, die die v4 API zurückgibt.

Die Listings API verwendet herkömmliche HTTP-Statuscodes, um das Ergebnis einer Anfrage anzugeben. Fehlercodes haben das Präfix SY und werden in der Fehlerzeichenfolge message im Format SYxxxxx: <human-readable reason> übermittelt.

HTTP-Statuscodes

HTTP status code summary

StatusBedeutungTypischer SY-CodeAusnahme im Python SDK
200 OKAnfrage erfolgreich. Prüfen Sie bei Schreibvorgängen auch den Antworttext (siehe unten).--
400 Bad RequestEine fehlerhaft aufgebaute Anfrage, ein nicht analysierbarer Filter, ein ungültiger Enum-Wert oder eine fehlerhaft aufgebaute ID.SY90006, SY90001ValidationError
401 UnauthorizedDer API-Schlüssel fehlt, ist fehlerhaft aufgebaut oder wurde widerrufen. Sie haben noch keinen Schlüssel? Holen Sie sich einen kostenlosen Sandbox-Tagespass, wenn dieser angeboten wird.SY90005AuthenticationError
402 Payment RequiredFür das Konto liegt eine unbezahlte Rechnung vor, daher ist der API-Zugriff ausgesetzt. Eine unbezahlte Rechnung, die ausschließlich Social betrifft, setzt nur den Zugriff auf die Social-Endpunkte aus. Siehe payment_required und social_payment_required.-APIError
403 ForbiddenDer Schlüssel ist gültig, berechtigt aber nicht zum Zugriff auf die Ressource.SY90003PermissionDeniedError
404 Not FoundDer Pfad oder eine über eine ID angesprochene Ressource existiert nicht.SY90002NotFoundError
422 Unprocessable EntityDie Anfrage war korrekt aufgebaut, aber ein Wert konnte nicht verarbeitet werden (zum Beispiel eine unbekannte oder mehrdeutige Kategorie).-ValidationError
429 Too Many RequestsSie haben das Ratenlimit Ihres Tarifs überschritten. Beachten Sie den Header Retry-After.-RateLimitError
5xxEin Serverfehler. Bei einem Lesevorgang ist eine Wiederholung mit zunehmenden Wartezeiten unbedenklich; beachten Sie vor der Wiederholung eines Schreibvorgangs den nachfolgenden Vorbehalt.SY90007InternalServerError

Drei Antwortformate

Die meisten Fehler enthalten ein errors-Array, entweder auf oberster Ebene oder verschachtelt im Ergebnis der Operation, wie die folgenden Abschnitte zeigen. Einige Fehler geben stattdessen ein einzelnes error-Objekt zurück: bei überschrittenen Ratenlimits (429) und bei einigen Fehlern auf Anfrageebene (400/500 mit einem code wie INTERNAL_SERVER_ERROR). Prüfen Sie auf beide Varianten: errors ist ein Array, error ist ein Objekt.

1. Anfrageebene: errors[] auf oberster Ebene

Fehler bei der Authentifizierung, der Autorisierung oder aufgrund fehlerhaft aufgebauter Anfragen brechen die Verarbeitung ab, bevor die Operation ausgeführt wird. Sie geben den passenden Status 4xx (siehe oben) mit dem Fehler auf der obersten Ebene der Antwort zurück.

JSON
{  "data": { "createLocation": null },  "errors": [{ "message": "SY90005: Invalid Token" }]}

2. Schreibvalidierung: verschachteltes data.<operation>.errors[]

Eine ansonsten korrekt aufgebaute Anfrage zum Erstellen, Aktualisieren oder Veröffentlichen gibt HTTP 200 zurück. Verstößt die Eingabe gegen eine Geschäftsregel, wird der Fehler verschachtelt unter den eigenen Nutzdaten der Operation in data.<operation>.errors gemeldet. Bei Erfolg ist dieses Array vorhanden und leer ("errors": []).

JSON
{  "data": {    "createLocation": {      "errors": [        { "message": "SY10126: City is Mandatory" },        { "message": "SY10010: state_iso" }      ],      "location": null    }  }}

3. Gateway-Ebene: ein einzelnes error-Objekt auf oberster Ebene

Überschrittene Ratenlimits und unerwartete Gateway-Fehler brechen die Verarbeitung vor der Übersetzung ab und geben ein error-Objekt mit einem code, einem message und einem correlation_id zurück. Den Antworttext für 429 finden Sie weiter unten unter rate_limited.

Lesen Sie bei einem Schreibvorgang immer data.<operation>.errors, auch bei einem 200 mit einem befüllten data.<operation>-Objekt: Ein Schreibvorgang kann teilweise fehlschlagen und dies hier melden.

Eine 402 Payment Required-Antwort hat keine error-Umhüllung: code, message, doc_url und, wenn eine Rechnung zu bezahlen ist, pay_url befinden sich auf oberster Ebene. Siehe weiter unten unter payment_required.

Die Wiederholung eines Schreibvorgangs bleibt nicht ohne Folgen

Die v4 API unterstützt Idempotency-Key nicht: Der Header wird ignoriert, und kein Endpunkt erkennt wiederholte Schreibvorgänge. Ein Aufruf zum Erstellen, Aktualisieren oder Veröffentlichen, bei dem eine Zeitüberschreitung auftritt oder der einen 5xx zurückgibt, kann auf dem Server dennoch bereits dauerhaft gespeichert worden sein, sodass eine blinde Wiederholung einen doppelten Standort, Beitrag oder eine doppelte Antwort auf eine Bewertung erzeugen kann.

Wiederholen Sie Lesevorgänge bei Bedarf mit zunehmenden Wartezeiten. Lesen Sie bei einem Schreibvorgang zuerst den gespeicherten Stand aus: Suchen Sie den Datensatz anhand eines Schlüssels, den Sie kontrollieren (storeId, ein Filialcode, die Antwortliste der Interaktion), und wiederholen Sie den Aufruf nur, wenn der Datensatz tatsächlich fehlt.

Häufige Codes

Common SY error codes

CodeMeldungHTTP-StatusBedeutung
SY90005Invalid Token401Der API-Schlüssel fehlt, ist fehlerhaft formatiert oder wurde widerrufen. Erstellen Sie im Dashboard einen neuen Schlüssel und senden Sie ihn als Authorization: API <your-key>.
SY90001Not authorized to access this resource401 / 403Der Schlüssel wurde für diese Ressource abgelehnt. Sowohl das Python-SDK als auch das Node-SDK lösen diesen Fehler als AuthenticationError aus.
SY90002Invalid Id404 / 400Eine Pfad- oder Argument-ID konnte nicht aufgelöst werden (häufig eine ungültige oder nicht Base64-kodierte Relay-ID).
SY10126City is Mandatory200 (Antworttext)Ein erforderliches Feld (city) wurde in der Eingabe ausgelassen.
SY10010state_iso200 (Antworttext)Der Wert für stateIso fehlt oder ist ungültig. Gültige Werte finden Sie beim Endpunkt für Länder und Bundesländer.

Validierungscodes im Bereich SY10xxx entsprechen einem bestimmten Eingabefeld; message benennt das Feld oder die Regel, deren Prüfung fehlgeschlagen ist. Authentifizierungs- und Autorisierungscodes im Bereich SY90xxx gelten auf Anfrageebene und werden auf der obersten Ebene mit dem passenden Status zurückgegeben.

Codes für verbundene Konten

Codes im Bereich SY810xx stammen von den Connected Accounts-Endpunkten, die einen Eintrag auf einer Plattform importieren oder verknüpfen. Sie werden bei einem HTTP 200 verschachtelt im Antworttext zurückgegeben (Antwortstruktur 2 oben), lesen Sie daher data.<operation>.errors auch dann, wenn der Status einen Erfolg anzeigt.

SY810xx connected-account and import codes

CodeBedeutungVorgehensweise
SY81019Für das dem Schlüssel zugeordnete Konto konnte kein Benutzer ermittelt werden.Wenden Sie sich an den Support: Das Konto hat keinen aktiven Hauptbenutzer.
SY81066connectedAccountId existiert nicht oder das Konto ist archiviert.Lesen Sie die ID erneut aus GET /connected-accounts aus.
SY81067connectedAccountListingId konnte nicht dekodiert oder aufgelöst werden.Rufen Sie den Wert erneut aus dem Feld id eines connected-account-listings-Datensatzes ab.
SY81068Dieser Eintrag ist bereits mit einem Standort verknüpft.Trennen Sie zuerst die Verknüpfung oder wählen Sie einen anderen Eintrag.
SY81069Die Zugangsdaten des verbundenen Kontos sind nicht mehr gültig.Verbinden Sie das Konto erneut über connect-google oder connect-facebook.
SY81070Der Eintrag gehört nicht zu dem von Ihnen angegebenen verbundenen Konto.Ordnen Sie jeden Eintrag dem Konto zu, aus dem er stammt. Eine häufige Ursache ist das Abrufen von Einträgen ohne connectedAccountId im Anfragetext, wodurch die Einträge eines anderen Kontos zurückgegeben werden.
SY81071Beim Erstellen des Standorts ist ein unerwarteter Fehler aufgetreten.Versuchen Sie es erneut; falls der Fehler weiterhin auftritt, wenden Sie sich an den Support.
SY81072Die Standorterstellung ist beim Aufbau oder Speichern fehlgeschlagen.Versuchen Sie es erneut; falls der Fehler weiterhin auftritt, wenden Sie sich an den Support.
SY81073Dieser Eintragstyp wird für den Import nicht unterstützt.Es können nur Google- und Facebook-Einträge importiert werden.
SY81074Google hat keine Daten für den Eintrag zurückgegeben.Prüfen Sie, ob der Eintrag noch existiert und weiterhin von diesem Konto verwaltet wird.
SY81075Das Anfragelimit der Google-API wurde überschritten.Versuchen Sie es später mit zunehmenden Wartezeiten erneut.
SY81076Das Abrufen des Eintrags von Google ist fehlgeschlagen.Versuchen Sie es erneut; prüfen Sie die Google-Berechtigungen des Kontos.
SY81077Das Land konnte anhand der Facebook-Seite nicht ermittelt werden.Ergänzen Sie die Adresse der Seite auf Facebook um ein Land und versuchen Sie es anschließend erneut.
SY81078Das Erstellen der Standortdaten anhand der Facebook-Seite ist fehlgeschlagen.Versuchen Sie es erneut; falls der Fehler weiterhin auftritt, wenden Sie sich an den Support.
SY81081Für den Eintrag ist keine primäre Kategorie festgelegt.Legen Sie eine primäre Kategorie für den Eintrag fest und versuchen Sie es anschließend erneut.
SY81082Das Land des Eintrags wird nicht unterstützt.Unterstützte Länder finden Sie beim Endpunkt für Länder und Bundesländer.
SY81083Der Google-Eintrag konnte nicht importiert werden.Wenden Sie sich unter Angabe des Zeitstempels an den Support.
SY81084Bei der Vorbereitung des Facebook-Imports ist ein interner Fehler aufgetreten.Versuchen Sie es erneut; falls der Fehler weiterhin auftritt, wenden Sie sich unter Angabe des Zeitstempels an den Support.
SY81085Die Facebook-Seite konnte nicht importiert werden.Wenden Sie sich unter Angabe des Zeitstempels an den Support.
SY81086Die Standorterstellung wurde aufgrund einer Geschäftsregel abgelehnt. Das verschachtelte Feld message enthält den zugrunde liegenden Code, beispielsweise SY10151, wenn das Konto keine freien Standortplätze mehr hat.Lesen Sie die verschachtelte Meldung; fügen Sie bei SY10151 eine Standort-Zusatzoption hinzu oder wechseln Sie zu einem höheren Tarif.
SY81087Die Anfrage zur Standorterstellung ist fehlgeschlagen.Versuchen Sie es erneut; falls der Fehler weiterhin auftritt, wenden Sie sich unter Angabe des Zeitstempels an den Support.
SY81088Die Standorterstellung ist aus einem unbekannten Grund fehlgeschlagen.Wenden Sie sich unter Angabe des Zeitstempels an den Support.
SY81089Ein interner Dienstaufruf hat einen Status zurückgegeben, der keinen Erfolg anzeigt. Kein Problem mit Ihrer Anfrage.Versuchen Sie es einmal erneut; falls der Fehler weiterhin auftritt, wenden Sie sich unter Angabe des Zeitstempels an den Support, damit wir den internen Aufruf nachvollziehen können.
SY81090Beim internen Aufruf zur Standorterstellung ist ein unerwarteter Fehler aufgetreten.Versuchen Sie es erneut; falls der Fehler weiterhin auftritt, wenden Sie sich unter Angabe des Zeitstempels an den Support.

Social-Codes

Codes im Bereich SY950xx stammen von den Social-Endpunkten: Marken, Verbindungen und Social-Media-Beiträge. Wie die Codes für verbundene Konten werden sie bei einem HTTP 200 verschachtelt im Antworttext zurückgegeben. Lesen Sie daher data.<operation>.error (und data.<operation>.errors bei den Routen für Massenoperationen), auch wenn der Status einen Erfolg anzeigt.

SY950xx Social codes

CodeBedeutungMaßnahme
SY95041Das Konto hat sein Markenlimit erreicht. Kann bei einem API-Tarif nicht auftreten: Dort ist die Anzahl der Marken unbegrenzt.Bei einem API-Tarif ist keine Maßnahme erforderlich. Falls dieser Code dennoch auftritt, melden Sie ihn: GET /social/limits sollte brands: null zurückgeben.
SY95042Das Konto hat sein Verbindungslimit für den aktuellen Abrechnungszeitraum erreicht.Die Obergrenze wird mit usage.connections aus GET /social/limits verglichen — der abrechenbaren Anzahl: aktuell verbundene Konten zuzüglich der in diesem Zeitraum freigegebenen Konten. Ein durch Trennen einer Verbindung oder durch Archivieren einer Marke freigegebener Verbindungsplatz bleibt bis zum Ende des Zeitraums belegt, sodass eine kürzlich getrennte Verbindung diesen Fehler nicht behebt. Verbinden Sie eines der freigegebenen Konten erneut mit der Marke, mit der es zuvor verbunden war (kostenlos, da derselbe Verbindungsplatz wiederverwendet wird), kaufen Sie ein weiteres Paket mit 5 Verbindungen (sofort verfügbar) oder warten Sie auf die Verlängerung, bei der usage.connectionsReleased Verbindungsplätze wieder verfügbar werden. Wenn Sie ein freigegebenes Konto mit einer anderen Marke verbinden, wird der Verbindungsplatz nicht wiederverwendet. Siehe Tarife und Zusatzpakete.
SY95043In diesem Konto gibt es keine Marke mit dieser ID, oder die Marke ist archiviert.Lesen Sie die ID erneut aus GET /social/brands aus. Marken-IDs sind einfache UUIDs, keine Base64-Relay-IDs.
SY95044Diese Plattform ist für dieses Konto nicht aktiviert.Der Social-Tarif des Kontos umfasst die Plattform nicht, mit der Sie eine Verbindung herstellen möchten. Wenden Sie sich an den Support oder wählen Sie eine Plattform, die für das Konto verfügbar ist.
SY95045Die Marke hat keinen verbundenen Kanal für diese Plattform.Leiten Sie den Benutzer über einen Verbindungslink für diese Plattform weiter oder entfernen Sie die Plattform aus platforms. Dieser Code tritt auch auf, wenn die Verbindung zum Kanal nach der Planung des Beitrags getrennt wurde.
SY95046Die Zeitplanung oder die Zeitzone ist ungültig.Senden Sie scheduledAt oder scheduleDate + scheduleTime, niemals beides. scheduledAt benötigt einen UTC-Offset; scheduleTime ist HH:MM. Zeitzonen sind IANA-Kennungen (tzCode).
SY95047In diesem Konto gibt es keinen Massenverarbeitungsauftrag mit dieser ID.Lesen Sie job.id erneut aus der Antwort zur Massenerstellung aus. Aufträge werden nicht unbegrenzt aufbewahrt.
SY95048Die Massenanfrage überschreitet das Zeilenlimit.Senden Sie höchstens 500 Zeilen pro Anfrage und teilen Sie die restlichen Zeilen auf weitere Stapel auf. Es wurde nichts erstellt.
SY95049Die Weiterleitungs-URL ist ungültig.redirectUrl und errorUrl bei einem Verbindungslink müssen absolute https-URLs sein, die Sie kontrollieren.
SY95050Die Validierung der Massenanfrage ist fehlgeschlagen; siehe die Fehler für die einzelnen Zeilen.Es wurde nichts erstellt. Lesen Sie job.results[]: Jede abgelehnte Zeile enthält ihren bei 0 beginnenden index, ihren clientReference und den Grund in errors[]. Korrigieren Sie diese Zeilen und senden Sie den gesamten Stapel erneut.
SY95051Die Marke erfüllt die Mindestbestandsdauer von 90 Tagen noch nicht.Eine Marke kann erst archiviert werden, wenn sie 90 Tage alt ist. Die Antwort enthält außerdem status: "TENURE_NOT_MET", und es wurde nichts geändert. Versuchen Sie es nach dem 90. Tag erneut; dann werden die Marke und ihre Verbindungen sofort archiviert — ihre Verbindungsplätze bleiben jedoch bis zum Ende des Abrechnungszeitraums belegt. Siehe die Regel zur Mindestbestandsdauer.
SY95052Der verbundene Kanal gehört nicht zu dieser Marke.Ordnen Sie jede Verbindung der Marke zu, für die sie erstellt wurde. Dieser Fehler tritt häufig auf, wenn ein Insights-Aufruf aus einem Beitrag einer Marke und der Kanal-ID einer anderen Marke zusammengestellt wird.

SY95042 und SY95044 sind Fehler aufgrund fehlender Tarifberechtigungen, keine Eingabefehler: Ein erneuter Versuch ohne Tarifänderung schlägt auf dieselbe Weise fehl. SY95045, SY95046, SY95049 und SY95052 sind Eingabefehler, die sich in der nächsten Anfrage beheben lassen.

Berechtigungscodes für Listings

Listings plan codes

CodeBedeutungMaßnahme
SY10150Das Konto hat sein Standortlimit erreicht.Archivieren Sie einen Standort, kaufen Sie ein Add-on für einen zusätzlichen Standort oder wechseln Sie zu einem höheren Tarif. Siehe Tarife und Add-ons.
SY10151Die im Tarif enthaltenen Standortplätze des Kontos sind aufgebraucht. Bei einem Sandbox-Tagespass sind beide enthaltenen Standorte in Gebrauch.Es gelten dieselben Abhilfemaßnahmen wie bei SY10150. Aktualisieren Sie bei einem Tagespass einen bestehenden Standort oder wählen Sie einen kostenpflichtigen Tarif. Dieser Fehler tritt auch verschachtelt innerhalb von SY81086 auf, wenn ein Standort aus einem Eintrag eines verbundenen Kontos erstellt wird.
SY10152Der Standort ist noch nicht lange genug aktiv, um archiviert werden zu können.Standorte müssen für die Mindestlaufzeit des Kontos aktiv sein, standardmäßig 90 Tage, bevor POST /locations/archive sie akzeptiert. Warten Sie, bis die Mindestlaufzeit abgelaufen ist.
SY10155Das Konto hat keinen Listings-Tarif, daher können keine Standorte erstellt werden.Der API-Schlüssel gehört zu einem Konto ohne Listings-Abonnement, beispielsweise einem reinen Social-Konto. Standorte sind Teil des Produkts Listings; schließen Sie dafür ein Abonnement ab, bevor Sie POST /locations aufrufen.

rate_limited

429 Too Many Requests: Das Konto hat das Anfragelimit seines Tarifs überschritten. Der Antworttext ist die standardmäßige Fehlerantwort mit einem Hinweis in retry_after_seconds, einem Wert in correlation_id, den Sie bei Supportanfragen angeben sollten, und einem Verweis in doc_url, der auf diesen Abschnitt zurückführt:

JSON
{  "error": {    "code": "RATE_LIMITED",    "message": "Too many requests. Slow down.",    "retry_after_seconds": 30,    "correlation_id": "9f2c1e64-2b1a-4b0e-9f1a-2c7d5e8a1b3c",    "doc_url": "https://listingsapi.com/docs/error-codes#rate_limited"  }}

Warten Sie die in retry_after_seconds angegebene Zeit ab (oder die im Header Retry-After angegebene Zeit, falls dieser vorhanden ist) und wiederholen Sie dann die Anfrage mit exponentiellem Backoff. Die Limits pro Tarif und eine Referenzimplementierung für Backoff finden Sie unter Anfragelimits.

payment_required

402: Die letzte Zahlung für dieses Konto war nicht erfolgreich, daher sind alle /api/v4-Endpunkte ausgesetzt. Der Antworttext enthält pay_url, die Stripe-Seite für die unbezahlte Rechnung, sofern eine solche Seite verfügbar ist, und der Antwortheader X-Error-Code enthält denselben Wert für code. Sie können weiterhin die Abrechnungsseite im Dashboard öffnen, um die Zahlung vorzunehmen.

JSON
{  "code": "payment_required",  "message": "This account has an unpaid invoice, so API access is paused. Pay the invoice to restore access.",  "pay_url": "https://invoice.stripe.com/i/acct_123/test_abc",  "doc_url": "https://listingsapi.com/docs/error-codes#payment_required"}

Der Zugriff wird innerhalb einer Minute wiederhergestellt, nachdem die letzte offene Rechnung bezahlt wurde. Ist die Rechnung 3 Tage nach dem ersten fehlgeschlagenen Zahlungsversuch noch unbezahlt, wird das Listings-Abonnement gekündigt und die Standorte des Kontos werden archiviert. Hat das Konto auch ein aktives Social-Abonnement, behält es den Social-Zugriff; andernfalls wird das Konto geschlossen und seine API-Schlüssel funktionieren nicht mehr.

social_payment_required

402: Die letzte Zahlung für das Social-Abonnement war nicht erfolgreich, daher sind die Social-Endpunkte (/api/v4/social/*) ausgesetzt. Die Listings-Endpunkte funktionieren weiterhin. Der Antworttext enthält dieselben Felder wie payment_required, mit "code": "social_payment_required". Ist die Rechnung 3 Tage nach dem ersten fehlgeschlagenen Zahlungsversuch noch unbezahlt, wird das Social-Abonnement gekündigt und die Marken des Kontos werden archiviert. Ein Konto ohne Listings-Abonnement wird geschlossen und seine API-Schlüssel funktionieren nicht mehr.

Fehler der Steuerungsebene im Entwicklerportal

Die Endpunkte zur Konto- und Schlüsselverwaltung im Entwicklerportal (die eigenen API-Routen des Dashboards) geben eine einheitliche, strukturierte Fehlerantwort zurück, die sich von den oben beschriebenen REST-errors[]-Formaten unterscheidet. Jedes code enthält correlation_id sowie einen Verweis in doc_url, der auf den entsprechenden Abschnitt hier zurückführt.

JSON
{  "error": {    "code": "AUTH_INVALID_KEY",    "message": "Session is invalid or expired.",    "correlation_id": "9f2c1e64-2b1a-4b0e-9f1a-2c7d5e8a1b3c",    "doc_url": "https://listingsapi.com/docs/error-codes#auth_invalid_key"  }}

auth_missing_key

401: Es wurden keine Zugangsdaten angegeben. Melden Sie sich erneut an oder senden Sie Ihren Schlüssel als Authorization: API <your-key>.

auth_invalid_key

401: Die Sitzung oder der Schlüssel ist ungültig oder abgelaufen. Authentifizieren Sie sich erneut oder stellen Sie im Dashboard einen neuen Schlüssel aus.

auth_insufficient_scope

403: Die Zugangsdaten sind gültig, berechtigen jedoch nicht zu dieser Aktion. Ein Schlüssel mit Leseberechtigung kann keine Schreibendpunkte aufrufen; stellen Sie einen Schlüssel mit Schreibberechtigung aus, falls Sie einen benötigen.

not_found

404: Die angeforderte Ressource oder eine über ihre ID adressierte Ressource existiert nicht.

conflict

409: Die Anfrage steht im Konflikt mit dem aktuellen Zustand der Ressource (beispielsweise beim Widerrufen eines bereits widerrufenen Schlüssels).

validation_failed

422: Der Anfragetext hat die Validierung nicht bestanden. Die Felder field und details der Antwort benennen die fehlerhafte Eingabe.

internal_error

500: Ein unerwarteter serverseitiger Fehler. Wiederholen Sie einen Lesevorgang mit exponentiellem Backoff; lesen Sie bei einem Schreibvorgang zunächst den Datensatz erneut aus (siehe Das Wiederholen eines Schreibvorgangs ist nicht kostenlos). Geben Sie correlation_id an, wenn Sie den Support kontaktieren.

dependency_unavailable

503: Ein Dienst, von dem die API abhängt, ist vorübergehend nicht verfügbar. Wiederholen Sie die Anfrage mit Backoff.

Informationen zu 429 finden Sie oben unter rate_limited.

Fehler im Code behandeln

Prüfen Sie zuerst den HTTP-Status; durchsuchen Sie dann bei Schreibvorgängen den Antworttext nach einem verschachtelten errors-Array:

Python
from listingsapi import APIError, ListingsAPI client = ListingsAPI(api_key=os.environ["LISTINGSAPI_KEY"]) try:    location = client.locations.create(input=payload)except APIError as e:    # Raised for a non-2xx status (AuthenticationError, ValidationError, and    # so on) and for an error payload returned inside a 200 body.    raise RuntimeError(f"Listings API error: {e}") from e

Bei direkter Verwendung der HTTP-API erfolgen dieselben beiden Prüfungen explizit: zuerst die Prüfung des Statuscodes und dann die der Antwortdaten:

Python
resp = requests.post(    "https://listingsapi.com/api/v4/locations",    headers={"Authorization": f"API {os.environ['LISTINGSAPI_KEY']}"},    json=payload,    timeout=30,)resp.raise_for_status()body = resp.json() op = (body.get("data") or {}).get("createLocation") or {}if op.get("errors"):    messages = [e["message"] for e in op["errors"]]    raise RuntimeError(f"Listings API error: {messages}")

Das Python SDK übernimmt beides für Sie: Es ordnet jedem HTTP-Status eine typisierte Ausnahme zu und löst auch bei Fehlerdaten, die innerhalb eines 200-Antworttexts zurückgegeben werden, eine Ausnahme aus.