A Strategy is the top-level container for a managed multi-asset basket. It groups all of a platform's Traders and Operations under a single quoted currency. You create a Strategy once, then run every enrollment, rebalance, and exit against its id.
Strategies are intentionally lightweight: a Strategy carries no allocations and no status of its own. Target weights are supplied per Operation, not stored on the Strategy. Per-Strategy statistics (enrolled users, holdings) are derived from the list endpoints.
For a conceptual overview see Portfolio Strategies, and for end-to-end integration steps see the Implementation Guide.
The Strategy resource
| Field | Type | Description |
|---|---|---|
id | string (UUID) | Server-generated. Reference this on every subsequent call. |
request_id | string (UUID) | Echoes the X-REQUEST-ID header from the create call. |
quoted_currency | string | Fiat currency the basket is priced in. v1: USD only. |
metadata | object | Optional, free-form JSON, persisted verbatim. |
created_at | string (ISO 8601) | Creation timestamp. |
updated_at | string (ISO 8601) | Last-update timestamp. |
Idempotency
Every mutation requires an X-REQUEST-ID header (UUID v4). Resubmitting the same value returns the existing resource rather than creating a new one, and zerohash echoes the same value back on the response. POST /strategies returns 201 on first create and 200 on an idempotent replay.
Endpoints
| Method | Path | Purpose |
|---|---|---|
POST | /strategies | Create a Strategy. |
GET | /strategies/{strategy_id} | Retrieve a single Strategy. |
GET | /strategies | List Strategies for the authenticated platform (paginated). |
Create a Strategy
POST /strategies
Request
{
"quoted_currency": "USD",
"metadata": { "platform_label": "Blue Chip Crypto" }
}Response (201 Created, or 200 on idempotent replay)
{
"id": "b1c2d3e4-f5a6-4789-bcde-f01234567890",
"request_id": "4b5ef19e-4ad5-4750-8bf6-3e5238b976ec",
"quoted_currency": "USD",
"metadata": { "platform_label": "Blue Chip Crypto" },
"created_at": "2026-04-17T10:00:00Z",
"updated_at": "2026-04-17T10:00:00Z"
}Get a Strategy
GET /strategies/{strategy_id} returns the Strategy, or 404 if it does not exist.
List Strategies
GET /strategies returns a paginated list of Strategies for the authenticated platform.
Pagination
All list endpoints share one envelope:
{
"page": 1,
"page_size": 50,
"total_pages": 5,
"count": 237,
"message": [ /* resource items */ ]
}Query parameters: page (default 1) and page_size (default 50).
Business rules
| Rule | Detail |
|---|---|
| Platform enabled | Requires is_strategy_rebalancing_enabled = true. |
| Server-assigned id | id is server-generated and cannot be supplied or overridden. |
| No allocations on the Strategy | The Strategy holds no weights. Allocations are supplied on each Operation. |
| Quoted currency | v1 supports USD only, and it must form a valid instrument with every asset traded. |
What's next
Once a Strategy exists, onboard users and manage positions through Operations, then track outcomes through Executions and Traders.