Session Token and Wallet Signing

Fetch Session Token and Auth with Wallet

Fetching a Session

In order to start the authentication process with Ratio you must provide the library with a function that will call Ratio's API.


An async function that calls your backend to return the session token from the /v1/clients/session API.

The Ratio API uses client authentication which requires a client_id and client_secret. This client secret should be treated securely and should be protected within your backend.

const fetchSessionToken = async () => {
  try {
    let sessionTokenResponse = await fetch(
        method: 'POST',
        body: JSON.stringify({
          signingAddress: walletAddress,
          depositAddress: walletAddress,
          signingNetwork: walletNetwork,

    let data = await sessionTokenResponse.json();
  } catch (e) {
  return null;
  fetchSessionToken={async () => {
            return await fetchSessionToken();



Wallet Signing

Ratio uses wallet authentication in order to link your client wallet to a Ratio user's account. To set up this authentication method you must provide the Ratio React Native Library with a signingCallback.

The signing callback is an async function that accepts a string that contains the challenge that is returned from the Ratio /v1/auth/cryptoWallet:start call (documentation). This will allow you to perform asynchronous activities, such as a biometrics check, during the signing.

The return value from this function is of type RatioKitSigningResult. See the Models section.

For example, using the Web3.js library

  signingCallback={async (challenge: string) => {
    let sign = web3.eth.accounts.sign(challenge, privateKey);

    return Promise.resolve({
      signature: sign.signature,

Sequence diagram

Last updated