We're excited to provide details on our latest Zabo API release: version 0.10! This update includes key improvements, many that were frequent customer and developer requests.

WebSockets, Webhooks and other Zabo Connect upgrades

Zabo now supports WebSockets and Webhooks while connecting accounts! Previously Zabo required Zabo Connect to postMessage back to the parent with the connected account. Now you can either establish a WebSocket before connecting an account or give us a Webhook URL that we can POST to with account information.

WebSockets is now the default setting for the JavaScript (JS) SDK.

We've also made it more clear on how you can connect directly to accounts outside the SDK by going directly to a Zabo Connect URL. This may be helpful if you are using Zabo to connect accounts within a mobile application (or any non-JS app) without a browser.

For more detailed information on connecting a user through Zabo Connect, check out our docs.

Iframe Zabo Connect implementation

We've upgraded Zabo Connect to use Inline Frame element (<iframe>)! There are several improvements from this approach:

  • You don't lose the window focus within your application (i.e. no UI re-directs)
  • You can customize the iframe window
  • Single tab browsers are now supported

New and improved currency mapping

Mapping currencies, both fiat and cryptocurrencies, across a huge array of wallets, exchanges and accounts is a massive headache. Often providers (connections) use unique conventions for tickers (e.g. XBT instead of BTC), requiring custom code for exception handling.

In version 0.10, we set out to tackle this problem by creating an internal mapping engine that enables us to scalably standardize tickers across all connections. Today we've mapped a 250+ currencies and over the next couple weeks will be mapping hundreds more. For currencies that we have mapped, there is additional metadata (e.g. market price, what network it is on) injected into the return objects.

Balance and transaction return objects now have a is_parsed field, which indicate whether a currency has been mapped or not. When is_parsed is true, a currency has been mapped, otherwise it will return false. Currencies that are not mapped will still return basic data for your application to use, so you can always provide a complete accounting of assets in an account.

See a currency that isn't mapped that you'd like to get metadata on? Let us know and we can add it in the same day.

New transaction history workflow

One of the major challenges working with multiple cryptocurrency exchanges is running into API call limits with any meaningful amount of requests. In order to scale the number of requests and allow injection of Zabo metadata, we've updated how our transaction fetching works.

Fetching transaction history can take time. This may be a couple minutes, but sometimes it can even take hours due to long histories and request throttling by exchanges.

To handle this, we've added a delay field to transaction history responses that provides an expected time in seconds to gather the account's history. Since we have no way of knowing the exact delay (it depends on the length of history and underlying connection) the value in delay is an estimate.

One practical implication of this approach is you may receive an empty transactions array initially that gets populated with the data as we receive it.

In the next version of Zabo (v0.11) we will be implementing WebSockets for transactional data, which will eliminate the need to continuously check for new data. This WebSockets implementation we will initiate the call and push transactions to you as soon as they are received.

Documentation updates

We made updates to our documentation for new features and functionality. We also improved existing documentation to improve the clarity.

For example, there was some confusion about the difference between the API Keys and Client ID, which we clarified here.

New Zabo developer forum

We recently created a forum for developers to discuss new features, disclose bugs, ask questions on code or talk about specific functionality. If you have a question or comment, feel free to post it there (or in our Discord).

We will be regularly updating the forum with content so that it can serve as a resource.

Want to see something in our next release? Get in touch.

Join our Discord, follow us on Twitter or contact us.