NAV Navbar
Browser Nodejs cURL

Introduction

Welcome to the Zabo API! Zabo's mission is to give you one application interface to access any user wallet and any cryptocurrency. We have an active sandbox available to start your integration process, and you are welcome to register in our portal to try it out. Contact us and let us know how we can help!

About the API

Zabo distributes its API through three different methods with usage depending on your application structure. We provide a javascript SDK embedded in your front-end HTML file(s) to help initiate connections. This script provides you the Zabo object, which has functions to access wallets and cryptocurrency. From there, you can continue to use the SDK in the client and, if you are running an application server, we are developing standard REST endpoints as well as a node.js library for convenience as a way to provide more functions and features.

Limitations

We set specific boundaries with the following limitations. We can lift these limitations once we understand where you need us to add better functionality for your application. Current limitations are as follows:

This documentation explains Zabo integration in your application. We recognize that many decentralized applications do not run a server, so we do not require an application server to interact with Zabo. With that said, we do have server-to-server API authentication capability in development which opens up two different ways a user can authenticate and connect their wallet with Zabo, depending on your application's setup. See Authentication for further information. You can view code examples in the dark area to the right as you read through the documentation.

Zabo API Section

The Zabo API section defines the functions available for use in your user facing application. These functions provide a way for your user to connect a wallet of their choice and provide the cryptocurrency data your application needs. After connecting, functions can be accessed through the browser SDK.

Security

Application developers should note that Zabo provides a simple interface with complex networking in our back-end to facilitate a better overall cryptocurrency developer and user experience. At no point do we obtain user wallet private keys or any sensitive data required to independently act upon cryptocurrency holdings. All authentication and approvals remain in the user's hands.

Base URL

Sandbox

https://api.zabo.com/sandbox-v0

Live

https://api.zabo.com/v0

Authentication

The Zabo API requires your users to authorize a connection to the wallet they choose. Before getting to this point, you must register yourself and your application with us, develop using our sandbox environment, then contact us to go live. Once the user has connected a wallet, your application can use the various Zabo functions to pull in data and provide it to your users. The user's approval happens when a user action triggers the connection widget. If your user does not have a wallet connected with Zabo, your application should provide a button or some interaction that triggers the Zabo.connect() function documented below. From there, Zabo takes the user through the process of selecting the wallet and currencies available. When the user returns from establishing a connection, the Zabo.onConnection() event provides the relevant user and wallet data. See the event documentation for further details.

Front-end only apps

If you're running a front-end only application, users receive a session token that initializes the Zabo SDK, and you do not need to take any further action for authentication. Session tokens do have a limited time-to-live depending on user activity and, once it expires, your user needs to connect again. If a user has gone inactive past expiration while still keeping your application open, the onDisconnect() event tells your application to establish a connection again. See the event documentation for further details.

App Server Authentication

Our server-side API is under active development and will be released soon. In the meantime, you can read through this section to get an idea of what to expect.

Zabo uses API Key authentication for server-to-server communication. This communication link provides programmatic access to administrative functions and provides a unified experience for your authenticated users and Zabo. Initial API keys must be established through your Zabo administrative dashboard after registering your application. You can create API Keys in the dashboard and use them to sign and send requests from your server. These requests must be signed and have the following headers:

If you are using server authentication, your users will be available to your application after returning from the connection process. Once the user is established in the system, the application server can send future authenticated requests for data. If using an active wallet connection in the front-end and a session token expires, the server can send a request for another session token and establish the connection again on behalf of the user.

Signing Requests

The signature generated for the X-Zabo-Sig header is formed by using the paired secret key to create a SHA-256 HMAC on the following concatenated string:

Timestamp + Full Request URL + Request Body where:

Errors

Zabo.getAccount()
  .then(function (account) {
    /* See getAccount() section below */
  })
  .catch(function (error) {
    console.log(error)
    /* The error object below */
  })

error is the following JSON object:

{
  "error_type": "connection_denied",
  "message": "Connection closed by the user."
}

Or it could be:

{
  "error_type": 500,
  "message": "This is our error, please note the time and let us know you received this."
}

Zabo uses promises to return most responses. When implementing the catch function, the SDK provides an error object with the following error types:

Error Type Meaning
connection_denied When the user does not authorize access to their wallet*
authentication_error When the user does not provide correct credentials to access their wallet or the connection timed out*

For other errors, the SDK provides the following conventional REST API error codes:

Error Type Meaning
400 Bad Request -- Your request is invalid. Usually from a missing or incorrect parameter*
401 Unauthorized -- Proper credentials were not received.
402 Request Failed -- A valid request was made but it failed.
403 Forbidden -- You do not have access rights to the requested resource.
404 Not Found -- The resource does not exist.
429 Too Many Requests -- Too many calls happened in a short period of time.
500 Internal Server Error -- This our error and you should note the time and let us know if you receive this.*

* A user-friendly message is included with these errors.

Zabo API

Zabo API script:

<script src="https://cdn.zabo.com/0.2.0/zabo.js"></script>
<script type="text/javascript">
  Zabo.init({
    clientId: "<Your App's Key>",
    env: "sandbox"
  })
</script>

You can also use the 'latest' script:

<script src="https://cdn.zabo.com/latest/zabo.js"></script>

This section documents the Zabo API for application developers.

Usage

All applications must use the browser SDK to initiate a wallet connection. To do this, add the script to the bottom of your <body> tag and before using any of the functions. The first step is to call the connect function outlined below and establish a connection with the user's wallet. Your application can then continue to use the functions available in the client SDK and, if running a server, also use a server-side connection for more functionality. Most functions in the client SDK, except for the connect function, return promises which allow you to use async/await or chain then and catch blocks to obtain responses.

Developer Setup Note

If you are developing directly in an .html file, you still must serve this file from a localhost server due to origin requirements. For mac or Linux (with pyton installed) you can open the terminal, go into the file's directory, and run python -m SimpleHTTPServer 8000. This will serve the file at localhost:8000. For Windows, you can use an IDE extension such as Live Server for Visual Studio.

If you are using a front-end framework, such as Reactjs, these tools will provide a server to serve your files during the development process.

Application Server Admin

If you're running an application server, some of these functions will be available via authenticated REST calls made from your server as well. The following list links to these functions specifically and are annotated in the documentation. Additionally, the Server Administration section outlines server only functions available.

Available to app server

Connect new account

Not available from server
Not available from server

Open connect widget in a new window:

Zabo.connect()
  .onConnection(function(account) {
    console.log(account)
    /* The account object outlined below */
  })
  .onError(function(error) {
    console.log(error)
    /* See errors section for more information */
  })
  .onDisconnect(function () {
    /* Provide connect button again after disconnect */
  })

Open widget in an iframe instead:

Zabo.connect({
  interfaceType: 'iframe',
  attachTo: 'body'
})

account is the following JSON object:

{
  "id": "663925bd-205d-479e-895f-27ec3891e8b3",
  "address": "b134235a-088a-489c-aa36-dc0841094db8",
  "provider_name": "coinbase",
  "provider_display_name": "Coinbase",
  "currencies": [
    {
      "balance": "5.068",
      "currency": "ETH",
      "updated_at": 1560134750000
    },
    {
      "balance": "0.932",
      "currency": "BTC",
      "updated_at": 1560134750000
    }
  ],
  "created_at": 1560134750000,
  "updated_at": 1560134750000,
  "resource_type": "account"
}

This function should be called when the user indicates they would like to establish a new wallet connection.

Javascript SDK Request

Zabo.connect()

Calling the connect function without any arguments starts the user connection process on its default state. A new browser window opens for the user to select which one of the wallet provider options they wish to connect with your application.

If the new browser window is not an ideal experience for the users of your app, you have the option to start the connect process within an iframe inside your app. To enable this functionality, please call the connect function with the interfaceType and attachTo parameters.

The attachTo option accepts any DOM selector supported by the document.querySelector() function.

The connect function does not return a promise, it uses events to provide a connection response. This function returns the Zabo object which can be used to chain event callback functions as shown in the example to the right. The events that may be triggered are outlined below and you should provide a callback function for each event. Applications running a server can use the onConnection event data to establish server-side authorization for the connected user.

Arguments

Parameter Type Required Description
interfaceType string Optional window (default) or iframe
attachTo string Optional HTML selector to attach the iframe

Zabo connect events

onConnection

Zabo.onConnection(function (account) {
  console.log(account)
})

This event is called when the user has successfully authenticated and enabled their account for use by your application via Zabo. The account object returned contains the same data available via getAccount().

onError

Zabo.onError(function (error) {
  console.error(error)
})

This event is called when an error is triggered such as when the user does not provide access to their wallet for use by your application via Zabo. See the errors section for more information about the error object returned.

onDisconnect

Zabo.onDisconnect(function () {
  /* Provide connect button after disconnect */
})

This event is called when the user has disconnected their wallet while still using your application. This can typically happen when the user's session has expired due to inactivity, and the application may want to provide a way to connect again.

Get an account

Get the current account information:

Zabo.getAccount()
  .then(function (account) {
    console.log(account)
    /* account is the json object outlined below */
  })
  .catch(function (error) {
    console.log(error)
    /* See errors section for more information */
  })

// ES6 async/await
try {
  let account = await Zabo.getAccount()
  /* account is the json object outlined below */
} catch (error) {
  console.log(error)
  /* See errors section for more information */
}
Coming Soon
curl "https://api.zabo.com/sandbox-v0/accounts/17c0f27e-9916-4ace-b8ca-18d1be2cff43" \
  -H "X-zabo-key: adminApiKey-established-in-dash" \
  -H "X-zabo-sig: signature-of-request-using-paired-secret-key" \
  -H "X-zabo-timestamp: 14200698000000"

Returns the account JSON:

{
  "id": "663925bd-205d-479e-895f-27ec3891e8b3",
  "address": "b134235a-088a-489c-aa36-dc0841094db8",
  "provider_name": "coinbase",
  "provider_display_name": "Coinbase",
  "currencies": [
    {
      "balance": "5.068",
      "currency": "ETH",
      "updated_at": 1560134750000
    },
    {
      "balance": "0.932",
      "currency": "BTC",
      "updated_at": 1560134750000
    }
  ],
  "created_at": 1560134750000,
  "updated_at": 1560134750000,
  "resource_type": "account"
}

This function returns the current account connected. The account object contains information such as the wallet provider and wallet address used during connection with your app.

Javascript SDK Request

Zabo.getAccount()

Server Nodejs Request

Coming Soon

Admin Server HTTP Request

GET BASE_URL/accounts/:account_id

Get a specific balance

var balance = Zabo.getBalance('ETH')
  .then(function (balance) {
    console.log(balance)
    /* 1.0596 */
  })
  .catch(function (error) {
    console.log(error)
    /* User has not yet connected or doesn't have an ether wallet */
  })

// ES6 async/await
try {
  let balance = await Zabo.getBalance('ETH')
  /* 1.0596 */
} catch (error) {
  console.log(error)
  /* User has not yet connected or doesn't have an ether wallet */
}
Coming Soon
Not available, get balance from the account object

Convenience function that returns the user's balance for the requested currency. Cryptocurrencies available to your app can be queried using the currencies function documented below.

Javascript SDK Request

Zabo.getBalance('CRYPTOCURRENCY_TICKER')

Arguments

Parameter Type Required Description
currency string Required Cryptocurrency balance requested.

Server Nodejs Request

Coming Soon

Admin Server HTTP Request

None

Get account history

Get a list of blockchain transactions sent or received by this user with this account address

Zabo.getAccountHistory({currency: 'ETH'})
  .then(function(history) {
    console.log(history)
    /* history is the array outlined below */
  })
  .catch(function(error) {
    console.log(error)
    /* See errors section for more information */
  })

// ES6 async/await
try {
  let history = await Zabo.getAccountHistory({currency: 'ETH'})
  /* history is the array outlined below */
} catch (error) {
  console.log(error)
  /* See errors section for more information */
}
Coming Soon
curl "https://api.zabo.com/sandbox-v0/accounts/8b0a037f-67cb-44b7-ac2a-18e7a54561a8/transactions?currency=eth" \
  -H "X-zabo-key: adminApiKey-established-in-dash" \
  -H "X-zabo-sig: signature-of-request-using-paired-secret-key" \
  -H "X-zabo-timestamp: 14200698000000"

Returns the following array of JSON objects:

{
  "data": [
    {
      "id": "0x158be2ad4ba161c1a67e9b5646d2ed35bd4940b708103635dfd84f5ef252c18a",
      "type": "send",
      "amount": 0.1,
      "status": "completed",
      "other_party": "0x839395e20bbb182fa440d08f850e6c7a8f6f0780",
      "created_at": 123456789000,
      "updated_at": 123456789000
    },
    {
      "id": "0x..."
    }
  ]
}

This function returns a transaction history list for the current user account and given currency. This list is currently only provided in descending order and is limited to the last 50.

Javascript SDK Request

Zabo.getAccountHistory({currency: 'CRYPTOCURRENCY_TICKER'})

Arguments

Parameter Type Required Description
currency string Required Cryptocurrency to pull the history for.

Server Nodejs Request

Coming Soon

Admin Server HTTP Request

GET BASE_URL/accounts/:account_id/transactions

Query Parameters

Parameter Type Required Description
currency string Required Cryptocurrency to pull the history for.

Get a specific transaction

Zabo.getTransaction('0x158be2ad4ba161c1a67e9b5646d2ed35bd4940b708103635dfd84f5ef252c18a')
  .then(function(tx) {
    console.log(tx)
    /* tx is the transaction object outlined below */
  })
  .catch(function(error) {
    console.log(error)
    /* See errors section for more information */
  })

// ES6 async/await
try {
  let tx = await Zabo.getTransaction('0x158be2ad4ba161c1a67e9b5646d2ed35bd4940b708103635dfd84f5ef252c18a')
  /* tx is the transaction object outlined below */
} catch (error) {
  console.log(error)
  /* See errors section for more information */
}
Coming Soon
curl "https://api.zabo.com/sandbox-v0/accounts/8b0a037f-67cb-44b7-ac2a-18e7a54561a8/transactions/0x158be2ad4ba161c1a67e9b5646d2ed35bd4940b708103635dfd84f5ef252c18a" \
  -H "X-zabo-key: adminApiKey-established-in-dash" \
  -H "X-zabo-sig: signature-of-request-using-paired-secret-key" \
  -H "X-zabo-timestamp: 14200698000000"

Returns a single transaction JSON object:

{
  "id": "0x158be2ad4ba161c1a67e9b5646d2ed35bd4940b708103635dfd84f5ef252c18a",
  "type": "send",
  "amount": 0.1,
  "status": "completed",
  "other_party": "0x839395e20bbb182fa440d08f850e6c7a8f6f0780",
  "created_at": 123456789000,
  "updated_at": 123456789000
}

This function returns a specific transaction for the current account and currency.

Javascript SDK Request

Zabo.getTransaction('TRANSACTION_ID')

Arguments

Parameter Type Required Description
transaction_id string Required Transaction id of transaction being requested. Must be associated with the connected account.

Server Nodejs Request

Coming Soon

Admin Server HTTP Request

GET BASE_URL/accounts/:account_id/transactions/:transaction_id

Get exchange rates

Get a list of current market exchange rates for all supported cryptocurrencies

Zabo.getExchangeRates({
    fiatCurrency: 'USD'
  })
  .then(function(exchangeRates) {
    console.log(exchangeRates)
    /* exchangeRates is the array outlined below */
  })
  .catch(function(error) {
    console.log(error)
    /* See errors section for more information */
  })

// ES6 async/await
try {
  let exchangeRates = await Zabo.getExchangeRates({
    fiatCurrency: 'USD'
  })
  /* exchangeRates is the array outlined below */
} catch (error) {
  console.log(error)
  /* See errors section for more information */
}
Coming Soon
curl "https://api.zabo.com/sandbox-v0/exchange-rates?fiat_currency=USD" \
  -H "X-zabo-key: adminApiKey-established-in-dash" \
  -H "X-zabo-sig: signature-of-request-using-paired-secret-key" \
  -H "X-zabo-timestamp: 14200698000000"

Returns the following array of JSON objects:

{
  "data": [
    {
      "from": "BTC",
      "to": "USD",
      "rate": 8000.00,
      "timestamp": 145824503000
    },
    {
      "from": "ETH",
      "to": "USD",
      "rate": 300.00,
      "timestamp": 145824503000
    },
  ]
}

This function returns a list of exchange rates for the available cryptocurrencies for the given fiat currency. Currently, only USD is the fiat currency available. Any supported currency can be used for the cryptoCurrency parameter. This parameter is optional and, if left out, all supported cryptocurrencies will be returned.

Javascript SDK Request

Zabo.getExchangeRates({ fiatCurrency: 'CODE', cryptoCurrency: 'CODE', toCrypto: false })

Arguments

Parameter Type Required Description
fiatCurrency string Optional USD (default) is currently the only option.
cryptoCurrency string Optional If left out, all supported cryptocurrencies are returned.
toCrypto bool Optional Default is false and provides exchange rate to the fiatCurrency. If true, the rate will be cryptocurrency per unit of fiat.

Server Nodejs Request

Coming Soon

Admin Server HTTP Request

GET BASE_URL/exchange-rates

Query Parameters

Parameter Type Required Description
fiat_currency string Optional Three letter ID.
crypto_currency string Optional Three letter ID.
to_crypto bool Optional Default is false.

Server Administration

The following endpoints are available to application administrators if you wish to handle some of these activities from your own server. These require server to server authentication.

Get application

Coming Soon
curl "https://api.zabo.com/sandbox-v0/applications/b5cfb0d8-58de-4786-9545-3d38521d7d2b" \
  -H "X-zabo-key: adminApiKey-established-in-dash" \
  -H "X-zabo-sig: signature-of-request-using-paired-secret-key" \
  -H "X-zabo-timestamp: 14200698000000"

Returns Response (200) and the following JSON:

{
  "id": "b5cfb0d8-58de-4786-9545-3d38521d7d2b",
  "key": "aPublicKeyIdentifyingYourApp",
  "name": "Your App Name",
  "status": "Sandbox",
  "currencies": [
    { "type": "UTXO", "list": [ "BTC" ] },
    { "type": "account", "list": [ "ETH" ] }
  ],
  "wallet_providers": [ 
    {
      "name": "coinbase",
      "display_name": "Coinbase",
      "scopes": [
        {
          "name": "read_balances",
          "display_name": "Read Balances",
          "description": "Can read all balance information."
        },
        {
        }
      ],
      "currencies": [
        { "type": "UTXO", "list": [ "BTC" ] },
        { "type": "account", "list": [ "ETH" ] }
      ]
    }, 
    {
      "name": "metamask",
      "display_name": "MetaMask",
      "scopes": [
        {
          "name": "read_balances",
          "display_name": "Read Balances",
          "description": "Can read all balance information."
        },
        {
          "name": "read_transaction_history",
          "display_name": "Read Transaction History",
          "description": "Can read all past transactions."
        }
      ],
      "currencies": [
        { "type": "account", "list": [ "ETH" ] },
        { "type": "ERC20", "list": [ "all" ] }
      ]
    }
  ],
  "authorized_origins": [
    "zabo.com", "www.zabo.com"
  ],
  "created_at": 14200698000000,
  "updated_at": 14200698000000,
  "resource_type": "application"
}

This endpoint will return the specified application resource. You must have access rights to the application.

Server Nodejs Request

Coming Soon

HTTP Request

GET BASE_URL/applications/:application_id

Updating Application Name, Origins, and Currencies

Coming Soon
curl "https://api.zabo.com/sandbox-v0/applications/b5cfb0d8-58de-4786-9545-3d38521d7d2b" \
  -X PUT \
  -H "Content-Type: application/json" \
  -H "X-zabo-key: adminApiKey-established-in-dash" \
  -H "X-zabo-sig: signature-of-request-using-paired-secret-key" \
  -H "X-zabo-timestamp: 14200698000000" \
  -d '{"name": "New Name}'

Returns Response (201) and the following JSON:

{
  "id": "b5cfb0d8-58de-4786-9545-3d38521d7d2b",
  "key": "aPublicKeyIdentifyingYourApp",
  "name": "New Name",
  "status": "sandbox",
  "currencies": [
    { "type": "UTXO", "list": [ "BTC" ] },
    { "type": "account", "list": [ "ETH" ] }
  ],
  "wallet_providers": [ 
    {
      "name": "coinbase",
      "display_name": "Coinbase",
      "scopes": [
        {
          "name": "read_balances",
          "display_name": "Read Balances",
          "description": "Can read all balance information."
        },
        {
        }
      ],
      "currencies": [
        { "type": "UTXO", "list": [ "BTC" ] },
        { "type": "account", "list": [ "ETH" ] }
      ]
    }, 
    {
      "name": "metamask",
      "display_name": "MetaMask",
      "scopes": [
        {
          "name": "read_balances",
          "display_name": "Read Balances",
          "description": "Can read all balance information."
        },
        {
          "name": "read_transaction_history",
          "display_name": "Read Transaction History",
          "description": "Can read all past transactions."
        }
      ],
      "currencies": [
        { "type": "account", "list": [ "ETH" ] },
        { "type": "ERC20", "list": [ "all" ] }
      ]
    }
  ],
  "authorized_origins": [
    "zabo.com", "www.zabo.com"
  ],
  "created_at": 14200698000000,
  "updated_at": 14200698000000,
  "resource_type": "application"
}

The following endpoints will update the specified application resource. Any update will return the new application resource object. You must have access rights to the application and applications can only be changed when they have sandbox or limited status. Applications with live status cannot be updated via the API.

Update Application Name

Nodejs Request

Coming Soon

HTTP Request

PUT BASE_URL/applications/:application_id

Arguments

Parameter Type Required Description
name string Required Application name

Update Application Authorized Origins

Use this to update the authorized domain origin list for the application. The action parameter must be one of "add", to add to the list, or "delete", to remove an origin from the list. The origins parameter should be in the form of ["some-domain.com","www.some-domain.com"]. In the case of "delete", the given origins must currently be in the application's authorized_origins list.

Nodejs Request

Coming Soon

HTTP Request

PUT BASE_URL/applications/:application_id/origins

Arguments

Parameter Type Required Description
origins array Required List of origins
action string Required "add" or "delete"

Update Application Currencies

Use this to update the currencies used within the application. The action parameter must be one of "add", to add to the list, or "delete", to remove a currency from the list. In the case of action being "delete", the given currency must currently be in the application's currencies list.

The currency parameter should be in the form of "BTC" or "all". If "all" is given, then all supported cryptocurrencies of the given type will be available in your application. The type must match the type of cryptocurrency. Currencies and their types can be queried using the currencies endpoint documented below.

Nodejs Request

Coming Soon

HTTP Request

PUT BASE_URL/applications/:application_id/currencies

Arguments

Parameter Type Required Description
type string Required Must match the currency's type
currency string Required Currency ticker or all
action string Required "add" or "delete"

Get all wallet providers

Coming Soon
curl "https://api.zabo.com/sandbox-v0/wallet-providers" \
  -H "X-zabo-key: adminApiKey-established-in-dash" \
  -H "X-zabo-sig: signature-of-request-using-paired-secret-key" \
  -H "X-zabo-timestamp: 14200698000000"

Returns Response (200) and the following JSON:

{
  "data": [ 
    {
      "name": "coinbase",
      "display_name": "Coinbase",
      "auth_type": "token",
      "resource_type": "wallet_provider",
      "available_scopes": [
        {
          "name": "read_balances",
          "display_name": "Read Balances",
          "description": "Can read all balance information."
        },
        {
          "name": "read_transaction_history",
          "display_name": "Read Transaction History",
          "description": "Can read all past transactions.",
          "resource_type": "scope"
        }
      ],
      "available_currencies": [{ "type": "account", "list": [ "ETH" ] },{ "type": "UTXO", "list": [ "BTC" ] }],
      "resource_type": "wallet_provider"
    },
    {
      "name": "metamask",
      "display_name": "MetaMask",
      "auth_type": "private_key",
      "resource_type": "wallet_provider",
      "available_scopes": ["read_balances","read_transaction_history"],
      "available_currencies": [{ "type": "account", "list": [ "ETH" ] }, { "type": "ERC20", "list": [ "all" ] }],
      "resource_type": "wallet_provider"
    },
    {
      "name": "ledger",
      "display_name": "Ledger Hardware Wallet",
      "auth_type": "private_key",
      "resource_type": "wallet_provider",
      "available_scopes": ["read_balances","read_transaction_history"],
      "available_currencies": [{ "type": "account", "list": [ "all" ] }, { "type": "ERC20", "list": [ "all" ] }],
      "resource_type": "wallet_provider"
    }
  ]
}

This endpoint will return the list of all wallet providers available for an application as well as the scopes and currencies available for that particular provider.

Server Nodejs Request

Coming Soon

HTTP Request

GET BASE_URL/wallet-providers

Get a wallet provider

Coming Soon
curl "https://api.zabo.com/sandbox-v0/wallet-providers/metamask" \
  -H "X-zabo-key: adminApiKey-established-in-dash" \
  -H "X-zabo-sig: signature-of-request-using-paired-secret-key" \
  -H "X-zabo-timestamp: 14200698000000"

Returns Response (200) and the following JSON:

{
  "name": "metamask",
  "display_name": "MetaMask",
  "auth_type": "private_key",
  "resource_type": "wallet_provider",
  "available_scopes": [
    {
      "name": "read_balances",
      "display_name": "Read Balances",
      "description": "Can read all balance information."
    },
    {
      "name": "read_transaction_history",
      "display_name": "Read Transaction History",
      "description": "Can read all past transactions.",
      "resource_type": "scope"
    }
  ],
  "available_currencies": [{ "type": "account", "list": [ "ETH" ] }, { "type": "ERC20", "list": [ "all" ] }],
  "resource_type": "wallet_provider"
}

This endpoint will return the requested wallet provider resource.

Server Nodejs Request

Coming Soon

HTTP Request

GET BASE_URL/wallet-providers/:wallet_provider_name

Get all scopes

Coming Soon
curl "https://api.zabo.com/sandbox-v0/scopes" \
  -H "X-zabo-key: adminApiKey-established-in-dash" \
  -H "X-zabo-sig: signature-of-request-using-paired-secret-key" \
  -H "X-zabo-timestamp: 14200698000000"

Returns Response (200) and the following JSON:

{
  "data": [
    {
      "name": "read_balances",
      "display_name": "Read Balances",
      "description": "Can read all balance information.",
      "resource_type": "scope"
    },
    {
      "name": "read_transaction_history",
      "display_name": "Read Transaction History",
      "description": "Can read all past transactions.",
      "resource_type": "scope"
    }
  ]
}

This endpoint will return the list of all scopes in the system. Use the /wallet-providers endpoint documented above to see which scopes are available for each wallet provider.

Server Nodejs Request

Coming Soon

HTTP Request

GET BASE_URL/scopes

Get all currencies

Coming Soon
curl "https://api.zabo.com/sandbox-v0/currencies" \
  -H "X-zabo-key: adminApiKey-established-in-dash" \
  -H "X-zabo-sig: signature-of-request-using-paired-secret-key" \
  -H "X-zabo-timestamp: 14200698000000"

Returns Response (200) and the following JSON:

{
  "data": [
    {
      "ticker": "BTC",
      "name": "Bitcoin",
      "type": "UTXO",
      "address": null,
      "resource_type": "currency"
    },
    {
      "ticker": "ETH",
      "name": "Ether",
      "type": "account",
      "address": null,
      "resource_type": "currency"
    }
  ]
}

This endpoint will return the full list of currencies available in the system. Use the /wallet-providers endpoint documented above to see the currencies supported by each wallet provider.

Server Nodejs Request

Coming Soon

HTTP Request

GET BASE_URL/currencies

Get specific currency

Coming Soon
curl "https://api.zabo.com/sandbox-v0/currencies/BTC" \
  -H "X-zabo-key: adminApiKey-established-in-dash" \
  -H "X-zabo-sig: signature-of-request-using-paired-secret-key" \
  -H "X-zabo-timestamp: 14200698000000"

Returns Response (200) and the following JSON:

{
  "ticker": "BTC",
  "name": "Bitcoin",
  "type": "UTXO",
  "address": null,
  "resource_type": "currency"
}

This endpoint provides information about a specific currency.

Server Nodejs Request

Coming Soon

HTTP Request

GET BASE_URL/currencies/:currency_ticker