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
| Scope | Allows | Endpoints | When you create a key |
|---|---|---|---|
account:read | GET /v1/me details, /v1/balances, /v1/limits and /v1/bank-accounts. | On by default | |
transactions:read | GET /v1/transactions, /v1/trades, /v1/withdrawals and /v1/giftcards (without codes). | On by default | |
trade | POST /v1/quotes, GET /v1/quotes/{id} and POST /v1/trades. | Off by default; shown with a warning | |
giftcards:create | POST /v1/giftcards, gift card codes and PDFs. | Off by default; shown with a warning. An IP allowlist is recommended | |
withdrawals:create | POST /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
| Endpoint | Scope | Rate-limit class |
|---|---|---|
GET/v1/status | None (unsigned) | Not limited per key |
GET/v1/me | Any valid key | read |
GET/v1/assets | Any valid key | market |
GET/v1/prices | Any valid key | market |
GET/v1/prices/{asset} | Any valid key | market |
GET/v1/balances | account:read | read |
GET/v1/limits | account:read | read |
POST/v1/quotes | trade | quote |
GET/v1/quotes/{id} | trade | read |
POST/v1/trades | trade | trade |
GET/v1/trades | transactions:read | read |
GET/v1/trades/{id} | transactions:read or trade | read |
GET/v1/transactions | transactions:read | read |
GET/v1/transactions/{id} | transactions:read | read |
POST/v1/giftcards | giftcards:create | giftcard |
GET/v1/giftcards | transactions:read | read |
GET/v1/giftcards/{id} | transactions:read | read |
GET/v1/giftcards/{id}/pdf | giftcards:create | read |
GET/v1/bank-accounts | account:read or withdrawals:create | read |
POST/v1/withdrawals/bank | withdrawals:create | withdrawal |
POST/v1/withdrawals/crypto | withdrawals:create | withdrawal |
GET/v1/withdrawals | transactions:read or withdrawals:create | read |
GET/v1/withdrawals/{id} | transactions:read or withdrawals:create | read |
POST/v1/me/key/revoke | Any valid key | read |
POST/v1/key-pairings/claim | None (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:createorwithdrawals:create: requests from other addresses then fail with403 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 onlytransactions:readlists gift cards without theircode. - 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
| Program | Scopes |
|---|---|
| Portfolio tracker, accounting export | account:read, transactions:read |
| Price alerts, dashboards | none (any valid key reads prices) |
| Recurring buys (DCA) | trade, plus account:read to check funds |
| Gift cards for customers or employees | giftcards:create, transactions:read |
| Payouts to your bank account | withdrawals: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.