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 : .

Authorization: Basic <credentials>
echo -n "examplePartner:exampleKey" | base64

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:

{
  "errors": [
    {
      "code": "invalid_request",
      "message": "The 'external_id' parameter is required."
    }
  ]
}

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:

"page_info": {
  "end_cursor": "dF8wMUo0TUo5N0JUNzZUTU1TMVBUVkFCM1RQOQ==",
  "has_next_page": true
}

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:

shell
https://path/to/api?after_cursor=dF8wMUo0TUo5N0JUNzZUTU1TMVBUVkFCM1RQOQ==

Continue making requests with each after_cursor until has_next_page is false.