Skip to main content
Loading market data…
GET/api/v1/indicators/pi-cycleHobbyist tier+ · 30 req/min

Pi Cycle Top signal — 111-DMA vs 2× 350-DMA crossover.

Isolated Pi Cycle reading extracted from the aggregate cycle dashboard. Fires when the 111-day price SMA crosses above twice the 350-day SMA. Needs at least 350 daily samples — below that the signal is `available: false`.

Query parameters

All query parameters are optional unless marked required.

NameTypeRequiredDefaultDescription
assetstringoptionalBTC
Short alphabetic asset code.

Response shape

Always wrapped in the standard envelope. Nullable fields are explicitly marked — treat missing numeric data as a real data-source gap, not as an error.

data payloadtypescript
// Wrapped in the standard envelope:
// {
//   data: /* shape below */,
//   meta?: { total?: number; limit?: number; offset?: number; ... }
// }

{
  asset: string;
  signal: {
    key: "pi-cycle";
    name: string;
    description: string;
    thresholdLabel: string;
    unitLabel: string;
    state: {
      status: "accumulate" | "neutral" | "distribute" | "sell";
      current: number;
      threshold: number;
      score: 0 | 1 | 2 | 3;
    };
    available: boolean;
    unavailableReason?: "pro_metric" | "insufficient_data" | "no_data";
    sparkline: number[];
  } | null;
}

Example

Copy the curl, replace YOUR_KEY with a real key from your dashboard, and run.

Requestbash
curl -sS "http://localhost:3000/api/v1/indicators/pi-cycle"
Responsejson
{
  "data": {
    "asset": "BTC",
    "signal": {
      "key": "pi-cycle",
      "name": "Pi Cycle Top",
      "description": "111-DMA crossing above 2× 350-DMA — historic top marker.",
      "thresholdLabel": "111-DMA ≥ 2× 350-DMA",
      "unitLabel": "USD",
      "state": { "status": "neutral", "current": 54210, "threshold": 68400, "score": 1 },
      "available": true,
      "sparkline": [50120, 50890, 51420]
    }
  },
  "meta": { "total": 1, "asset": "BTC" }
}

Notes

  • Signal definition matches the `piCycleSignal` function in `cycle-signals.ts`.

Next

Check the error code reference, or get an API key to try the request against your own account.