Hifi Wallet API

Wallet endpoints

Operations 7

GET /v2/users/{userId}/wallets/balance Retrieve wallet balance #
POST /v2/users/{userId}/wallets/add Add wallets to a user #
GET /v2/users/{userId}/wallets/external Get external wallets for a user #
POST /v2/users/{userId}/wallets/external Add external wallets to a user #
GET /v2/users/{userId}/wallets/external/{externalWalletId} Get an external wallet #
GET /v2/users/{userId}/wallets/deposits Get inbound deposits #
GET /v2/users/{userId}/wallets/deposits/{depositId} Get an inbound deposit #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/hifi:hifi-wallet-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

hifi-wallet-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Hifi Wallet API
  version: 2.0.0
  description: API documentation for Hifi
servers:
- url: https://production.hifibridge.com
  description: Production server
- url: https://sandbox.hifibridge.com
  description: Sandbox server
security:
- bearerAuth: []
tags:
- name: Wallet
  description: Wallet endpoints
paths:
  /v2/users/{userId}/wallets/balance:
    get:
      summary: Retrieve wallet balance
      description: Get the latest balance of a user's wallet, including details like the blockchain network and currency.
      tags:
      - Wallet
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      - $ref: '#/components/parameters/ChainParameter'
      - $ref: '#/components/parameters/CryptoCurrencyParameter'
      responses:
        '200':
          $ref: '#/components/responses/WalletBalanceResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
      operationId: getV2UsersByUserIdWalletsBalance
      x-operation-id-source: derived
  /v2/users/{userId}/wallets/add:
    post:
      summary: Add wallets to a user
      tags:
      - Wallet
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      requestBody:
        $ref: '#/components/requestBodies/UserV2AddWalletsBody'
      responses:
        '200':
          $ref: '#/components/responses/UserV2ObjectResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
      operationId: postV2UsersByUserIdWalletsAdd
      x-operation-id-source: derived
  /v2/users/{userId}/wallets/external:
    get:
      summary: Get external wallets for a user
      tags:
      - Wallet
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      responses:
        '200':
          $ref: '#/components/responses/ExternalWalletsObjectResponse'
      operationId: getV2UsersByUserIdWalletsExternal
      x-operation-id-source: derived
    post:
      summary: Add external wallets to a user
      tags:
      - Wallet
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      requestBody:
        $ref: '#/components/requestBodies/AddExternalWalletsBody'
      responses:
        '200':
          $ref: '#/components/responses/ExternalWalletObjectResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
      operationId: postV2UsersByUserIdWalletsExternal
      x-operation-id-source: derived
  /v2/users/{userId}/wallets/external/{externalWalletId}:
    get:
      summary: Get an external wallet
      tags:
      - Wallet
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      - $ref: '#/components/parameters/ExternalWalletIdPathParameter'
      responses:
        '200':
          $ref: '#/components/responses/ExternalWalletObjectResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
      operationId: getV2UsersByUserIdWalletsExternalByExternalWalletId
      x-operation-id-source: derived
  /v2/users/{userId}/wallets/deposits:
    get:
      summary: Get inbound deposits
      description: Get inbound deposits for a user's wallet
      tags:
      - Wallet
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      - $ref: '#/components/parameters/ChainParameter'
      - $ref: '#/components/parameters/CryptoCurrencyParameter'
      - $ref: '#/components/parameters/WalletDepositStatusParameter'
      - $ref: '#/components/parameters/CreatedAfterParameter'
      - $ref: '#/components/parameters/CreatedBeforeParameter'
      - $ref: '#/components/parameters/LimitParameter'
      - $ref: '#/components/parameters/MinAmountParameter'
      responses:
        '200':
          $ref: '#/components/responses/WalletDepositsObjectResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
      operationId: getV2UsersByUserIdWalletsDeposits
      x-operation-id-source: derived
  /v2/users/{userId}/wallets/deposits/{depositId}:
    get:
      summary: Get an inbound deposit
      description: Get an inbound deposit for a user's wallet
      tags:
      - Wallet
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      - $ref: '#/components/parameters/DepositIdPathParameter'
      responses:
        '200':
          $ref: '#/components/responses/WalletDepositObjectResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
      operationId: getV2UsersByUserIdWalletsDepositsByDepositId
      x-operation-id-source: derived
components:
  parameters:
    UserIdPathParameter:
      name: userId
      in: path
      schema:
        type: string
      description: ID of the user
      required: true
    LimitParameter:
      name: limit
      in: query
      schema:
        type: string
        minimum: 1
        maximum: 100
      description: default to 10, maximum to 100
      required: false
    CreatedBeforeParameter:
      name: createdBefore
      in: query
      schema:
        type: string
        format: date
      description: 'ISO format: YYYY-MM-DD'
      required: false
    ChainParameter:
      name: chain
      in: query
      schema:
        type: string
        enum:
        - POLYGON
        - ETHEREUM
        - SOLANA
        - BASE
      description: The blockchain network to retrieve the wallet balance from.
      required: true
    CryptoCurrencyParameter:
      name: currency
      in: query
      schema:
        type: string
        enum:
        - usdc
        - usdt
        - usdHifi
      description: The type of currency to check the balance for. Currently, only usdc is supported.
      required: true
    ExternalWalletIdPathParameter:
      name: externalWalletId
      in: path
      schema:
        type: string
      description: ID of the external wallet
      required: true
    MinAmountParameter:
      name: minAmount
      in: query
      schema:
        type: number
      description: Minimum amount of the deposit, default is 0.01
      required: false
    CreatedAfterParameter:
      name: createdAfter
      in: query
      schema:
        type: string
        format: date
      description: 'ISO format: YYYY-MM-DD'
      required: false
    WalletDepositStatusParameter:
      name: status
      in: query
      schema:
        type: string
        enum:
        - CONFIRMED
        - COMPLETED
      description: Status of the deposit, CONFIRMED indicates the deposit is found in the blockchain, COMPLETED indicates the deposit is completed and unlikely to be reverted.
      required: false
    DepositIdPathParameter:
      name: depositId
      in: path
      schema:
        type: string
      description: ID of the deposit
      required: true
  examples:
    ExternalWalletObjectExample:
      summary: External Wallet Object
      value:
        address: '0xFE5ea74612ba174BaF7FC4C45f05dB7fF73aBA21'
        chain: POLYGON
        name: my-wallet
        referenceId: my-wallet-reference-id
        createdAt: '2025-09-24T19:03:41.107Z'
    UserObjectIndividualExample:
      summary: User Object (Individual)
      value:
        id: 4d93ab4f-3983-4ac0-8c97-54bbc0f287fa
        createdAt: '2025-09-24T19:12:20.541Z'
        type: individual
        email: john.doe@hifibridge.com
        name: John Doe
        wallets:
          INDIVIDUAL:
            ETHEREUM:
              address: '0x43B343Bb48E23F58406271131B71448fF95787AD'
            POLYGON:
              address: '0x43B343Bb48E23F58406271131B71448fF95787AD'
    WalletDepositObjectListExample:
      summary: Wallet Deposit Object List
      value:
        count: 1
        records:
        - userId: f4c99c2f-ce05-4f61-8ed6-9064a5689197
          id: 2e084846-00d6-5e4c-806f-eac45e197108
          createdAt: '2025-06-25T15:47:16.983978+00:00'
          updatedAt: '2025-06-25T15:47:16.983978+00:00'
          wallet:
            id: 24b4917d-694e-4d81-ace8-9ba5261b6f4e
            address: '0x0B95D270400BE4319EAFbfDD82F6C38B59ab54Ef'
            chain: POLYGON
            walletType: INDIVIDUAL
          transaction:
            transactionHash: '0xe5284c4cb35ae9b5eb0ae23b840032f320b87b63f8967ee9b67ee09dfe6a194a'
            chain: POLYGON
            currency: usdc
            status: COMPLETED
            sourceAddress: '0x0B95D270400BE4319EAFbfDD82F6C38B59ab54Ef'
            destinationAddress: '0x0B95D270400BE4319EAFbfDD82F6C38B59ab54Ef'
            contractAddress: '0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582'
            amount: '19'
            unitAmount: '19000000'
        nextCursor: '2025-06-25T15:47:16.983978+00:00'
    UserObjectBusinessExample:
      summary: User Object (Business)
      value:
        id: 264484e0-979a-5fa3-9335-947f55e5999a
        createdAt: '2025-09-24T19:03:41.107Z'
        type: business
        email: admin@randombizz.com
        name: Random Bizz
        wallets:
          INDIVIDUAL:
            ETHEREUM:
              address: '0x2f78AEFA879819D7a5C9a87fE8BF5e7B961f5500'
            POLYGON:
              address: '0x2f78AEFA879819D7a5C9a87fE8BF5e7B961f5500'
    WalletDepositObjectExample:
      summary: Wallet Deposit Object
      value:
        userId: f4c99c2f-ce05-4f61-8ed6-9064a5689197
        id: 2e084846-00d6-5e4c-806f-eac45e197108
        createdAt: '2025-06-25T15:47:16.983978+00:00'
        updatedAt: '2025-06-25T15:47:16.983978+00:00'
        wallet:
          id: 24b4917d-694e-4d81-ace8-9ba5261b6f4e
          address: '0x0B95D270400BE4319EAFbfDD82F6C38B59ab54Ef'
          chain: POLYGON
          walletType: INDIVIDUAL
        transaction:
          transactionHash: '0xe5284c4cb35ae9b5eb0ae23b840032f320b87b63f8967ee9b67ee09dfe6a194a'
          chain: POLYGON
          currency: usdc
          status: COMPLETED
          sourceAddress: '0x0B95D270400BE4319EAFbfDD82F6C38B59ab54Ef'
          destinationAddress: '0x0B95D270400BE4319EAFbfDD82F6C38B59ab54Ef'
          contractAddress: '0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582'
          amount: '19'
          unitAmount: '19000000'
    ExternalWalletObjectListExample:
      summary: External Wallet Object List
      value:
        count: 1
        externalWallets:
        - address: '0xFE5ea74612ba174BaF7FC4C45f05dB7fF73aBA21'
          chain: POLYGON
          name: my-wallet
          referenceId: my-wallet-reference-id
          createdAt: '2025-09-24T19:03:41.107Z'
        nextCursor: '2025-09-24T19:03:41.107Z'
    WalletBalanceObjectExample:
      summary: Wallet Balance Object
      value:
        balance: '0'
        displayBalance: '0'
        tokenInfo:
          tokenAddress: '0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582'
          standard: ERC20
          name: USDC
          symbol: USDC
          decimals: 6
  responses:
    InternalServerErrorResponse:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/InternalServerError'
    ExternalWalletObjectResponse:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ExternalWalletObject'
          examples:
            ExternalWalletObjectExample:
              $ref: '#/components/examples/ExternalWalletObjectExample'
    WalletDepositsObjectResponse:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/WalletDepositsObject'
          examples:
            WalletDepositObjectListExample:
              $ref: '#/components/examples/WalletDepositObjectListExample'
    WalletDepositObjectResponse:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/WalletDepositObject'
          examples:
            WalletDepositObjectExample:
              $ref: '#/components/examples/WalletDepositObjectExample'
    WalletBalanceResponse:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/WalletBalanceObject'
          examples:
            WalletBalanceObjectExample:
              $ref: '#/components/examples/WalletBalanceObjectExample'
    UnauthorizedResponse:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Unauthorized'
    ExternalWalletsObjectResponse:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ExternalWalletsObject'
          examples:
            ExternalWalletObjectListExample:
              $ref: '#/components/examples/ExternalWalletObjectListExample'
    UserV2ObjectResponse:
      description: Success
      content:
        application/json:
          schema:
            oneOf:
            - $ref: '#/components/schemas/IndividualUserV2Object'
            - $ref: '#/components/schemas/BusinessUserV2Object'
          examples:
            UserObjectIndividualExample:
              $ref: '#/components/examples/UserObjectIndividualExample'
            UserObjectBusinessExample:
              $ref: '#/components/examples/UserObjectBusinessExample'
  schemas:
    WalletDepositObject:
      type: object
      properties:
        id:
          type: string
          format: uuid
        userId:
          type: string
          format: uuid
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        wallet:
          type: object
          properties:
            id:
              type: string
              format: uuid
            address:
              type: string
            chain:
              type: string
              enum:
              - POLYGON
              - SOLANA
              - ETHEREUM
              - BASE
            walletType:
              type: string
              enum:
              - INDIVIDUAL
        transaction:
          type: object
          properties:
            transactionHash:
              type: string
            chain:
              type: string
              enum:
              - POLYGON
              - SOLANA
              - ETHEREUM
              - BASE
            currency:
              type: string
            status:
              type: string
              enum:
              - COMPLETED
              - CONFIRMED
            sourceAddress:
              type: string
            destinationAddress:
              type: string
            contractAddress:
              type: string
            amount:
              type: string
            unitAmount:
              type: string
    WalletDepositsObject:
      type: object
      properties:
        count:
          type: integer
        deposits:
          type: array
          items:
            $ref: '#/components/schemas/WalletDepositObject'
        nextCursor:
          type: string
          description: The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results.
    BusinessUserV2Object:
      type: object
      title: User Object (Business)
      properties:
        id:
          type: string
          format: uuid
          description: User ID
        createdAt:
          type: string
          format: date-time
          description: Data and time when the user was created
        type:
          type: string
        email:
          type: string
        name:
          type: string
        wallets:
          type: object
          properties:
            INDIVIDUAL:
              type: object
              properties:
                ETHEREUM:
                  $ref: '#/components/schemas/WalletAddressObject'
                POLYGON:
                  $ref: '#/components/schemas/WalletAddressObject'
    WalletBalanceObject:
      type: object
      properties:
        balance:
          type: string
          description: The raw balance of the wallet expressed in the smallest denomination of the token. This format is ideal for backend calculations, automation processes, or when precise, unrounded figures are necessary for smart contract interactions. For example, use this when calculating transaction fees or performing token transfer operations that require exact values.
        displayBalance:
          type: string
          description: The wallet balance formatted as a decimal string for display purposes, adjusted according to the token's decimal places to facilitate human readability. This format is best used in user interfaces where balances are displayed to end-users, such as in wallet apps or dashboards, where readability and familiarity are crucial. For instance, displaying an account balance on a user's home screen or summary page.
        tokenInfo:
          type: object
          description: Detailed information about the token.
          properties:
            tokenAddress:
              type: string
              description: Blockchain generated unique identifier, associated with wallet (account), smart contract or other blockchain objects.
            standard:
              type: string
              enum:
              - ERC20
              - ERC721
              - ERC1155
            name:
              type: string
              description: Blockchain name of the specified token.
            symbol:
              type: string
              description: Blockchain symbol of the specified token.
            decimals:
              type: integer
              description: Number of decimal places shown in the token amount.
    WalletAddressObject:
      type: object
      properties:
        address:
          type: string
          description: Wallet address
      required:
      - address
    AddExternalWallets:
      type: object
      properties:
        address:
          type: string
          description: The wallet address to add
        chain:
          type: string
          enum:
          - POLYGON
          - SOLANA
          - ETHEREUM
          - BASE
          description: The blockchain network for this wallet
        name:
          type: string
          description: Name for the wallet
        referenceId:
          type: string
          description: A custom reference ID for the wallet
      required:
      - address
      - chain
      - name
      - referenceId
    UserV2AddWallets:
      type: object
      properties:
        chains:
          type: array
          items:
            type: string
            description: The chains to create wallets for.
            enum:
            - POLYGON
            - SOLANA
            - ETHEREUM
            - BASE
      required:
      - chains
    ExternalWalletObject:
      type: object
      properties:
        id:
          type: string
          format: uuid
        userId:
          type: string
          format: uuid
        chain:
          type: string
          enum:
          - POLYGON
          - SOLANA
          - ETHEREUM
          - BASE
        name:
          type: string
        address:
          type: string
        referenceId:
          type: string
        active:
          type: boolean
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type:
          - string
          - 'null'
          format: date-time
    InternalServerError:
      type: object
      properties:
        error:
          type: string
          example: Unexpected error happened
    Unauthorized:
      type: object
      properties:
        error:
          type: string
          example: Not authorized
    IndividualUserV2Object:
      type: object
      title: User Object (Individual)
      properties:
        id:
          type: string
          format: uuid
          description: User ID
        createdAt:
          type: string
          format: date-time
          description: Data and time when the user was created
        type:
          type: string
        email:
          type: string
        name:
          type: string
        wallets:
          type: object
          properties:
            INDIVIDUAL:
              type: object
              properties:
                ETHEREUM:
                  $ref: '#/components/schemas/WalletAddressObject'
                POLYGON:
                  $ref: '#/components/schemas/WalletAddressObject'
    ExternalWalletsObject:
      type: object
      properties:
        count:
          type: integer
        externalWallets:
          type: array
          items:
            $ref: '#/components/schemas/ExternalWalletObject'
        nextCursor:
          type: string
          description: The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results.
  requestBodies:
    UserV2AddWalletsBody:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UserV2AddWallets'
    AddExternalWalletsBody:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AddExternalWallets'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT