Skip to main content
POST /api/v1/onboard Unified onboarding endpoint. Supports two modes:
  • Managed — Parsec creates a wallet and derives exchange credentials on your behalf (Polymarket only).
  • Self — You provide your own exchange credentials (Polymarket or Kalshi).
Idempotent and resumable. Re-running skips already-completed steps.

Managed mode — two wallet paths

Managed mode supports two mutually exclusive wallet paths:
User typewallet_typeeoa_addressWhat happens
No external walleteoa (default)omitParsec creates an embedded EOA wallet
External wallet (e.g. MetaMask)saferequiredParsec creates a Safe wallet owned by the external address
  • wallet_type: "safe" requires eoa_address — returns 400 without it.
  • Providing eoa_address with wallet_type: "eoa" returns 400 — external wallet users must use "safe".

Parameters

exchange
string
required
Exchange to onboard. polymarket or kalshi.
mode
string
required
managed or self.

Managed mode options

wallet_type
string
default:"eoa"
eoa (default) — Parsec creates an embedded EOA wallet. safe — Parsec creates a Safe wallet (requires eoa_address).
eoa_address
string
External wallet address (42-char hex, 0x-prefixed). Required when wallet_type: "safe". When provided, Parsec skips embedded EOA creation and uses this address as the Safe owner. Must not be provided when wallet_type: "eoa".
chain_id
number
default:"137"
Chain ID for Safe wallet creation. Defaults to Polygon (137). Only used with wallet_type: "safe".

Self mode — Polymarket

clob_api_key
string
Polymarket CLOB API key.
clob_api_secret
string
Polymarket CLOB API secret.
clob_api_passphrase
string
Polymarket CLOB API passphrase.
private_key
string
Your Ethereum private key (hex, 0x-prefixed). Enables order signing so you can place and cancel orders. Without it, only read operations (balance, positions) work.

Self mode — Kalshi

api_key_id
string
Kalshi API key ID.
private_key
string
Kalshi RSA private key (PEM format).

Response

exchange
string
The exchange that was onboarded.
mode
string
managed or self.
status
string
complete on success, or already_linked when managed Polymarket onboarding is re-run for an account that is already linked.
eoa_address
string | null
EOA wallet address. For managed EOA mode, this is the Parsec-created embedded wallet. For managed Safe mode, this is the external wallet address that owns the Safe.
safe_address
string | null
Safe wallet address. Present only when wallet_type: "safe".
linked_exchanges
string[]
All exchanges linked to this account.
steps_completed
string[]
Steps completed during this call (for idempotency transparency). Possible values:
  • wallet_eoa_created — Embedded EOA wallet created (managed EOA path)
  • external_eoa_provided — External wallet address accepted (managed Safe path)
  • wallet_safe_created — Safe wallet created (managed Safe path)
  • exchange_linked — CLOB credentials derived + approvals set (managed mode)
  • credentials_validated — Credentials validated (self Kalshi)
  • credentials_stored — Credentials stored (self mode) When status is already_linked, this list is empty.
curl -X POST "https://api.parsecapi.com/api/v1/onboard" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "exchange": "polymarket",
    "mode": "managed"
  }'
{
  "exchange": "polymarket",
  "mode": "managed",
  "status": "complete",
  "eoa_address": "0x1234567890abcdef1234567890abcdef12345678",
  "safe_address": null,
  "linked_exchanges": ["polymarket"],
  "steps_completed": ["wallet_eoa_created", "exchange_linked"]
}

Mode support matrix

ExchangeManagedSelf
PolymarketYesYes
KalshiNo (create account at kalshi.com)Yes