Setup
What must exist before a transaction, the lookup endpoints for the ids other requests need, and the list conventions
Before you create a transaction you need:
- a receiver: the person or company you pay. See Receivers.
- a bank account on that receiver for a fiat payout. See Bank Accounts.
- a wallet for any crypto leg. See Wallets.
Every call acts as the user who owns the API key, inside that user's selected organisation. An integration user that belongs to one organisation always has it selected.
Look up ids first
Most request fields take a Skyline id (a 24-character hex string), not an ISO code. Fetch the ids once and cache them.
| Endpoint | Key response fields | Use the id for |
|---|---|---|
GET /countries | _id, name, isoCode3166 (alpha-2) | bankCountry on a bank account |
GET /currencies | _id, name, isoCode, symbol | currency on a bank account |
GET /tokens | _id, name, isoCode, ERC20Address. Filter with chainId | the token you send in a transaction |
GET /networks/client-visible | _id, name, type, chainId, safeChainPrefix | network on a wallet |
GET /users/me | the current user, with selectedOrganisation | the organisation id in wallet paths |
GET /organisations/me | the organisations the user belongs to | |
GET /organisations/{id} | one organisation, with its wallets | reading organisation wallets |
Receivers are the exception: they take the country as countryIsoCode (ISO 3166-1 alpha-2, for example GB).
GET /networks/client-visible-evm returns only the EVM networks, as a plain array.
Lists and pagination
List endpoints take limit and offset:
| Parameter | Default | Rule |
|---|---|---|
limit | 20 | 1 to 250 |
offset | 0 | number of results to skip |
A list response looks like this:
{ "results": [], "page_total": 0, "total": 0 }page_total is the number of results in this page. total is the number across all pages. There is no page parameter. Unknown query parameters return 400, so send only the parameters an endpoint accepts.
Pass limit=250 on GET /countries and GET /currencies. With the default of 20 you can miss entries.
To sort countries or currencies by name, pass sortBy=name&direction=1 (1 ascending, -1 descending).
Two kinds of wallet
- Organisation wallets belong to your organisation. You send crypto from them, and on-ramp tokens arrive in them. You must prove you control them.
- Beneficiary wallets belong to a receiver. You pay crypto to them.
- They are created through different endpoints. See Wallets.