Grunnatriði

Villur

Villur nota raunverulega HTTP stöðukóða og eitt JSON umslag með villukóða sem breytist ekki. Greindu villur eftir kóðanum, aldrei eftir skilaboðunum.

Umslagið

Öll villusvör með JSON meginmáli líta svona út:

Meginmál villu
{
  "error": {
    "code": "quote_expired",
    "message": "The quote has expired; ask for a new one.",
    "request_id": "req_01JB8X2Q4M7Z3V9K5T1N6R0P2W"
  }
}
  • code breytist ekki og er ætlaður forritum. Greindu villur eftir honum.
  • message útskýrir villuna fyrir fólki. Textinn getur breyst hvenær sem er, svo ekki þátta hann.
  • request_id er líka í MK-Request-Id haus hvers svars, hvort sem beiðnin tókst eða ekki. Skráðu það í annála, og gefðu það upp þegar þú hefur samband við okkur.

2xx staða þýðir að beiðnin tókst; öll önnur svör bera þetta umslag. GET /v1/giftcards/{id}/pdf svarar með application/pdf þegar það tekst og með JSON við villur.

Villukóðar

StaðaKóðiMerkingHvað á að gera
400invalid_requestBeiðnin er gölluð: ógilt JSON, óþekktur eða ógildur reitur, eða haus vantar.Lagaðu beiðnina. Skilaboðin nefna reitinn.
401invalid_signatureMK-* hausana vantar eða þeir eru gallaðir, auðkenni lykilsins er óþekkt eða undirskriftin passar ekki.Athugaðu auðkenni lykilsins og staðlaða strenginn; undirritaðu nákvæmlega þau bæti sem þú sendir.
401key_expiredGildistími lykilsins er liðinn.Búðu til nýjan lykil í vefappinu.
401key_revokedLykillinn var afturkallaður.Búðu til nýjan lykil í vefappinu.
401timestamp_out_of_rangeMK-Timestamp munar meira en 30 sekúndum frá klukku netþjónsins.Samstilltu klukkuna (server_time í GET /v1/status) og undirritaðu aftur.
401nonce_reusedÞessi lykill hefur þegar notað þetta MK-Nonce.Undirritaðu aftur með nýju, slembnu nonce.
403insufficient_scopeLykilinn vantar heimildina sem þessi endapunktur þarf.Notaðu lykil með heimildinni. Ekki er hægt að bæta heimildum við lykil sem er til.
403ip_not_allowedBeiðnin kom frá IP tölu sem er ekki meðal leyfðra IP talna lykilsins.Sendu frá leyfðri IP tölu, eða búðu til lykil með öðrum leyfðum IP tölum.
403account_restrictedAðgangurinn getur ekki notað API-ið eins og er (til dæmis læstur, óvirkur eða nýskráningu ólokið).Athugaðu aðganginn í vefappinu, eða hafðu samband við okkur.
403api_access_disabledSlökkt er á aðgangi að API-inu.Bíddu þar til opnað verður fyrir API aðgang; GET /v1/status sýnir það.
403forbiddenSlökkt er á þessari aðgerð í API-inu eins og er.Athugaðu GET /v1/status; hafðu samband ef þú þarft að fá opnað fyrir hana.
404not_foundÞetta fannst ekki.Athugaðu auðkennið eða tákn rafmyntarinnar.
405method_not_allowedSlóðin er til, en ekki með þessari aðferð.Notaðu aðferðina sem API lýsingin gefur upp fyrir þessa slóð.
409idempotency_conflictÞessi Idempotency-Key var notaður með öðru meginmáli.Notaðu nýjan Idempotency-Key fyrir aðra beiðni.
409idempotency_in_progressBeiðni með þessum Idempotency-Key er enn í vinnslu.Bíddu aðeins og reyndu svo aftur með sama Idempotency-Key.
409quote_already_usedVerðtilboðið hefur þegar verið samþykkt.Flettu viðskiptunum upp: GET /v1/quotes/{id} gefur trade_id þeirra.
413payload_too_largeMeginmál beiðnarinnar er stærra en 8 KB.Hafðu meginmál beiðna undir 8 KB.
415unsupported_media_typeMeginmál beiðna verður að vera application/json.Sendu Content-Type: application/json.
422insufficient_fundsLaus innistæða dugar ekki fyrir viðskiptunum, gjafabréfinu eða úttektinni.Leggðu inn, eða biddu um lægri upphæð.
422amount_below_minimumUpphæðin er undir lágmarki.Hækkaðu upphæðina; GET /v1/assets gefur upp lágmarkið.
422amount_above_maximumUpphæðin er yfir hámarki.Lækkaðu upphæðina, eða dreifðu henni yfir lengri tíma.
422limit_exceededFarið yrði yfir dagleg mörk eða 30 daga mörk.Bíddu þar til dagurinn eða 30 daga tímabilið líður; GET /v1/limits sýnir notkunina.
422key_limit_reachedAðgangurinn er þegar með eins marga API lykla og hann má (5): afturkallaðu einn í Stillingum → API fyrst.Afturkallaðu lykil sem þú notar ekki lengur í Stillingum → API, og búðu svo til nýjan tengikóða.
422quote_expiredVerðtilboðið er útrunnið.Búðu til nýtt verðtilboð og samþykktu það innan gildistímans.
422price_movedMarkaðsverðið hreyfðist of langt frá verðinu í tilboðinu.Búðu til nýtt verðtilboð.
422asset_not_tradableEkki er hægt að eiga viðskipti með rafmyntina eins og er.Athugaðu buy_enabled og sell_enabled í GET /v1/assets.
422asset_not_withdrawableEkki er hægt að taka rafmyntina út á þessu neti eins og er.Athugaðu myntina og netið, eða taktu út í appinu.
429rate_limitedOf margar beiðnir. Bíddu í Retry-After sekúndur.Bíddu í Retry-After sekúndur og hægðu svo á.
429too_many_concurrent_requestsOf margar beiðnir í vinnslu í einu fyrir þennan lykil eða aðgang.Bíddu eftir að beiðni í vinnslu klárist; Retry-After er 1.
429key_suspendedLykillinn er stöðvaður, til dæmis eftir að hafa farið ítrekað yfir beiðnatakmörk.Stöðvaðu forritið og lagaðu lykkjuna. Stöðvunin fellur úr gildi eftir 15 mínútur.
500internal_errorEitthvað fór úrskeiðis hjá okkur.Reyndu aftur síðar. Ef villan heldur áfram, hafðu samband og gefðu upp request_id.
502bad_gatewayUndirliggjandi þjónusta svaraði á óvæntan hátt.Reyndu aftur með vaxandi bið; POST aðeins með sama Idempotency-Key.
503trading_haltedViðskipti eru í hléi: slökkt hefur verið á þeim, eða gert hlé á viðskiptum með rafmyntina í stutta stund eftir snögga verðhreyfingu.Reyndu aftur síðar; GET /v1/status sýnir trading_enabled.
503maintenanceVegna viðhalds er aðeins hægt að lesa úr API-inu.Lestur virkar áfram. Reyndu skrif aftur síðar.
503overloadedÞjónustan er undir of miklu álagi. Reyndu aftur eftir Retry-After sekúndur.Bíddu í Retry-After sekúndur og reyndu svo aftur.
503service_unavailableÞjónustan er tímabundið ekki tiltæk.Reyndu aftur með vaxandi bið; POST aðeins með sama Idempotency-Key.
504gateway_timeoutUndirliggjandi þjónusta svaraði ekki í tæka tíð. POST beiðni gæti samt klárast; reyndu aftur með sama Idempotency-Key.Beiðnin gæti hafa farið í gegn. Reyndu aftur með sama Idempotency-Key.

Síða hvers endapunkts í API lýsingunni telur upp kóðana sem hann getur skilað.

Að bregðast við villum

SDK-in breyta hverri villu í ApiError með status, code, message og requestId (request_id í Python), auk retryAfter (retry_after) þegar svarið hafði Retry-After haus. Undirklasar flokka stöðukóðana:

KlasiStaða
AuthenticationError401
PermissionError403
NotFoundError404
ConflictError409
ValidationError400, 422
RateLimitError429
ServiceError5xx
ConnectionErrorekkert svar (netvilla eða tímamörk)
import { ApiError, Myntkaup, RateLimitError } from "@myntkaup/api";

const client = new Myntkaup();

try {
  const trade = await client.buy({ asset: "BTC", quoteAmount: "25.00" });
  console.log(trade.status);
} catch (error) {
  if (error instanceof RateLimitError) {
    console.warn(`Slow down; retry in ${error.retryAfter} s (${error.requestId})`);
  } else if (error instanceof ApiError && ["price_moved", "quote_expired"].includes(error.code)) {
    // The market moved: decide whether to try again with a new quote.
  } else {
    throw error;
  }
}
import myntkaup
from myntkaup import Myntkaup

client = Myntkaup()

try:
    trade = client.buy(asset="BTC", quote_amount="25.00")
    print(trade["status"])
except myntkaup.RateLimitError as error:
    print(f"Slow down; retry in {error.retry_after} s ({error.request_id})")
except myntkaup.ApiError as error:
    if error.code not in ("price_moved", "quote_expired"):
        raise
    # The market moved: decide whether to try again with a new quote.

Hvaða villur á að reyna aftur

  • Reyndu aftur eftir bið: 429 rate_limited, 429 too_many_concurrent_requests, 503 overloaded og 503 service_unavailable (virtu Retry-After), og 502 og 504.
  • Reyndu POST beiðni aðeins aftur með sama Idempotency-Key. Eftir 502, 504 eða rofna tengingu gæti beiðnin hafa farið í gegn; sami lykill skilar þá fyrri niðurstöðunni í stað þess að framkvæma beiðnina tvisvar. Sjá síðuna Örugg endurtekning.
  • Bíddu, og reyndu svo aftur með sama lykli: 409 idempotency_in_progress.
  • Ekki reyna aftur óbreytt: allar aðrar 4xx villur. Breyttu fyrst beiðninni (eða lyklinum, eða verðtilboðinu).
  • Reyndu aldrei aftur: 429 key_suspended. Stöðvaðu forritið og lagaðu það.

SDK-in sjá um fyrstu tvö tilvikin fyrir þig: GET beiðni er reynd aftur við 429 (nema key_suspended), 502, 503, 504 og netvillur, og POST beiðni aðeins þegar hún ber Idempotency-Key. Sjálfgefið reyna þau mest tvisvar aftur, með veldisvaxandi bið og slembitöf, og virða Retry-After.