SDK og CLI

SDK fyrir Python

myntkaup: biðlari fyrir Python 3.10 og nýrra, samstilltur eða ósamstilltur, byggður á httpx og cryptography. Hann undirritar beiðnir, reynir aftur á öruggan hátt og skilar JSON svörum API-sins óbreyttum.

Uppsetning

Skel
pip install myntkaup
  • Python 3.10 eða nýrra, með tegundum (py.typed).
  • Tveir pakkar sem hann reiðir sig á: httpx og cryptography.
  • Aðeins á netþjóni. Einkalykill á aldrei heima í forriti sem keyrir hjá notandanum.

Stillingar

Python
import os

from myntkaup import Myntkaup

# Reads MYNTKAUP_API_KEY_ID and MYNTKAUP_API_PRIVATE_KEY from the environment…
client = Myntkaup()

# …or give everything explicitly.
explicit = Myntkaup(
    key_id=os.environ["MYNTKAUP_API_KEY_ID"],
    private_key=os.environ["MYNTKAUP_API_PRIVATE_KEY"],
    timeout=30.0,
    max_retries=2,
)
ValkosturSjálfgefiðMerking
key_idMYNTKAUP_API_KEY_IDAuðkenni lykilsins, mk_live_… eða mk_test_….
private_keyMYNTKAUP_API_PRIVATE_KEYEinkalykillinn, mk_sk_….
base_urlhttps://public-api.myntkaup.is; prófunarumhverfið fyrir mk_test_ lykilHvert beiðnir fara.
timeout30.0Fyrir hverja tilraun, í sekúndum.
max_retries2Endurtekningar eftir fyrstu tilraun.
transportsjálfgefinnhttpx transport, fyrir prófanir eða milliþjóna.

Föll

FallEndapunktur
client.status()GET /v1/status (óundirritað)
client.me()GET /v1/me
client.revoke_key()POST /v1/me/key/revoke
client.claim_key_pairing(code=, public_key=, 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=, quote_amount=)POST /v1/quotes
client.quotes.get(id)GET /v1/quotes/{id}
client.trades.create(quote_id=, idempotency_key=None)POST /v1/trades
client.trades.get(id)GET /v1/trades/{id}
client.trades.list(**filters)GET /v1/trades, ein síða
client.trades.list_all(**filters)allar síður, sem ítrari
client.transactions.list / get / list_allGET /v1/transactions[/{id}]
client.giftcards.create(asset=, amount=, recipient_name=None, idempotency_key=None)POST /v1/giftcards
client.giftcards.list / get / list_allGET /v1/giftcards[/{id}]
client.giftcards.pdf(id)GET /v1/giftcards/{id}/pdf, sem bytes

quotes.create tekur quote_amount eða base_amount, nákvæmlega annað. Síða hvers endapunkts í API lýsingunni hefur dæmi. Síur á lista eru lykilorðsviðföng sem heita eins og færibreyturnar í fyrirspurninni, nema from, frátekið orð í Python, sem er from_: client.trades.list(asset="BTC", from_="2026-01-01T00:00:00Z").

Ósamstillt

AsyncMyntkaup hefur sömu föll, sem coroutines, og list_all sem ósamstilltan ítrara:

Python
import asyncio

from myntkaup import AsyncMyntkaup


async def main():
    client = AsyncMyntkaup()
    balances = await client.balances.list()
    async for trade in client.trades.list_all(asset="BTC"):
        print(trade["id"], trade["status"])
    print(balances["total_value_usdc"])


asyncio.run(main())

Reitir og upphæðir

  • Viðföng eru í snake_case, eins og reitir API-sins.
  • Svör eru skiluð eins og API-ið sendir þau, svo JSON dæmin í þessari skjölun gilda óbreytt: quote["base_amount"], trade["filled_at"].
  • Upphæðir eru tugatölur á strengjaformi, í báðar áttir. Notaðu decimal.Decimal til að reikna og str() til að senda.

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.

Python
trade = client.buy(asset="BTC", quote_amount="100.00")
if trade["status"] != "filled":
    print("Not filled yet:", trade["id"], trade["status"])

Endurtekningar og Idempotency-Key

  • Beiðnir eru reyndar aftur mest max_retries 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 idempotency_key; quotes.create sendir aðeins lykil ef þú gefur hann upp. Sjá síðuna Örugg endurtekning.

Villur

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

KlasiStaða
myntkaup.AuthenticationError401
myntkaup.PermissionError403
myntkaup.NotFoundError404
myntkaup.ConflictError409
myntkaup.ValidationError400, 422
myntkaup.RateLimitError429
myntkaup.ServiceError5xx

PermissionError og ConnectionError heita það sama og innbyggðir klasar í Python, svo vísaðu í þá í gegnum eininguna.

Python
import myntkaup

try:
    client.trades.get("tr_01JB8X2Q4M7Z3V9K5T1N6R0P2W")
except myntkaup.NotFoundError:
    print("No such trade")
except myntkaup.ApiError as error:
    print(error.code, error.request_id)

Aðeins undirritun

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

Python
import json
import os

import myntkaup

body = json.dumps({"asset": "BTC", "side": "buy", "quote_amount": "100.00"}, separators=(",", ":"))
headers = myntkaup.sign_request(
    key_id=os.environ["MYNTKAUP_API_KEY_ID"],
    private_key=os.environ["MYNTKAUP_API_PRIVATE_KEY"],
    method="POST",
    path_and_query="/v1/quotes",
    body=body,
)

Prófanir

Sendu inn httpx.MockTransport til að prófa kóða sem notar biðlarann án nettengingar:

Python
import httpx

from myntkaup import Myntkaup


def handler(request: httpx.Request) -> httpx.Response:
    return httpx.Response(200, json={"status": "ok", "read_only": False, "trading_enabled": True,
                                     "giftcards_enabled": True, "server_time": "2026-11-03T10:15:10Z"})


client = Myntkaup(
    key_id="mk_test_0123456789abcdefghij",
    private_key="mk_sk_nWGxne_9WmC6hEr0kuwsxERJxWl7MmkZcDusAxyuf2A",  # RFC 8032 test key, public
    transport=httpx.MockTransport(handler),
)