Get started

Scopes and permissions

A key can do only what its scopes allow. You choose them when you create the key, and they can't be changed afterwards.

Scopes

ScopeAllowsEndpointsWhen you create a key
account:readGET /v1/me details, /v1/balances, /v1/limits and /v1/bank-accounts.On by default
transactions:readGET /v1/transactions, /v1/trades, /v1/withdrawals and /v1/giftcards (without codes).On by default
tradePOST /v1/quotes, GET /v1/quotes/{id} and POST /v1/trades.Off by default; shown with a warning
giftcards:createPOST /v1/giftcards, gift card codes and PDFs.Off by default; shown with a warning. An IP allowlist is recommended
withdrawals:createPOST /v1/withdrawals/bank and /v1/withdrawals/crypto, and GET /v1/bank-accounts. Crypto withdrawals must be confirmed from the account's email.Off by default; shown with a warning. An IP allowlist is recommended

In the webapp the scopes are called Read account, Read transactions, Trade, Create gift cards and Withdrawals.

Without a scope

Any valid key can call GET/v1/me, GET/v1/assets, GET/v1/prices and GET/v1/prices/{asset}. Prices are at the key's own account tier. GET/v1/status needs no key at all.

Endpoint by endpoint

EndpointScopeRate-limit class
GET/v1/statusNone (unsigned)Not limited per key
GET/v1/meAny valid keyread
GET/v1/assetsAny valid keymarket
GET/v1/pricesAny valid keymarket
GET/v1/prices/{asset}Any valid keymarket
GET/v1/balancesaccount:readread
GET/v1/limitsaccount:readread
POST/v1/quotestradequote
GET/v1/quotes/{id}traderead
POST/v1/tradestradetrade
GET/v1/tradestransactions:readread
GET/v1/trades/{id}transactions:read or traderead
GET/v1/transactionstransactions:readread
GET/v1/transactions/{id}transactions:readread
POST/v1/giftcardsgiftcards:creategiftcard
GET/v1/giftcardstransactions:readread
GET/v1/giftcards/{id}transactions:readread
GET/v1/giftcards/{id}/pdfgiftcards:createread
GET/v1/bank-accountsaccount:read or withdrawals:createread
POST/v1/withdrawals/bankwithdrawals:createwithdrawal
POST/v1/withdrawals/cryptowithdrawals:createwithdrawal
GET/v1/withdrawalstransactions:read or withdrawals:createread
GET/v1/withdrawals/{id}transactions:read or withdrawals:createread
POST/v1/me/key/revokeAny valid keyread
POST/v1/key-pairings/claimNone (unsigned)Not limited per key

Rules

  • Scopes are fixed. To widen a key, create a new one, with a new electronic ID check, and revoke the old one.
  • An IP allowlist is optional for every scope. We recommend one for keys with trade, giftcards:create or withdrawals:create: requests from other addresses then fail with 403 ip_not_allowed, so a leaked key can't be used elsewhere.
  • Gift card codes are shown only to keys with giftcards:create. A key with only transactions:read lists gift cards without their code.
  • Withdrawals have limits of their own. A bank withdrawal goes only to an account in the account holder's name, and a crypto withdrawal waits until it is confirmed from the account's email. See Withdraw to a bank or a wallet.
  • Some things no key can do. No scope can send transfers to other Myntkaup accounts, change settings, or read identity or KYC data.
  • A request without the needed scope gets 403 insufficient_scope, and the message names the scope.
  • A company's keys belong to the company, and Myntkaup records the person who created each one.

Choosing scopes

ProgramScopes
Portfolio tracker, accounting exportaccount:read, transactions:read
Price alerts, dashboardsnone (any valid key reads prices)
Recurring buys (DCA)trade, plus account:read to check funds
Gift cards for customers or employeesgiftcards:create, transactions:read
Payouts to your bank accountwithdrawals:create, account:read

Keep trading, gift card and withdrawal keys on servers with fixed addresses, and give each its own IP allowlist. It isn't required, but it's the best protection if a key leaks.