Sync Alpaca to Notion, ClickUp, or Asana
Alpaca's API is straightforward once you know which key type to generate and what the positions endpoint actually gives you.
Getting a key
- In the Alpaca dashboard: API Keys → Generate New Key
- Make sure you're viewing your Live account, not Paper — the two have entirely separate keys, and a Paper key will connect fine but return fake positions
- Copy both the Key ID and Secret Key immediately — the secret is shown once
What the API returns
Auth is two headers, not Basic auth or a bearer token:
APCA-API-KEY-IDAPCA-API-SECRET-KEY
GET /v2/positions returns an array with, per holding, the symbol, quantity (qty, a string) and current price (current_price, also a string — both need parsing to numbers before you do any math on them). Alpaca is US-equities-only, so every position comes back USD-denominated; there's no currency field to read because there's only ever one currency.
Writing it to your workspace
The destination side is the same regardless of broker — Notion pages, Asana tasks, or ClickUp tasks, upserted by matching on the asset name so re-running the sync updates existing rows instead of duplicating them. If you're building this yourself, the field set that works well is Asset, Price, Quantity, Currency, and a computed Value — the same shape covered in the Notion portfolio tracker guide.
Or connect it directly
PortfolioSync handles the key generation walkthrough, the parsing, and the daily refresh — connect your Alpaca account and pick Notion, Asana, or ClickUp as the destination. It only ever calls Alpaca's read endpoints — there's no code path in it that can place an order, regardless of what permissions the key itself has.
Or skip the manual setup — PortfolioSync keeps this synced automatically, every morning.
Get started — €8.90/mo