Celsius Network Wallet API

Balances, accrued interest, transactions, deposits and withdrawals.

OpenAPI Specification

celsius-network-wallet-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Celsius Partner Wallet API
  version: 1.0.0
  summary: Partner-facing wallet, interest, KYC and utility API for the Celsius Network platform (retired).
  description: 'The Celsius Partner API (also called the Wallet API) let Celsius Network partners deposit and withdraw crypto, earn interest, read balances and transactions, run KYC on their users and read utility reference data.


    Three partnership types shared one contract. **Omnibus Integration** and **Omnibus Treasury** partners authenticated with `X-Cel-Partner-Token` plus `X-Cel-Api-Key`; **Segmented Integration** partners created a Celsius wallet per end user and authenticated with `X-Cel-Partner-Token` plus `X-Cel-User-Token`. Every response carried an `X-Signature` header the official SDK verified against a per-environment RSA public key.


    **This API is retired.** Celsius Network filed for Chapter 11 on 2022-07-13, emerged on 2024-01-31, and shut down its mobile and web apps on 2024-02-29 as part of the wind-down of its business operations. The production host `wallet-api.celsius.network` no longer resolves. This document is preserved as a historical record of the contract.


    **Provenance.** Derived by API Evangelist from two first-party artifacts, both fetched 2026-08-02: the Celsius API public Postman collection (https://documenter.gw.postman.com/api/collections/4207695/Rzn6v2mZ) and the official npm package `celsius-sdk@1.0.0` (`lib/consts.js` PATHS and `lib/core.js`). No path, verb, parameter, response shape or example in this document was invented.'
  contact:
    name: Celsius Network partnerships
    email: partners@celsius.network
  license:
    name: Apache-2.0
    identifier: Apache-2.0
  x-apievangelist-status: retired
  x-apievangelist-derived-from:
  - https://documenter.gw.postman.com/api/collections/4207695/Rzn6v2mZ
  - https://www.npmjs.com/package/celsius-sdk
servers:
- url: https://wallet-api.celsius.network
  description: 'Production. Retired: the host no longer resolves as of 2026-08-02.'
- url: https://wallet-api.staging.celsius.network
  description: 'Staging / sandbox. Retired: the host no longer resolves as of 2026-08-02.'
security:
- partnerToken: []
  userToken: []
- partnerToken: []
  apiKey: []
tags:
- name: Wallet
  description: Balances, accrued interest, transactions, deposits and withdrawals.
paths:
  /wallet/balance:
    get:
      operationId: getBalanceSummary
      summary: Get balance for all coins
      description: Returns the user's balance in each coin supported by Celsius.
      tags:
      - Wallet
      responses:
        '200':
          description: Balances returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceSummary'
              examples:
                example:
                  value:
                    balance:
                      eth: '998.000000000000000000'
                      btc: '0'
                      ltc: '0.00500000'
                      cel: '1659.0569'
        '401':
          description: Unauthorized. Missing or invalid partner/user credentials, or the request is blocked by compliance for the user's jurisdiction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Due to local laws and regulations, Celsius cannot provide its services to individuals from your region. For additional support, contact app@celsius.network.
                    slug: COMPLIANCE_ERROR
        '422':
          description: Unprocessable entity. The request was well formed but could not be fulfilled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Coin is invalid!
                    slug: COIN_NOT_FOUND
  /wallet/{coin}/balance:
    get:
      operationId: getCoinBalance
      summary: Get balance for a coin
      description: Returns the user's balance in a specific coin and its value in USD.
      tags:
      - Wallet
      parameters:
      - name: coin
        in: path
        required: true
        description: Coin symbol, e.g. BTC, ETH, USDC. See getSupportedCurrencies.
        schema:
          type: string
          examples:
          - BTC
      responses:
        '200':
          description: Balance for the coin returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoinBalance'
              examples:
                example:
                  value:
                    amount: '0.00525'
                    amount_in_usd: '312.44'
        '401':
          description: Unauthorized. Missing or invalid partner/user credentials, or the request is blocked by compliance for the user's jurisdiction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Due to local laws and regulations, Celsius cannot provide its services to individuals from your region. For additional support, contact app@celsius.network.
                    slug: COMPLIANCE_ERROR
        '422':
          description: Unprocessable entity. The request was well formed but could not be fulfilled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Coin is invalid!
                    slug: COIN_NOT_FOUND
  /wallet/interest:
    get:
      operationId: getInterestSummary
      summary: Get accrued interest for all coins
      description: Returns the user's accrued interest in each coin and its value in USD, plus the total amount accrued in USD across all coins.
      tags:
      - Wallet
      responses:
        '200':
          description: Accrued interest returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InterestSummary'
              examples:
                example:
                  value:
                    interest:
                      BTC:
                        amount: 0
                        amount_usd: 206.20390147513007
                        amount_cel: '1659.0569'
                        coin: BTC
                    total_amount_usd: '2909.35'
        '401':
          description: Unauthorized. Missing or invalid partner/user credentials, or the request is blocked by compliance for the user's jurisdiction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Due to local laws and regulations, Celsius cannot provide its services to individuals from your region. For additional support, contact app@celsius.network.
                    slug: COMPLIANCE_ERROR
        '422':
          description: Unprocessable entity. The request was well formed but could not be fulfilled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Coin is invalid!
                    slug: COIN_NOT_FOUND
  /wallet/transactions:
    get:
      operationId: getTransactionSummary
      summary: Get all transactions
      description: Returns a paginated list of all the user's transactions, sorted by the `time` property in descending order.
      tags:
      - Wallet
      parameters:
      - name: page
        in: query
        required: false
        description: Page to retrieve. Defaults to the first page.
        schema:
          type: integer
          minimum: 1
          examples:
          - 2
      - name: per_page
        in: query
        required: false
        description: How many records are shown per page. Defaults to 20 records.
        schema:
          type: integer
          minimum: 1
          examples:
          - 20
      responses:
        '200':
          description: Transactions returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionPage'
              examples:
                example:
                  value:
                    pagination:
                      total: 8
                      pages: 3
                      current: 2
                      per_page: 3
                      showing: 4 - 6
                    record:
                    - id: 74092e77-0a8e-460b-b87a-29b7a401bc1a
                      amount: '1053.888361'
                      amount_precise: '1053.888361068924293393'
                      amount_usd: '27925.078284'
                      coin: ETH
                      state: confirmed
                      nature: interest
                      time: '2020-10-07T13:53:14.000Z'
        '401':
          description: Unauthorized. Missing or invalid partner/user credentials, or the request is blocked by compliance for the user's jurisdiction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Due to local laws and regulations, Celsius cannot provide its services to individuals from your region. For additional support, contact app@celsius.network.
                    slug: COMPLIANCE_ERROR
        '422':
          description: Unprocessable entity. The request was well formed but could not be fulfilled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Coin is invalid!
                    slug: COIN_NOT_FOUND
  /wallet/{coin}/transactions:
    get:
      operationId: getCoinTransactions
      summary: Get all transactions for a coin
      description: Returns a paginated list of all the user's transactions for the specified coin, sorted by the `time` property in descending order.
      tags:
      - Wallet
      parameters:
      - name: coin
        in: path
        required: true
        description: Coin symbol, e.g. BTC, ETH, USDC. See getSupportedCurrencies.
        schema:
          type: string
          examples:
          - BTC
      - name: page
        in: query
        required: false
        description: Page to retrieve. Defaults to the first page.
        schema:
          type: integer
          minimum: 1
          examples:
          - 2
      - name: per_page
        in: query
        required: false
        description: How many records are shown per page. Defaults to 20 records.
        schema:
          type: integer
          minimum: 1
          examples:
          - 20
      responses:
        '200':
          description: Transactions returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionPage'
        '401':
          description: Unauthorized. Missing or invalid partner/user credentials, or the request is blocked by compliance for the user's jurisdiction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Due to local laws and regulations, Celsius cannot provide its services to individuals from your region. For additional support, contact app@celsius.network.
                    slug: COMPLIANCE_ERROR
        '422':
          description: Unprocessable entity. The request was well formed but could not be fulfilled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Coin is invalid!
                    slug: COIN_NOT_FOUND
  /wallet/transactions/{transaction}/status:
    get:
      operationId: getTransactionStatus
      summary: Get transaction status
      description: Returns the state and blockchain hash for the supplied Celsius transaction id.
      tags:
      - Wallet
      parameters:
      - name: transaction
        in: path
        required: true
        description: Transaction id in the Celsius system.
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Transaction status returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionStatus'
              examples:
                example:
                  value:
                    tx_id: null
                    state: processing
        '400':
          description: Bad request. Validation failed or the withdrawal amount is below the minimum.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: You cannot withdraw less than 1$.
                    slug: DUST_CHECK_FAILED
        '401':
          description: Unauthorized. Missing or invalid partner/user credentials, or the request is blocked by compliance for the user's jurisdiction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Due to local laws and regulations, Celsius cannot provide its services to individuals from your region. For additional support, contact app@celsius.network.
                    slug: COMPLIANCE_ERROR
        '422':
          description: Unprocessable entity. The request was well formed but could not be fulfilled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Coin is invalid!
                    slug: COIN_NOT_FOUND
  /wallet/{coin}/deposit:
    get:
      operationId: getDeposit
      summary: Get deposit address
      description: Returns the deposit address for the specified coin. When `coin` is BTC the `address` is the segwit deposit address and `addressSecondary` carries the legacy address.
      tags:
      - Wallet
      parameters:
      - name: coin
        in: path
        required: true
        description: Coin symbol, e.g. BTC, ETH, USDC. See getSupportedCurrencies.
        schema:
          type: string
          examples:
          - BTC
      responses:
        '200':
          description: Deposit address returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepositAddress'
              examples:
                example:
                  value:
                    address: '0x8fed6d0ad578b7f4beb7aa04de81da9b94244e4f'
        '401':
          description: Unauthorized. Missing or invalid partner/user credentials, or the request is blocked by compliance for the user's jurisdiction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Due to local laws and regulations, Celsius cannot provide its services to individuals from your region. For additional support, contact app@celsius.network.
                    slug: COMPLIANCE_ERROR
        '422':
          description: Unprocessable entity. The request was well formed but could not be fulfilled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Coin is invalid!
                    slug: COIN_NOT_FOUND
        '503':
          description: Service unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    msg: No free addresses available.
  /wallet/{coin}/withdraw:
    post:
      operationId: withdraw
      summary: Withdraw funds
      description: Withdraws the requested amount of the specified coin to the supplied address. The address must satisfy the partner's withdrawal scheme (no address / list of pre-approved addresses / any address).
      tags:
      - Wallet
      parameters:
      - name: coin
        in: path
        required: true
        description: Coin symbol, e.g. BTC, ETH, USDC. See getSupportedCurrencies.
        schema:
          type: string
          examples:
          - BTC
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                address:
                  type: string
                  description: Address to which to withdraw the funds.
                amount:
                  type: string
                  description: Amount to withdraw, as a numeric string.
              required:
              - address
              - amount
      responses:
        '200':
          description: Withdrawal accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WithdrawalAccepted'
              examples:
                example:
                  value:
                    transaction_id: 9427a15a-14da-457f-98da-f2e6e7bd652a
        '400':
          description: Bad request. Validation failed or the withdrawal amount is below the minimum.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: You cannot withdraw less than 1$.
                    slug: DUST_CHECK_FAILED
        '401':
          description: Unauthorized. Missing or invalid partner/user credentials, or the request is blocked by compliance for the user's jurisdiction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Due to local laws and regulations, Celsius cannot provide its services to individuals from your region. For additional support, contact app@celsius.network.
                    slug: COMPLIANCE_ERROR
        '422':
          description: Unprocessable entity. The request was well formed but could not be fulfilled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Coin is invalid!
                    slug: COIN_NOT_FOUND
  /wallet/{coin}/withdrawal-address:
    get:
      operationId: getWithdrawalAddressForCoin
      summary: Get the withdrawal address for a coin
      description: Returns the pre-approved withdrawal address configured for the user for the specified coin.
      tags:
      - Wallet
      parameters:
      - name: coin
        in: path
        required: true
        description: Coin symbol, e.g. BTC, ETH, USDC. See getSupportedCurrencies.
        schema:
          type: string
          examples:
          - BTC
      responses:
        '200':
          description: Withdrawal address returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepositAddress'
        '401':
          description: Unauthorized. Missing or invalid partner/user credentials, or the request is blocked by compliance for the user's jurisdiction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Due to local laws and regulations, Celsius cannot provide its services to individuals from your region. For additional support, contact app@celsius.network.
                    slug: COMPLIANCE_ERROR
        '422':
          description: Unprocessable entity. The request was well formed but could not be fulfilled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Coin is invalid!
                    slug: COIN_NOT_FOUND
  /wallet/withdrawal-addresses:
    get:
      operationId: getWithdrawalAddresses
      summary: Get all withdrawal addresses
      description: Returns every pre-approved withdrawal address configured for the user, keyed by coin.
      tags:
      - Wallet
      responses:
        '200':
          description: Withdrawal addresses returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WithdrawalAddresses'
        '401':
          description: Unauthorized. Missing or invalid partner/user credentials, or the request is blocked by compliance for the user's jurisdiction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Due to local laws and regulations, Celsius cannot provide its services to individuals from your region. For additional support, contact app@celsius.network.
                    slug: COMPLIANCE_ERROR
        '422':
          description: Unprocessable entity. The request was well formed but could not be fulfilled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                example:
                  value:
                    message: Coin is invalid!
                    slug: COIN_NOT_FOUND
components:
  schemas:
    AccruedInterest:
      type: object
      description: Interest a user has accrued for a single coin.
      properties:
        amount:
          type: string
          description: Interest accrued In Kind (in the coin itself).
        amount_cel:
          type: string
          description: Interest accrued In CEL.
        amount_usd:
          type: number
          description: Interest accrued converted to USD (In Kind plus In CEL).
        coin:
          type: string
          description: Coin on which the interest was accrued.
    DepositAddress:
      type: object
      properties:
        address:
          type: string
          description: Deposit address. For BTC this is the segwit address.
        addressSecondary:
          type: string
          description: Legacy deposit address. Present only for BTC.
    Pagination:
      type: object
      description: Splits a collection into pages of per_page items.
      properties:
        total:
          type: number
          description: Total number of items.
        pages:
          type: number
          description: Total number of pages.
        current:
          type: number
          description: Current page number.
        per_page:
          type: number
          description: Number of items per page.
        showing:
          type: string
          description: Where in the collection the first and last item sit.
    TransactionStatus:
      type: object
      properties:
        tx_id:
          type:
          - string
          - 'null'
          description: Transaction hash on the blockchain.
        state:
          type: string
          enum:
          - processing
          - unconfirmed
          - confirmed
          - rejected
    BalanceSummary:
      type: object
      properties:
        balance:
          type: object
          description: User's balance keyed by coin.
          additionalProperties:
            type: string
    CoinBalance:
      type: object
      properties:
        amount:
          type: string
          description: Balance in the requested coin.
        amount_in_usd:
          type: string
          description: Balance converted to USD.
    Transaction:
      type: object
      description: A single transaction of a user in the Celsius system.
      properties:
        id:
          type: string
          format: uuid
          description: Transaction id in the Celsius system.
        amount:
          type: string
          description: Transaction amount, rounded down to the last significant decimal place.
        amount_precise:
          type: string
          description: Precise transaction amount, without rounding.
        amount_usd:
          type: string
          description: Transaction amount converted to USD at the `time` property.
        coin:
          type: string
          description: Transaction coin.
        state:
          type: string
          description: Transaction state.
          enum:
          - processing
          - unconfirmed
          - confirmed
          - rejected
        nature:
          type: string
          description: Transaction nature.
          enum:
          - deposit
          - withdrawal
          - interest
        time:
          type: string
          format: date-time
          description: Transaction date and time.
        tx_id:
          type:
          - string
          - 'null'
          description: Transaction blockchain hash.
        original_interest_coin:
          type: string
          description: Original coin for which this transaction was created. Present only when `nature` is interest.
        interest_amount_in_original_coin:
          type: string
          description: Amount in original_interest_coin before conversion to `coin`.
    WithdrawalAddresses:
      type: object
      description: Pre-approved withdrawal addresses keyed by coin.
      additionalProperties:
        type: string
    TransactionPage:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        record:
          type: array
          items:
            $ref: '#/components/schemas/Transaction'
    InterestSummary:
      type: object
      properties:
        interest:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/AccruedInterest'
        total_amount_usd:
          type: string
          description: Total USD sum of all accrued interest.
    WithdrawalAccepted:
      type: object
      properties:
        transaction_id:
          type: string
          format: uuid
          description: Transaction id in the Celsius system.
    Error:
      type: object
      description: Celsius error envelope. `slug` is the stable machine-readable error code and `message` the human-readable text; older responses use `msg` instead of `message`.
      properties:
        message:
          type: string
          description: Human readable error message.
        msg:
          type: string
          description: Legacy human readable error message.
        slug:
          type: string
          description: Stable machine-readable error code.
          examples:
          - COMPLIANCE_ERROR
          - COIN_NOT_FOUND
          - INSUFFICIENT_FUNDS
  securitySchemes:
    partnerToken:
      type: apiKey
      in: header
      name: X-Cel-Partner-Token
      description: Partner key issued by Celsius and securely provided to the partner. Required on every authenticated request, for every partnership type.
    userToken:
      type: apiKey
      in: header
      name: X-Cel-User-Token
      description: User token created by the partner for each of its users. Used by Segmented Integration partners.
    apiKey:
      type: apiKey
      in: header
      name: X-Cel-Api-Key
      description: API key issued by Celsius and securely provided to the partner. Used by Omnibus and Omnibus Treasury partners.