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.