Skip to main content

Overview

With self credentials, you provide your own exchange API keys and Parsec stores them securely. All subsequent API calls use these stored credentials — no per-request auth needed beyond your Parsec API key. Best for: Traders who already have exchange accounts and API keys.
Not sure which mode to use? Start with Trading Setup to compare self, managed, and per-request.
Your App ───► POST /onboard { mode: "self", credentials... } ───► Parsec stores credentials
         ───► POST /orders                                    ───► Parsec authenticates and routes

Step 1: Get your API key

Sign up at parsecapi.comSettings → copy your API key (pk_live_...).

Step 2: Onboard your exchange

Use POST /api/v1/onboard with mode: "self" to store your credentials.

Kalshi

Where to get these:
  1. Log in to kalshi.com → API settings → Generate new key pair
  2. Copy the Key ID and download the private key file (.pem)
curl -X POST "https://api.parsecapi.com/api/v1/onboard" \
  -H "X-API-Key: pk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "exchange": "kalshi",
    "mode": "self",
    "api_key_id": "your-kalshi-key-id",
    "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIE..."
  }'

Polymarket

Where to get these:
curl -X POST "https://api.parsecapi.com/api/v1/onboard" \
  -H "X-API-Key: pk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "exchange": "polymarket",
    "mode": "self",
    "clob_api_key": "your-clob-api-key",
    "clob_api_secret": "your-clob-api-secret",
    "clob_api_passphrase": "your-clob-passphrase",
    "private_key": "0xYourEthPrivateKey"
  }'
The private_key field is optional for Polymarket self mode. Including your Ethereum private key (0x-prefixed hex) enables order signing so you can place and cancel orders. Without it, only read operations (balance, positions) work.

Required fields by exchange

  • Kalshi: exchange, mode, api_key_id, and private_key
  • Polymarket: exchange, mode, clob_api_key, clob_api_secret, and clob_api_passphrase
  • Polymarket trading and order cancellation also need private_key for signing
Use the Onboard API reference for the full request schema.

Response

{
  "exchange": "kalshi",
  "mode": "self",
  "status": "complete",
  "eoa_address": null,
  "safe_address": null,
  "linked_exchanges": ["kalshi"],
  "steps_completed": ["credentials_validated", "credentials_stored"]
}
On success, status is complete, linked_exchanges shows the exchanges on your account, and steps_completed shows what happened during that call.

Step 3: Verify connectivity

curl -H "X-API-Key: pk_live_YOUR_KEY" \
  "https://api.parsecapi.com/api/v1/ping?exchange=kalshi"

Step 4: Place your first order

curl -X POST "https://api.parsecapi.com/api/v1/orders?exchange=kalshi" \
  -H "X-API-Key: pk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "market_id": "KXBTC-26FEB18",
    "outcome": "Yes",
    "side": "buy",
    "price": 0.65,
    "size": 10
  }'

What’s next?