Conventions
Auth, scopes, idempotency, errors and pagination.
Authentication
Authorization: Bearer wisp_sbx_…
Keys are sandbox keys in the format wisp_sbx_…, shown once at creation; only a hash and the first 13 characters are stored. Keys are server-side only: a browser request carrying a key is rejected with 403 origin_not_allowed.
Scopes
| Scope | Grants |
|---|---|
| read | Read squads, positions, trades, events, markets, webhooks. |
| squads:write | Deploy, pause, resume, retire, update policy, manage webhooks. |
| trade | Place orders and answer approvals. |
| spend | Reserved for live mode; can't be granted. |
Idempotency
Idempotency-Key is required on every POST and PATCH and stored for 24 hours. Retrying with the same key returns the original response; the same key with a different body returns 409 idempotency_conflict. Failed writes are not stored.
Errors
{
"error": { "code": "field_not_enforced", "message": "…", "details": { "enforced": ["…"] } },
"meta": { "requestId": "req_…" }
}
Codes are stable; see the Errors reference.
Pagination
List endpoints take limit (1–100, default 25) and cursor; pass next_cursor from the previous page until it is null.
Last updated October 11, 2026
Wisp runs in a sandbox today: paper trading on live market data. Experimental software, not financial advice.
