Celsius Network Users API

Creation and maintenance of partner-owned Celsius users (Segmented Integration).

OpenAPI Specification

celsius-network-users-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Celsius Partner Users 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: Users
  description: Creation and maintenance of partner-owned Celsius users (Segmented Integration).
paths:
  /users:
    post:
      operationId: createUser
      summary: Create a partner user
      description: Creates a user in the Celsius system on behalf of a Segmented Integration partner and returns the `userId`. The supplied `user_token` is subsequently used as the user secret (`X-Cel-User-Token`).
      tags:
      - Users
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                first_name:
                  type: string
                  description: Applicant's first name.
                last_name:
                  type: string
                  description: Applicant's last name.
                middle_name:
                  type: string
                  description: Applicant's middle name.
                title:
                  type: string
                  description: Applicant's title, e.g. Mr, Mrs.
                date_of_birth:
                  type: string
                  format: date
                  description: Applicant's date of birth (YYYY-MM-DD).
                citizenship:
                  type: string
                  description: Applicant's country of citizenship.
                country:
                  type: string
                  description: Applicant's country of residence.
                state:
                  type: string
                  description: Applicant's state of residence.
                city:
                  type: string
                  description: Applicant's city of residence.
                zip:
                  type: string
                  description: Applicant's postal code.
                street:
                  type: string
                  description: Applicant's street.
                building_number:
                  type: string
                  description: Applicant's building number.
                flat_number:
                  type: string
                  description: Applicant's flat number.
                ssn:
                  type: string
                  description: Applicant's US Social Security Number.
                itin:
                  type: string
                  description: Applicant's US Individual Taxpayer Identification Number.
                national_id:
                  type: string
                  description: Applicant's national identity number.
                gender:
                  type: string
                  description: Applicant's gender.
                email:
                  type: string
                  format: email
                  description: Applicant's email address.
                user_token:
                  type: string
                  description: Partner-generated token identifying this user.
              required:
              - first_name
              - last_name
              - date_of_birth
              - citizenship
              - country
              - city
              - zip
              - street
              - gender
              - user_token
      security:
      - partnerToken: []
      responses:
        '200':
          description: User created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateUserResponse'
        '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
        '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
    put:
      operationId: updateUserEmail
      summary: Update the user's email address
      description: Updates the email address of the authenticated user.
      tags:
      - Users
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                email:
                  type: string
                  format: email
                  description: New email address for the user.
              required:
              - email
      responses:
        '200':
          description: Email updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusFlag'
        '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
  /users/{userId}:
    put:
      operationId: updateUser
      summary: Update a partner user
      description: Updates the profile of an existing user created by the partner.
      tags:
      - Users
      parameters:
      - name: userId
        in: path
        required: true
        description: Id of the user in the Celsius system.
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                first_name:
                  type: string
                  description: Applicant's first name.
                last_name:
                  type: string
                  description: Applicant's last name.
                middle_name:
                  type: string
                  description: Applicant's middle name.
                title:
                  type: string
                  description: Applicant's title, e.g. Mr, Mrs.
                date_of_birth:
                  type: string
                  format: date
                  description: Applicant's date of birth (YYYY-MM-DD).
                citizenship:
                  type: string
                  description: Applicant's country of citizenship.
                country:
                  type: string
                  description: Applicant's country of residence.
                state:
                  type: string
                  description: Applicant's state of residence.
                city:
                  type: string
                  description: Applicant's city of residence.
                zip:
                  type: string
                  description: Applicant's postal code.
                street:
                  type: string
                  description: Applicant's street.
                building_number:
                  type: string
                  description: Applicant's building number.
                flat_number:
                  type: string
                  description: Applicant's flat number.
                ssn:
                  type: string
                  description: Applicant's US Social Security Number.
                itin:
                  type: string
                  description: Applicant's US Individual Taxpayer Identification Number.
                national_id:
                  type: string
                  description: Applicant's national identity number.
                gender:
                  type: string
                  description: Applicant's gender.
      responses:
        '200':
          description: User updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusFlag'
        '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
components:
  schemas:
    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
    CreateUserResponse:
      type: object
      properties:
        userId:
          type: string
          format: uuid
        userToken:
          type: string
    StatusFlag:
      type: object
      properties:
        status:
          type: boolean
  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.