Nooit opnieuw proberen
invalid_request, invalid_amount, unknown_asset_or_rail, asset_not_offered, unauthorized. Het verzoek is fout: het ongewijzigd opnieuw proberen geeft hetzelfde resultaat. Los het op, of toon de reden.
Developers
Elke fout bevat een stabiele, machineleesbare code en een coherente HTTP-status. De code is waar uw integratie op moet vertakken: de tekst kan evolueren, de code niet.
De huidige vorm is bewust minimaal. Hij is stabiel, en dat is wat telt: een code, en niets dat een intern detail lekt.
{ "error": "rate_stale" }{
"error": "rail_not_open",
"reason": {
"fr": "La retenue TDS de 1 % et l’enregistrement FIU-IND exigent une entite locale…",
"en": "The 1% TDS withholding and FIU-IND registration require a local entity…"
}
}Sommige fouten bevatten een tweetalig redenobject, bedoeld om ongewijzigd aan de gebruiker te tonen. Een gesloten rail is er zo een: de reden verklaart een genoemde regelgevende beperking, geen storing, en het tonen ervan bespaart een ondersteuningsverzoek. De versiebeheerde API zal een verzoek-id aan deze envelop toevoegen, zodat u ons op een precieze regel in onze logboeken kunt wijzen.
Deze codes worden vandaag geretourneerd door het quote-eindpunt.
| code | HTTP | Wat het betekent | Wat te doen |
|---|---|---|---|
invalid_request | 400 | De aanvraagbody faalt bij schemavalidatie: ontbrekend veld, verkeerd type, waarde buiten de toegestane grenzen. | Controleer dat het bedrag een string is en geen getal, en dat de richting exact “sell” of “receive” is. |
invalid_amount | 400 | Het bedrag kan niet worden geparseerd of bevat meer decimalen dan het activum of de valuta accepteert. | Afkappen tot de precisie van de eenheid: 6 decimalen voor USDT, 8 voor BTC, 2 voor de euro, 0 voor de CFA-frank. |
unknown_asset_or_rail | 404 | De identificatie van het activum of de route bestaat niet in de catalogus. | Identificaties zijn stabiel en worden nooit opnieuw toegewezen. Herlaad de catalogus in plaats van ze te raden. |
rail_not_open | 409 | De route bestaat maar is niet open. Het antwoord bevat de exacte reden, in beide talen. | Toon de reden zoals die is: het verklaart een wettelijke beperking, geen storing. Bied een open route aan in hetzelfde land. |
asset_not_offered | 409 | Het activum staat in de catalogus maar wordt niet aangeboden — het geval voor activa met verbeterde anonimiteit. | Bied het niet aan in uw selector. De catalogus retourneert het met zijn reden zodat u het kunt uitleggen. |
rate_stale | 503 | De laatst bekende prijs overschrijdt de maximaal toegestane leeftijd. De engine weigert te offerten in plaats van een verouderde prijs als vaste prijs te serveren. | Probeer het opnieuw na een paar seconden. Cache de laatste succesvolle offerte niet om het gat te vullen: dat zou precies de fout zijn die deze code voorkomt. |
rate_unavailable | 503 | Er is geen prijs beschikbaar voor dit activum / valutapaar. | Schakel het paar uit in uw interface in plaats van een schatting te tonen. Een getoonde schatting wordt een verwachting. |
quote_failed | 500 | Onverwachte fout tijdens de berekening. Er wordt geen offerte geretourneerd. | Probeer het één keer opnieuw; als de fout aanhoudt, schrijf ons met de exacte tijdstempel van de aanroep. |
Deze codes begeleiden eindpunten die nog niet open zijn. Ze zijn gepubliceerd zodat uw foutafhandeling in één keer wordt geschreven.
| code | HTTP | Wat het betekent | Wat te doen |
|---|---|---|---|
unauthorized | 401 | Sleutel ontbreekt, ingetrokken of gebruikt in de verkeerde omgeving. | Een sk_test_-sleutel werkt niet in productie, en het omgekeerde ook niet: dat is opzettelijk. |
idempotency_conflict | 409 | Dezelfde idempotentiesleutel is al gebruikt met een andere aanvraagtekst. | Een sleutel hoort bij één intentie. Als de inhoud verandert, verandert de sleutel; anders is niet te achterhalen welke van de twee orders opnieuw moet worden afgespeeld. |
quote_expired | 409 | Het citaat heeft zijn vergrendelingsvenster overschreden. | Vraag opnieuw een citaat aan en laat het nieuwe bedrag accepteren. We herprijzen nooit stilzwijgend tegen de klant. |
beneficiary_rejected | 422 | De begunstigdegegevens doorstaan de validatie van het betaalnetwerk niet: ongeldige checksum, niet-conform formaat of een naam die niet overeenkomt met de geverifieerde identiteit. | Het antwoord noemt het betreffende veld. De naam van de begunstigde moet de geverifieerde identiteit zijn: uitbetaling aan derden is niet mogelijk. |
country_not_served | 451 | Het bestemmingsland wordt niet bediend: sancties, beperkende maatregelen of het ontbreken van een lokaal kader. | De code 451 is bewust gekozen boven een 404: wanneer we weigeren, zeggen we dat het een weigering is en waarom. |
rate_limited | 429 | Te veel aanroepen binnen het glijdende venster. | Eer de Retry-After-header. Citaten zijn goedkoop om in de wachtrij te zetten, duur om te hameren. |
not_found | 404 | De resource bestaat niet of behoort niet tot uw sleutel. | Beide gevallen retourneren dezelfde code: een antwoord dat ze onderscheidde, zou iedereen in staat stellen referenties van anderen op te sommen. |
Een bedrag buiten de grenzen van de rail retourneert een geldige quote, met een limitError-object. Het is geen fout: het is informatie die uw interface moet weergeven.
"limitError": { "code": "below_min", "limit": "20.00" }Als u dit geval als een HTTP-fout behandelt, ontneemt u uzelf het berekende bedrag, en dus de mogelijkheid om de gebruiker te vertellen: “u zit 16,53 EUR onder het minimum voor deze uitbetalingsmethode”. De grens geldt voor het nettobedrag, het bedrag dat de begunstigde ontvangt.
Drie families, drie gedragingen. Het herhalen van een validatiefout in een lus vult alleen uw logboeken.
invalid_request, invalid_amount, unknown_asset_or_rail, asset_not_offered, unauthorized. Het verzoek is fout: het ongewijzigd opnieuw proberen geeft hetzelfde resultaat. Los het op, of toon de reden.
rate_stale, rate_unavailable, quote_failed, en elke snelheidsbeperking. Wacht een paar seconden, met een groeiende pauze tussen pogingen. Vul de pauze niet met een gecachte quote.
rail_not_open, quote_expired, beneficiary_rejected, country_not_served. De situatie vereist een menselijke keuze: bied een andere rail, een nieuwe quote, gecorrigeerde gegevens aan.