Using the API
Learn how to interact with the Meso API
URLs
The base URLs for the API are specific per environment.
- Sandbox:
https://api.sandbox.meso.network
- Production:
https://api.meso.network
API Keys
You will need an API Key to interact with the Meso Partner API. Meso will securely provide this secret when setting up your partner account.
Separate keys will be provided for Sandbox and Production.
Environments
Meso provides two environments:
- Sandbox: This is a pre-production environment for building and testing your integration. All payment and on-chain flows are emulated by our backend systems. Pricing for quotes may not reflect current real-world pricing, and network hashes for transfers do not correspond to any actual on-chain activity.
- Production: In this environment real crypto assets will be transferred on their respective mainnets and fiat assets will be moved.
Responses
All responses will be returned as JSON
payloads with a content-type: application/json
header.
Required Headers
Authentication
All API calls to the Meso Partner API require HTTP Basic Authentication.
An Authorization header containing your credentials must be provided with each request. The value provided in this header is a base64 encoded string containing your partnerId
and API Secret
separated by a :
.
Debugging
Each response from the Meso Partner API will return a request ID in the response headers. This ID is helpful when coordinating with support.
Example: "x-meso-request": "meso_01J0NN3JEFQKYA26Y8Y4KF5V4Q"
Error Handling
Failed requests with 4xx
status codes will return an object with an array of error objects:
Pagination
Some API requests return paginated results, such as searching for transfers. These requests use cursor based pagination. This means that each page of results will also return a string based cursor, and that cursor is passed into the next request to get the next page of results.
Concretely, the API response will have a page_info
object in addition to the list of results
. For example:
The has_next_page
will specify whether there is another page of results to fetch. If so, pass the value of end_cursor
on the subsequent request in the after_cursor
field (in addition to any existing parameters for filtering). For example:
Continue making requests with each after_cursor
until has_next_page
is false
.