---
title: "Onboarding"
method: POST
path: "/onboarding"
tags: ["Authentication"]
---

# Onboarding

`POST /onboarding`

Onboarding verifies that the caller owns the StarkNet address and enters them
into the database. This call is idempotent.

## Headers

- `PARADEX-ETHEREUM-ACCOUNT` string, required
- `PARADEX-STARKNET-ACCOUNT` string, required
- `PARADEX-STARKNET-SIGNATURE` string, required

## Request body

- RequestsOnboarding
  - `marketing_code` string — Marketing code of the campaign the user is being onboarded via.
  - `portfolio_margin` boolean — When true, the new account is onboarded directly into Portfolio Margin mode. Only valid for main accounts and subaccounts.
  - `public_key` string — Public key of the user being onboarded.
  - `referral_code` string — Referral code of the user who referred the user being onboarded.
  - `utm` RequestsUtm
    - `campaign` string — UTM campaign parameter
    - `source` string — UTM source parameter
    - `type` string — UTM type parameter

## Response `200`

An empty response

## Other responses

- `400` — Bad Request
- `401` — Unauthorized

## Changes

- **2026-07-17** `f1370c46e9e8` — 6 warning
  - added the new `BLOCK_TRADE_REPLAYED_SIGNATURE` enum value to the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `400`
  - added the new `BLOCK_TRADE_REPLAYED_SIGNATURE` enum value to the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `401`
  - added the new `EVM_VAULT_OPERATORS_DISABLED` enum value to the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `400`
  - added the new `EVM_VAULT_OPERATORS_DISABLED` enum value to the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `401`
  - …2 more
- **2026-06-09** `43b81de9b079` — 6 info
  - removed the `INVALID_RHINOFI_QUOTE` enum value from the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `400`
  - removed the `INVALID_RHINOFI_QUOTE` enum value from the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `401`
  - removed the `INVALID_RHINOFI_QUOTE_COMMIT` enum value from the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `400`
  - removed the `INVALID_RHINOFI_QUOTE_COMMIT` enum value from the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `401`
  - …2 more
- …earlier changes not shown

[Full history](https://skmtc.dev/tradeparadex/apis/paradex-rest-api-2/changes/onboarding/post.md)

---

[API](https://skmtc.dev/tradeparadex/apis/paradex-rest-api-2.md) · [All operations](https://skmtc.dev/tradeparadex/apis/paradex-rest-api-2/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/tradeparadex/paradex-rest-api-2/revisions/a73698fdee53/schema)
