Skip to content
SimicX

Getting Started

Pagination

Collection endpoints return JSON { data, pagination, meta } and accept limit and offset.

Response envelope

Shape

{
  "data": [ … ],
  "pagination": { "limit": 100, "offset": 0, "returned": 100,
                  "total": 142312, "has_more": true },
  "meta": { "alpha_id": "…", "run": "…" }
}

Continue paging whilst has_more is true. meta.run identifies the alpha that served the response; retain it when results must be reproducible. All responses are JSON.

limit accepts 1 to 5,000; anything outside that is a 400 bad_request naming the parameter and the constraint it broke. The default is 100 rows, except on /equity-curve, which defaults to 500. Collections have a fixed order — /v1/alphas newest first by started_at, /v1/me/keys newest first by created_at — so paging is stable without a sort parameter.

Paging example

import os, requests

BASE = "https://api.simicx.com"
ALPHA = "CausalHaarActivityDisplacement_0de63b8678a2_sp500pit_weekly_20260730t000858z_f358d1480d42"  # alpha_id from GET /v1/alphas
headers = {"Authorization": f"Bearer {os.environ['SIMICX_API_KEY']}"}

rows, offset = [], 0
while True:
    page = requests.get(
        f"{BASE}/v1/alphas/{ALPHA}/scores",
        params={"fields": "core", "limit": 1000, "offset": offset},
        headers=headers,
    ).json()
    rows.extend(page["data"])
    if not page["pagination"]["has_more"]:
        break
    offset += page["pagination"]["returned"]

Dates and addressing

from and to are inclusive trading days in YYYY-MM-DD. Rebalance dates are those returned by the rebalances index; a date that is not a rebalance yields 404. The path parameter {alpha} is the alpha_id returned by the catalogue.