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
pip install myntkaup- Python 3.10 eða nýrra, með tegundum (
py.typed). - Tveir pakkar sem hann reiðir sig á:
httpxogcryptography. - Aðeins á netþjóni. Einkalykill á aldrei heima í forriti sem keyrir hjá notandanum.
Stillingar
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,
)| Valkostur | Sjálfgefið | Merking |
|---|---|---|
key_id | MYNTKAUP_API_KEY_ID | Auðkenni lykilsins, mk_live_… eða mk_test_…. |
private_key | MYNTKAUP_API_PRIVATE_KEY | Einkalykillinn, mk_sk_…. |
base_url | https://public-api.myntkaup.is; prófunarumhverfið fyrir mk_test_ lykil | Hvert beiðnir fara. |
timeout | 30.0 | Fyrir hverja tilraun, í sekúndum. |
max_retries | 2 | Endurtekningar eftir fyrstu tilraun. |
transport | sjálfgefinn | httpx transport, fyrir prófanir eða milliþjóna. |
Föll
| Fall | Endapunktur |
|---|---|
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_all | GET /v1/transactions[/{id}] |
client.giftcards.create(asset=, amount=, recipient_name=None, idempotency_key=None) | POST /v1/giftcards |
client.giftcards.list / get / list_all | GET /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:
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.Decimaltil að reikna ogstr()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.
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_retriessinnum, 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 uppidempotency_key;quotes.createsendir 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.
| Klasi | Staða |
|---|---|
myntkaup.AuthenticationError | 401 |
myntkaup.PermissionError | 403 |
myntkaup.NotFoundError | 404 |
myntkaup.ConflictError | 409 |
myntkaup.ValidationError | 400, 422 |
myntkaup.RateLimitError | 429 |
myntkaup.ServiceError | 5xx |
PermissionError og ConnectionError heita það sama og innbyggðir klasar í Python, svo vísaðu í þá í gegnum eininguna.
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:
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:
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),
)