Leiðbeiningar
Kaupa eða selja rafmyntir
Biddu um verðtilboð og samþykktu það innan nokkurra sekúndna. Hér er farið yfir upphæðir, viðskipti í bið, villurnar sem búast má við, hvenær verðtilboði getur verið hafnað og hvernig á að reyna aftur án þess að eiga viðskiptin tvisvar.
Áður en þú byrjar
- Lykill með heimildina
trade. Bættu viðaccount:readtil að kanna innistæðuna fyrst. Við mælum með að takmarka lykilinn við leyfðar IP tölur. - USDC á aðganginum til að kaupa fyrir, eða rafmyntin sem á að selja. Viðskipti eru gerð upp í USDC.
- Opið fyrir viðskipti í gegnum API-ið: GET
/v1/statussýnirtrading_enabled.
Ferlið
Búðu til verðtilboð
POST /v1/quotesmeð rafmynt, kaupum eða sölu og upphæð skilar bindandi verði sem gildir í nokkrar sekúndur (5 eins og er).Samþykktu það
POST /v1/tradesmeð auðkenni verðtilboðsins ogIdempotency-Key, áður enexpires_atrennur upp. Svarið eru viðskiptin.Fylgstu með viðskiptum í bið
Yfirleitt er viðskiptunum lokið strax (
filled,201). Ef þau eru enn í bið (pending,202) skaltu kannaGET /v1/trades/{id}þar til þau erufilledeðafailed.
Upphæðir
Gefðu upp nákvæmlega annað af quote_amount (í USDC) og base_amount (í rafmyntinni):
| Þú vilt | Sendu |
|---|---|
| Kaupa BTC fyrir 100 USDC | side: "buy", quote_amount: "100.00" |
| Fá 0,001 BTC | side: "buy", base_amount: "0.001" |
| Selja 0,001 BTC | side: "sell", base_amount: "0.001" |
| Selja BTC fyrir 100 USDC | side: "sell", quote_amount: "100.00" |
Verðtilboðið reiknar hina upphæðina á verði þóknunarþreps aðgangsins; þóknunin er innifalin í verðinu. Upphæðir eru tugatölur á strengjaformi, námundaðar að base_increment rafmyntarinnar. Minnstu og stærstu viðskipti hverrar rafmyntar, í USDC, eru í GET/v1/assets, og dagleg API velta þín er í GET/v1/limits. GET/v1/assets sýnir allar rafmyntir sem þú getur átt viðskipti með, og ný rafmynt birtist þar um leið og Myntkaup skráir hana.
Búðu til verðtilboð
# Signed by sign-headers.sh: see Authentication
body='{"asset":"BTC","side":"buy","quote_amount":"100.00"}'
curl https://public-api.myntkaup.is/v1/quotes \
-H "Content-Type: application/json" \
$(./sign-headers.sh POST /v1/quotes "$body" | sed 's/^/-H /') \
--data "$body"import { Myntkaup } from "@myntkaup/api";
const client = new Myntkaup(); // reads the key from the environment
const quote = await client.quotes.create({ asset: "BTC", side: "buy", quoteAmount: "100.00" });
console.log(quote.id, quote.base_amount, quote.expires_at);from myntkaup import Myntkaup
client = Myntkaup() # reads the key from the environment
quote = client.quotes.create(asset="BTC", side="buy", quote_amount="100.00")
print(quote["id"], quote["base_amount"], quote["expires_at"]){
"id": "qt_01JB8X2Q4M7Z3V9K5T1N6R0P2W",
"asset": "BTC",
"side": "buy",
"quote_currency": "USDC",
"base_amount": "0.00104210",
"quote_amount": "100.00",
"price": "95960.12",
"isk_estimate": "13421",
"status": "open",
"created_at": "2026-11-03T10:15:10Z",
"expires_at": "2026-11-03T10:15:20Z",
"trade_id": null
}- Verðtilboð gildir til
expires_at, nokkrum sekúndum eftircreated_at(5 eins og er), og það má samþykkja einu sinni. - Hver lykill getur haft mest 5 opin verðtilboð; það sjötta fær
422 limit_exceeded. - Verðtilboðið kannar strax stærðina, hvort viðskipti með rafmyntina séu opin og aðganginn þinn, svo flest vandamál koma fram hér frekar en við viðskiptin:
amount_below_minimum,amount_above_maximum,asset_not_tradable,limit_exceeded,trading_halted,service_unavailable. GET /v1/quotes/{id}sýnirstatusþess:open,accepted,expired,filledeðafailed, ogtrade_idþegar það hefur verið samþykkt.
Samþykktu verðtilboðið
# Signed by sign-headers.sh: see Authentication
body='{"quote_id":"qt_01JB8X2Q4M7Z3V9K5T1N6R0P2W"}'
idempotency_key=$(uuidgen) # reuse it to retry safely
curl https://public-api.myntkaup.is/v1/trades \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $idempotency_key" \
$(./sign-headers.sh POST /v1/trades "$body" | sed 's/^/-H /') \
--data "$body"import { Myntkaup } from "@myntkaup/api";
const client = new Myntkaup(); // reads the key from the environment
// Sends a random Idempotency-Key unless you pass idempotencyKey.
const trade = await client.trades.create({ quoteId: "qt_01JB8X2Q4M7Z3V9K5T1N6R0P2W" });
console.log(trade.status, trade.base_amount);from myntkaup import Myntkaup
client = Myntkaup() # reads the key from the environment
# Sends a random Idempotency-Key unless you pass idempotency_key.
trade = client.trades.create(quote_id="qt_01JB8X2Q4M7Z3V9K5T1N6R0P2W")
print(trade["status"], trade["base_amount"]){
"id": "tr_01JB8X2Q4M7Z3V9K5T1N6R0P2W",
"quote_id": "qt_01JB8X2Q4M7Z3V9K5T1N6R0P2W",
"asset": "BTC",
"side": "buy",
"quote_currency": "USDC",
"base_amount": "0.00104210",
"quote_amount": "100.00",
"price": "95960.12",
"status": "filled",
"source": "public_api",
"created_at": "2026-11-03T10:15:12Z",
"filled_at": "2026-11-03T10:15:13Z",
"failure_reason": null
}201 Created þýðir að viðskiptunum er lokið: status er filled, eða failed með failure_reason. 202 Accepted þýðir að þau eru enn pending.
Það sem getur farið úrskeiðis:
| Kóði | Hvað gerðist | Hvað á að gera |
|---|---|---|
quote_expired | Tími verðtilboðsins var liðinn. | Búðu til nýtt verðtilboð og samþykktu það fyrr. |
price_moved | Markaðsverðið hreyfðist of langt frá verðinu í tilboðinu. | Búðu til nýtt verðtilboð. |
quote_already_used | Verðtilboðið var þegar samþykkt, ef til vill í fyrri tilraun. | GET /v1/quotes/{id} gefur trade_id þess. |
insufficient_funds | Laus innistæða dugar ekki lengur. | Athugaðu GET /v1/balances. |
limit_exceeded | Farið yrði yfir API veltu eða fjölda viðskipta dagsins. | Bíddu eftir næsta UTC degi. |
trading_halted (503) | Hlé er á viðskiptum, eða á þessari rafmynt í nokkrar sekúndur. | Reyndu aftur eftir Retry-After sekúndur. |
service_unavailable (503) | Við höfðum ekkert nýlegt verð á rafmyntinni. | Reyndu aftur eftir Retry-After sekúndur. |
too_many_concurrent_requests (429) | Önnur viðskipti aðgangsins eru enn í vinnslu. | Bíddu eftir þeim, og reyndu svo aftur. |
Þegar verðtilboði er hafnað
Verðtilboð heldur verði sínu aðeins í þær fáu sekúndur sem það gildir, og aðeins meðan markaðurinn helst nálægt því. Við athugum verðið aftur þegar þú samþykkir, og höfnum viðskiptunum ef markaðurinn hefur síðan hreyfst gegn verðtilboðinu meira en vikmörkin þín leyfa. Sömu reglur gilda um alla viðskiptavini:
-
Vikmörkin þín ráðast af þóknunarþrepinu: helmingur þess sem þóknunin skilur eftir þegar okkar eigin viðskiptakostnaður er dreginn frá, og aldrei meira en 0,5%. Lægstu þóknanirnar þola því minnstu hreyfingarnar.
Þóknunin þín Vikmörk eins og er 1,2% eða meira 0,50% 1,00% 0,41% 0,50% 0,16% 0,25% 0,035% Hreyfing þér í hag hafnar aldrei viðskiptum; þú færð verð verðtilboðsins hvort sem er.
-
Aðeins nýleg verð. Við gerum verðtilboð og framkvæmum viðskipti aðeins á verði sem er mest nokkurra sekúndna gamalt. Ef við höfum ekkert slíkt færðu
503 service_unavailablemeðRetry-After. -
Hraður markaður. Eftir hraða hreyfingu á rafmynt (1% innan mínútu) er hlé á verðtilboðum og viðskiptum með hana í 30 sekúndur:
503 trading_haltedmeðRetry-After. Appið heldur áfram. -
Hvernig viðskiptin reynast. Við fylgjumst með hvernig viðskipti hvers lykils standa miðað við markaðinn á eftir. Lykill sem samþykkir að mestu eftir að markaðurinn hefur hreyfst gegn verðtilboðunum hans getur verið skoðaður og mörk hans lækkuð.
Viðskipti sem er hafnað kosta ekkert. Biddu um nýtt verðtilboð.
Viðskipti í bið
Viðskipti sem eru enn í vinnslu eftir 20 sekúndur, eða þar sem kanna þarf niðurstöðuna handvirkt, fá svarið 202 með status: "pending". Upphæðin er frátekin á meðan. Fylgstu með þeim með GET/v1/trades/{id}:
- kannaðu eftir 1 sekúndu, og bíddu svo lengur á milli (2, 4, 8 sekúndur…);
- hættu þegar
statuserfilledeðafailed; - ekki hefja önnur viðskipti með sömu fjármunum meðan þessi eru í bið.
{
"id": "tr_01JB8X2Q4M7Z3V9K5T1N6R0P2W",
"quote_id": "qt_01JB8X2Q4M7Z3V9K5T1N6R0P2W",
"asset": "BTC",
"side": "buy",
"quote_currency": "USDC",
"base_amount": "0.00104210",
"quote_amount": "100.00",
"price": "95960.12",
"status": "pending",
"source": "public_api",
"created_at": "2026-11-03T10:15:12Z",
"filled_at": null,
"failure_reason": null
}Tímamörk og endurtekningar
Ef POST /v1/trades rennur út á tíma, eða svarar 502, 503 eða 504, skaltu reyna aftur með sama Idempotency-Key og sama meginmáli. Ef fyrri tilraunin fór í gegn færðu viðskipti hennar til baka; ef ekki eru þau framkvæmd núna. Reyndu aldrei aftur með nýjum lykli nema þú hafir staðfest með GET /v1/quotes/{id} að verðtilboðið hafi ekki verið samþykkt. Sjá síðuna Örugg endurtekning.
buy() og sell() föllin
SDK-in sjá um allt ferlið: þau búa til verðtilboðið, samþykkja það og fylgjast með viðskiptum í bið í allt að 30 sekúndur, með vaxandi bið. Þau skila viðskiptunum.
import { Myntkaup } from "@myntkaup/api";
const client = new Myntkaup();
const bought = await client.buy({ asset: "BTC", quoteAmount: "100.00" }); // spend 100 USDC
console.log(bought.status, bought.base_amount, bought.price);
const sold = await client.sell({ asset: "BTC", baseAmount: "0.0005" }); // sell 0.0005 BTC
console.log(sold.status, sold.quote_amount);from myntkaup import Myntkaup
client = Myntkaup()
bought = client.buy(asset="BTC", quote_amount="100.00") # spend 100 USDC
print(bought["status"], bought["base_amount"], bought["price"])
sold = client.sell(asset="BTC", base_amount="0.0005") # sell 0.0005 BTC
print(sold["status"], sold["quote_amount"])Viðskipti geta enn verið pending eftir 30 sekúndur fallsins. Athugaðu status áður en þú lítur svo á að þeim sé lokið.
Dæmi: regluleg kaup
Kaupir BTC fyrir 25 USDC, og reynir einu sinni enn með nýju verðtilboði ef verðið hreyfðist. Keyrðu það úr tímaáætlun, til dæmis cron, einu sinni á dag.
import { ApiError, Myntkaup } from "@myntkaup/api";
const client = new Myntkaup();
async function buyOnce() {
for (let attempt = 1; attempt <= 2; attempt++) {
try {
return await client.buy({ asset: "BTC", quoteAmount: "25.00" });
} catch (error) {
const retryable = error instanceof ApiError && ["price_moved", "quote_expired"].includes(error.code);
if (!retryable || attempt === 2) throw error;
}
}
}
const trade = await buyOnce();
console.log(new Date().toISOString(), trade?.id, trade?.status, trade?.base_amount);from datetime import datetime, timezone
import myntkaup
from myntkaup import Myntkaup
client = Myntkaup()
def buy_once():
for attempt in (1, 2):
try:
return client.buy(asset="BTC", quote_amount="25.00")
except myntkaup.ApiError as error:
if error.code not in ("price_moved", "quote_expired") or attempt == 2:
raise
trade = buy_once()
print(datetime.now(timezone.utc).isoformat(), trade["id"], trade["status"], trade["base_amount"])Gátlisti
- Lykillinn hefur
trade, leyfðar IP tölur, og ekkert sem hann þarf ekki. - Upphæðir eru tugatölur á strengjaformi, aldrei fleytitölur.
- Hver viðskipti hafa einn
Idempotency-Key, sem er notaður aftur við hverja endurtekningu. -
price_movedogquote_expiredleiða til nýs verðtilboðs, ekki lykkju. -
trading_haltedogservice_unavailablebíða íRetry-Aftersekúndur. - Fylgst er með viðskiptum í bið með vaxandi bið.
-
request_ider skráð fyrir hverja villu.