SDK og CLI

SDK fyrir Node.js

@myntkaup/api: biðlari með tegundum fyrir Node.js 18 og nýrra, án keyrsluháðra pakka. Hann undirritar beiðnir, reynir aftur á öruggan hátt og skilar JSON svörum API-sins óbreyttum.

Uppsetning

Skel
npm install @myntkaup/api
  • ESM, með TypeScript tegundum.
  • Engir keyrsluháðir pakkar: undirritun notar node:crypto og beiðnir nota innbyggða fetch.
  • Aðeins á netþjóni. Einkalykill á aldrei heima í vafra.

Stillingar

TypeScript
import { Myntkaup } from "@myntkaup/api";

// Reads MYNTKAUP_API_KEY_ID and MYNTKAUP_API_PRIVATE_KEY from the environment…
const client = new Myntkaup();

// …or give everything explicitly.
const explicit = new Myntkaup({
  keyId: process.env.MYNTKAUP_API_KEY_ID,
  privateKey: process.env.MYNTKAUP_API_PRIVATE_KEY,
  timeoutMs: 30_000,
  maxRetries: 2,
});
ValkosturSjálfgefiðMerking
keyIdMYNTKAUP_API_KEY_IDAuðkenni lykilsins, mk_live_… eða mk_test_….
privateKeyMYNTKAUP_API_PRIVATE_KEYEinkalykillinn, mk_sk_….
baseUrlhttps://public-api.myntkaup.is; prófunarumhverfið fyrir mk_test_ lykilHvert beiðnir fara.
timeoutMs30000Fyrir hverja tilraun, í millisekúndum.
maxRetries2Endurtekningar eftir fyrstu tilraun.
fetchinnbyggða fetchÞitt eigið fetch, fyrir prófanir eða milliþjóna.

Föll

FallEndapunktur
client.status()GET /v1/status (óundirritað)
client.me()GET /v1/me
client.revokeKey()POST /v1/me/key/revoke
client.claimKeyPairing({ code, publicKey, client })POST /v1/key-pairings/claim (án undirskriftar)
client.assets.list()GET /v1/assets
client.prices.list()GET /v1/prices
client.prices.get("BTC")GET /v1/prices/{asset}
client.balances.list()GET /v1/balances
client.limits.get()GET /v1/limits
client.quotes.create({ asset, side, quoteAmount })POST /v1/quotes
client.quotes.get(id)GET /v1/quotes/{id}
client.trades.create({ quoteId, idempotencyKey? })POST /v1/trades
client.trades.get(id)GET /v1/trades/{id}
client.trades.list(params?)GET /v1/trades, ein síða
client.trades.listAll(params?)allar síður, sem ósamstilltur ítrari
client.transactions.list / get / listAllGET /v1/transactions[/{id}]
client.giftcards.create({ asset, amount, recipientName?, idempotencyKey? })POST /v1/giftcards
client.giftcards.list / get / listAllGET /v1/giftcards[/{id}]
client.giftcards.pdf(id)GET /v1/giftcards/{id}/pdf, sem Uint8Array

quotes.create tekur quoteAmount eða baseAmount, nákvæmlega annað. Síða hvers endapunkts í API lýsingunni hefur dæmi.

Reitir og upphæðir

  • Reitir í beiðnum eru í camelCase og sendir á snake_case sniði API-sins: quoteAmount verður quote_amount.
  • Svör eru skiluð eins og API-ið sendir þau, í snake_case, svo JSON dæmin í þessari skjölun gilda óbreytt: quote.base_amount, trade.filled_at.
  • Upphæðir eru tugatölur á strengjaformi, í báðar áttir. Sendu aldrei tölur.

Hjálparföll

client.buy() og client.sell() búa til verðtilboð og samþykkja það. Ef viðskiptin koma til baka sem pending fylgjast þau með þeim í allt að 30 sekúndur, með vaxandi bið, og skila viðskiptunum.

TypeScript
const trade = await client.buy({ asset: "BTC", quoteAmount: "100.00" });
if (trade.status !== "filled") console.warn("Not filled yet:", trade.id, trade.status);

Endurtekningar og Idempotency-Key

  • Beiðnir eru reyndar aftur mest maxRetries sinnum, með veldisvaxandi bið og slembitöf, og Retry-After er virt.
  • GET beiðni er reynd aftur við 429, 502, 503, 504 og netvillur. POST beiðni er aðeins reynd aftur þegar hún hefur Idempotency-Key.
  • 401, 403, 409, 422 og 429 key_suspended eru aldrei reyndar aftur.
  • trades.create og giftcards.create senda slembinn Idempotency-Key nema þú gefir upp idempotencyKey; quotes.create sendir aðeins lykil ef þú gefur hann upp. Sjá síðuna Örugg endurtekning.

Villur

Hvert svar utan 2xx kastar ApiError með status, code, message, requestId, og retryAfter (sekúndur) ásamt beiðnatakmarkahausunum þegar þeir eru til staðar. Netvillur kasta ConnectionError.

KlasiStaða
AuthenticationError401
PermissionError403
NotFoundError404
ConflictError409
ValidationError400, 422
RateLimitError429
ServiceError5xx
TypeScript
import { ApiError, NotFoundError } from "@myntkaup/api";

try {
  await client.trades.get("tr_01JB8X2Q4M7Z3V9K5T1N6R0P2W");
} catch (error) {
  if (error instanceof NotFoundError) console.log("No such trade");
  else if (error instanceof ApiError) console.error(error.code, error.requestId);
  else throw error;
}

Aðeins undirritun

Til að nota annan HTTP biðlara flytur pakkinn út undirritunarfallið sitt. Það skilar MK-* hausunum fjórum:

TypeScript
import { signRequest } from "@myntkaup/api";

const body = JSON.stringify({ asset: "BTC", side: "buy", quote_amount: "100.00" });
const headers = signRequest({
  keyId: process.env.MYNTKAUP_API_KEY_ID!,
  privateKey: process.env.MYNTKAUP_API_PRIVATE_KEY!,
  method: "POST",
  pathAndQuery: "/v1/quotes",
  body,
});

Prófanir

Sendu inn þitt eigið fetch til að prófa kóða sem notar biðlarann án nettengingar:

TypeScript
const client = new Myntkaup({
  keyId: "mk_test_0123456789abcdefghij",
  privateKey: "mk_sk_nWGxne_9WmC6hEr0kuwsxERJxWl7MmkZcDusAxyuf2A", // RFC 8032 test key, public
  fetch: async () =>
    Response.json({
      status: "ok",
      read_only: false,
      trading_enabled: true,
      giftcards_enabled: true,
      server_time: "2026-11-03T10:15:10Z",
    }),
});