New here? The REST track is a gentler start. Requests target testnet (
https://api.testnet.arcus.xyz); new accounts start empty — fund yours with the Testnet Deposit button (~$1,000), or an on-chain deposit for more. See Authentication for signing.Step 1: Install
Only published libraries — no Arcus package required.Step 2: Get an API key
Your API key is an Ed25519 keypair; the server stores only the public half, and the key is registered to your wallet by a one-time REST call authenticated by an EIP-712 typed-data signature (eth_signTypedData_v4) — createApiKey is REST-only, so even socket-first clients register once over REST (the legacy EIP-191 scheme is deprecated but still accepted during the migration window). The Arcus web app does all of this for you and is the quickest way to get a key; you can also do it entirely in code.
Option A — Generate on the web app (recommended)
- Open the API Keys page — testnet, or mainnet for production — and connect the wallet you’ll trade from.
- Enter a name and click Generate. The app creates the keypair in your browser.
- Copy the API Signing Key now — it’s the private half, shown once, and cannot be recovered. Pick a Subaccount # (default
0) and Days Valid (up to 180), then click Authorize and confirm the signature in your wallet.
wallet.address; with a web-app key, use your wallet_address wherever you see it.
Option B — Generate in code
Generate a fresh keypair and register it with onecreateApiKey call — the same operation the web app performs:
Step 3: Place an order
Open the socket, then send signed requests correlated to their responses byid. Each order is signed as a typed payload whose ct equals the envelope timestamp — see Authentication for the scheme and field reference.
202 acknowledgement; the order’s lifecycle (fills, cancels) plays out on the orders and userFills channels. Which signing scheme each method and batch uses is covered in Authentication.
In the request body,
quantity and price stay decimal strings. The integer p/q in the signed payload are derived from them via tickSize / stepSize; the two must agree.Next: stream your fills
Subscribe to theuserFills and orders channels with your account address to stream your fills and order updates in real time.