X-API-Key header to https://api.hyperprop.com/platform.
1. Choose your keys
Use two keys with different jobs. An organization can have two active keys at a time, which is also how you rotate without downtime.
A read-only key can call every
GET
endpoint and open the trading stream; anything that changes data returns
403 READ_ONLY_KEY. Each endpoint in the API reference lists which keys can
call it under Access. Add an IP allowlist
to both keys if your servers have fixed addresses.
API keys act for the whole organization: a full-access key can do everything
an admin can, and a read-only key can view everything. Keep role-based access
inside your CRM, and use team roles for people who
use the dashboard.
2. Map Hyperprop to your data model
Store Hyperprop IDs next to your own. To find records by your IDs instead, set
them on Hyperprop’s side:
customerIdon a trading account, then filter with?customerId=.- The trader’s external ID (
traderExternalIdwhen you create an account), then filter traders with?externalUserId=. - Free-form metadata on accounts, traders and purchases,
then filter with
?metadata=key:value.
3. Backfill with cursor pagination
Read each collection page by page withcursor. Cursors stay stable while
data changes underneath you, so a backfill never skips or repeats a record.
See pagination.
4. Keep it in sync in real time
After the backfill, apply changes as they happen. Two channels carry the same events with the same payloads; most CRMs use both.
Subscribe a webhook endpoint to the events your CRM models, for example
trader.created, account.created, account.status_changed,
account.passed, account.failed, purchase.created,
purchase.status_changed and account.payout_processed. Verify each
delivery’s signature, and make
applying an event idempotent: deliveries can repeat. See
deduplication.
For a live view, connect to the event stream with the read-only key:
X-API-Key header. A key in the URL is not
accepted, and the connection is refused with 400.
After a disconnect, reconnect with ?since=<ISO timestamp of the last event you applied> to receive what you missed, then live events resume. For live
positions, balances and fills per account, use the
real-time trading stream.
5. Reconcile on a schedule
Events tell you what changed; a periodic check proves nothing was missed.- Balances and account state:
GET /organization/balances?updatedSince=returns only accounts whose balance or state changed since theasOfof your previous call. Run it every few minutes. - New records: list trading accounts, traders and purchases with
startDateset to your last check and add anything you do not have. - Event history:
GET /organization/eventslists every event your organization produced, filterable byeventTypeandaccountId, so you can replay a gap. - End of day: after the trading day closes, read balances and fills for the day from the reconciliation endpoints for your books.
6. Write changes back safely
Send writes with the action key and anIdempotency-Key header. A retry with
the same key and body returns the original response instead of repeating the
change, so a timeout never creates two accounts or two payouts. See
idempotency.
crm-order-8814), so the same
order always maps to the same key.
7. Bring in billing and your team
- Invoices and credits: show what you owe Hyperprop next to your revenue. See Billing and invoices.
- Team: add and remove dashboard users and give them roles from your own admin screens. See Team and roles.
- Support: open and follow up on support tickets with
GET /organization/support/ticketsandPOST /organization/support/tickets.
Handle errors
Every error has the same body, andcode is the field to switch on. See
errors.
Rate limits
The Platform API has no general request-rate limit, so a backfill needs no throttling. A few endpoints have their own limits (live account reads, invoice PDFs and payment instructions, billing details updates and CSV exports); they answer429 with Retry-After. See rate limits.