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
npm install @myntkaup/api- ESM, með TypeScript tegundum.
- Engir keyrsluháðir pakkar: undirritun notar
node:cryptoog beiðnir nota innbyggðafetch. - Aðeins á netþjóni. Einkalykill á aldrei heima í vafra.
Stillingar
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,
});| Valkostur | Sjálfgefið | Merking |
|---|---|---|
keyId | MYNTKAUP_API_KEY_ID | Auðkenni lykilsins, mk_live_… eða mk_test_…. |
privateKey | MYNTKAUP_API_PRIVATE_KEY | Einkalykillinn, mk_sk_…. |
baseUrl | https://public-api.myntkaup.is; prófunarumhverfið fyrir mk_test_ lykil | Hvert beiðnir fara. |
timeoutMs | 30000 | Fyrir hverja tilraun, í millisekúndum. |
maxRetries | 2 | Endurtekningar eftir fyrstu tilraun. |
fetch | innbyggða fetch | Þitt eigið fetch, fyrir prófanir eða milliþjóna. |
Föll
| Fall | Endapunktur |
|---|---|
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 / listAll | GET /v1/transactions[/{id}] |
client.giftcards.create({ asset, amount, recipientName?, idempotencyKey? }) | POST /v1/giftcards |
client.giftcards.list / get / listAll | GET /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:
quoteAmountverðurquote_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.
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
maxRetriessinnum, með veldisvaxandi bið og slembitöf, ogRetry-Afterer virt. GETbeiðni er reynd aftur við429,502,503,504og netvillur.POSTbeiðni er aðeins reynd aftur þegar hún hefurIdempotency-Key.401,403,409,422og429 key_suspendederu aldrei reyndar aftur.trades.createoggiftcards.createsenda slembinnIdempotency-Keynema þú gefir uppidempotencyKey;quotes.createsendir 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.
| Klasi | Staða |
|---|---|
AuthenticationError | 401 |
PermissionError | 403 |
NotFoundError | 404 |
ConflictError | 409 |
ValidationError | 400, 422 |
RateLimitError | 429 |
ServiceError | 5xx |
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:
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:
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",
}),
});