LOCKED v1 CONTRACTx402 ProtocolPartner Bearer KeysBase (Chain ID 8453)

LOCKED v1 CONTRACT (Base Mainnet) - The public v1 matrix schema (schemaVersion 1.0.0) is frozen. Self-serve x402 settlement runs against Base mainnet.

MyPivots x402 Pay-Per-Call API Reference

Customer-facing integration guide and reference catalog for the MyPivots Daily Notes v1 Matrix API, supporting both self-serve x402 USDC micropayments and licensed partner Bearer API keys.

1. Overview & Getting Started

MyPivots provides high-precision pivot points, daily price bars, and technical indicators across futures, equities, cash indices, forex, and crypto. The Daily Notes v1 Matrix API provides programmatic access for licensed data partners, autonomous trading agents, backtesters, and financial tools.

Base URL
https://www.mypivots.com
Settlement Network
Base (Chain ID 8453)
Payment Asset
USDC (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913)
Payment & Auth Protocol
x402 (EIP-3009 USDC micropayments) & Licensed Partner Bearer Keys

Quick-Start Integration Flow

  1. Choose your symbols using canonical namespaced identifiers (fut:, stk:, idx:, fx:, crypto:) and your target ISO-8601 dates (YYYY-MM-DD), up to 100 cells (symbols × dates <= 100) per call.
  2. Licensed Partners: send POST /api/v1/dailynotes/query with Authorization: Bearer mp_live_<keyId>_<secret> to receive the HTTP 200 matrix response immediately.
  3. Self-Serve x402 Agents: send POST /api/v1/dailynotes/query without payment headers to receive an HTTP 402 challenge quoting totalAtomic and disclosing any partialCells, then retry the same POST with X-PAYMENT: <base64> signed for totalAtomic.
  4. Parse the deterministic cells[] array (returned in exact symbols × dates request order), branching on cell.status ("full" | "partial" | "missing").

Standard Public Symbol Namespaces

PrefixAsset ClassFormat & NotesExamples
fut:FuturesFutures contracts in compact root + expiry month code + 2-digit year format (no space in the query ID; display ticker in data.ticker includes a space, e.g. "NQ Z26").fut:NQZ26, fut:ESZ26, fut:CLF27
stk:Stocks & ETFsUS equities and exchange-traded funds (ETFs).stk:AAPL, stk:SPY, stk:MSFT
idx:Cash IndicesCash market indices.idx:SP500, idx:VIX, idx:DJI
fx:Forex & MetalsSpot foreign exchange currency pairs and precious metals.fx:EURUSD, fx:USDJPY, fx:XAUUSD
crypto:CryptoCryptocurrency spot pairs.crypto:BTCUSD, crypto:ETHUSD

2. Authentication (Self-Serve x402 & Licensed Partner Keys)

Dual authentication support: (1) Self-serve HTTP-native x402 micropayments via EIP-3009 USDC transfer authorizations (no account required), and (2) Licensed partner Bearer API keys (Authorization: Bearer mp_live_...) under a commercial agreement.

(a) Self-Serve x402 MicropaymentsPay Per Call
HTTP 402 Challenge & Upfront Quote

Send a POST /api/v1/dailynotes/query request without an X-PAYMENT header to receive an HTTP 402 Payment Required challenge. The challenge quotes the exact atomic USDC amount (maxAmountRequired = totalAtomic) for all billable cells in accepts[0], includes the billing breakdown (missing cells are free), and discloses any partial warm-up cells in partialCells before you sign payment. If every requested cell resolves to status "missing" (0 billable cells), the endpoint returns HTTP 200 OK immediately without requiring payment.

X-PAYMENT Header

To fulfill the challenge, construct an x402 payment payload containing an EIP-3009 transferWithAuthorization signature for the quoted USDC amount on the specified network, base64-encode the JSON payload, and resend the identical POST request with the X-PAYMENT: <base64> header.

Facilitator Settlement & Receipt

The server verifies and settles the authorization via the x402 facilitator. Upon settlement, the endpoint returns HTTP 200 OK with the requested matrix cells, X-ENTITLEMENT: granted, and a base64-encoded X-PAYMENT-RESPONSE header containing the on-chain settlement receipt and transaction hash.

Entitlement Re-Download Semantics

Paid entitlements are recorded per (payerWallet, symbol, tradingDate). When the same wallet re-requests previously purchased cells with an X-PAYMENT header identifying that wallet, already-entitled cells are not charged again: if all requested billable cells are already entitled, the response returns immediately with X-ENTITLEMENT: active and the latest payload (including any subsequent data corrections); if a batch mixes entitled and new cells, only the unentitled delta is charged.

(b) Licensed Partners — Bearer API KeysBearer Auth
Bearer API Key Usage

Licensed data partners authenticate by sending an HTTP Authorization header with their assigned Bearer key: Authorization: Bearer mp_live_<keyId>_<secret>. Active keys with the daily-notes:read scope bypass the HTTP 402 payment flow and receive HTTP 200 OK with X-ENTITLEMENT: partner. If a key is missing, malformed, revoked, past its rotation grace period, or sent from an IP outside its configured allowlist, the middleware logs the event and falls through to the standard x402 challenge.

Rate Limits & 429 / Retry-After Behavior

Each partner API key enforces a sliding-window rate limit (default 60 requests per minute, or the custom limit negotiated in the partner agreement). Requests exceeding the per-key limit receive HTTP 429 Too Many Requests with a Retry-After header specifying the number of seconds to wait before retrying.

Key Rotation Expectations

Partner keys can be rotated with a configurable grace window. During the grace period, both the newly issued key and the retiring key remain active so partner integrations can roll over credentials with zero downtime. Raw keys are displayed once at issuance or rotation and only their SHA-256 hash is stored.

IP Allowlist Option

Partner keys support an optional comma-separated IPv4/IPv6 address or CIDR allowlist (for example, 203.0.113.0/24,198.51.100.10). When an IP allowlist is configured on a key, requests must originate from an allowlisted address.

3. Per-Cell Pricing, Warm-Up Rule & Batch Pagination

FLAT $0.01 / CELL

Flat per-cell pricing ($0.01 = 10,000 atomic USDC) for self-serve x402 calls. Every resolved cell with status "full" or "partial" bills at $0.01 USDC; cells with status "missing" (unknown symbol or date prior to symbol inception) are free ($0.00).

Pricing Formula & Cell Definition
Requested Cells = count(symbols) × count(dates) <= 100 | Total Atomic = Billable Cells × 10000
All monetary amounts (pricePerCellAtomic, totalAtomic, maxAmountRequired) are represented as exact integer strings in 6-decimal atomic USDC units.

Warm-Up / Partial Cell Rule

A cell requires at least 200 historical trading bars to compute every indicator (such as the 200-day SMA) and receive status: "full". When a symbol has between 1 and 199 trading bars on or before the requested date (for example, a newly listed futures contract or recent IPO), the cell is returned with status: "partial", a coverage block ({ barsAvailable, firstAvailableDate }), and null for only those higher-order indicators whose lookback window exceeds barsAvailable. Before you pay, the HTTP 402 challenge discloses all partial cells in partialCells (including perSymbolCounts, barsAvailable, and the exact nullIndicators list).

100-Cell Batch Cap & Pagination Guidance

Each POST /api/v1/dailynotes/query call accepts at most 100 cells (symbols.length × dates.length <= 100). Requests exceeding 100 cells are rejected with HTTP 400 before payment. Bulk and backtest callers should partition larger date ranges or symbol universes into chunks of <= 100 cells per request (for example, 5 symbols × 20 trading dates per page, or 1 symbol × 100 trading dates per page) and iterate sequentially or in parallel within rate limits.

Licensed Partner Access

Organizations seeking flat-rate commercial access, high-throughput rate limits, or enterprise data licensing can provision a Partner Bearer API key under a negotiated Data Licensing Agreement. License terms are tailored to usage volume and integration scope — please reach out via the Contact Us page (/help/contact) or email [email protected] for partner licensing inquiries.

Cell Pricing Schedule

TierBatch Limit (Cells)Rate TypePrice / Cell (USD)Price / Cell (Atomic micro-USDC)
Standard Billable Cell (Full or Partial)1 – 100 cellsFlat Rate$0.01010,000 units

Worked Pricing Examples

Single Symbol × Single Date (1x1 Query)1 billable cell

Single lookup: fetch complete Daily Notes for fut:NQZ26 on 2026-09-24.

Symbols × Dates
1 sym × 1 dates
Per-Cell Rate
$0.010
Total Quoted Cost
$0.010 USDC
maxAmountRequired
10000
1 symbol × 1 date = 1 full cell. Billed at flat rate of $0.010 USDC (10,000 atomic USDC units).
Mixed Matrix (Full + Partial + Free Missing Cell)2 billable cells

Mixed matrix: query fut:NQZ26 (full), stk:NEWCO (partial warm-up), and stk:UNKNOWN (missing).

Symbols × Dates
3 sym × 1 dates
Per-Cell Rate
$0.010
Total Quoted Cost
$0.020 USDC
maxAmountRequired
20000
3 symbols × 1 date = 3 requested cells (1 full, 1 partial, 1 missing). Missing cells are free, so billableCells = 2. Total = 2 × $0.010 = $0.020 USDC (20,000 atomic USDC units).
Maximum 100-Cell Batch Page (5 Symbols × 20 Dates)100 billable cells

Maximum batch page: fetch 20 trading days across 5 symbols in a single 100-cell request.

Symbols × Dates
5 sym × 20 dates
Per-Cell Rate
$0.010
Total Quoted Cost
$1.000 USDC
maxAmountRequired
1000000
5 symbols × 20 trading dates = 100 billable cells (at the 100-cell per-request cap). Total = 100 × $0.010 = $1.000 USDC (1,000,000 atomic USDC units). For longer horizons, paginate in 20-date slices.

4. API Endpoints

Reference documentation for the locked v1 Daily Notes matrix endpoint. OpenAPI 3 specification available at /api/openapi.json.

POST/api/v1/dailynotes/query

Query Daily Notes Matrix (OHLCV, Pivot Points, Moving Averages, Stats & Oscillators)

Executes a matrix query across requested namespaced symbols and calendar dates (symbols × dates, up to 100 cells per call). Each cell resolves non-trading days to the nearest prior trading day and returns OHLCV bars, Classic/Woodie/Camarilla/DeMark pivot points (daily & weekly), Fibonacci extensions and retracements, Fisher pivots, Toby Crabel patterns, 6 moving averages (SMA 5–200), 8 volatility/range windows (5–120d), trend indicators (ADX, Ichimoku), oscillators (RSI, MACD, Stochastic, StochRSI, CCI, ROC, Williams %R, Ultimate Oscillator, Bull/Bear Power), volatility/volume metrics (Bollinger Bands, ATR %, Historical Volatility, Relative Volume, 52-Week High/Low, multi-window Performance), and a composite Technical Summary.

Per-Cell Billing & Entitlements:LOCKED v1
Flat per-cell pricing ($0.01 = 10,000 atomic USDC per billable cell) for self-serve x402 calls. Cells with status "full" or "partial" bill at the flat rate; "missing" cells (unknown symbol or date prior to first bar) are free (0 atomic USDC). Licensed partners authenticate via Bearer API key under a negotiated agreement.
billableCells = count(status === "full" || status === "partial") | totalAtomic = billableCells × 10000
Returning wallets re-downloading previously purchased (symbol, tradingDate) cells are not charged again and receive the latest cached payload with X-ENTITLEMENT: active.

Request Body Fields (JSON)

FieldTypeRequirementDescriptionExample
datesstring[] (YYYY-MM-DD)RequiredNon-empty array of ISO-8601 calendar dates (YYYY-MM-DD). Non-trading days resolve backward to the nearest prior trading session (reported in tradingDate).["2026-09-23", "2026-09-24"]
symbolsstring[]RequiredNon-empty array of namespaced public symbol IDs matching ^[a-z]+:[A-Za-z0-9_.-]+$ (e.g. fut:NQZ26, stk:AAPL, idx:VIX, fx:EURUSD, crypto:BTCUSD). Total cells (symbols.length × dates.length) must not exceed 100.["fut:NQZ26", "stk:AAPL"]

HTTP Headers

Header NameScopeDescriptionExample
AuthorizationRequestLicensed partner Bearer API key (mp_live_<8-hex-id>_<secret>). When valid and active, skips the x402 payment flow and returns X-ENTITLEMENT: partner.Bearer mp_live_a1b2c3d4_0123456789abcdef0123456789abcdef0123456789abcdef
Retry-AfterResponseReturned on HTTP 429 Too Many Requests responses; specifies the number of seconds to wait before retrying.60
X-ENTITLEMENTResponseIndicates entitlement status on 200 responses: "granted" for newly settled x402 payments, "active" for free re-downloads by an already-entitled wallet, or "partner" for licensed Bearer API key requests.granted
X-PAYMENTRequestBase64-encoded x402 payment authorization payload fulfilling the HTTP 402 challenge requirements.eyJ4NDA...base64
X-PAYMENT-RESPONSEResponseBase64-encoded on-chain facilitator settlement receipt returned on successful x402 payment verification or entitlement re-download.eyJzdWNj...base64

Sample 402 Payment Challenge

HTTP 402 Payment Required

Challenge returned with HTTP 402 when an unpaid request is received. Discloses exact billing totals (missing cells excluded) and a partialCells summary listing per-symbol counts, available bars, and which indicators will be null before the buyer pays.

Request: POST /api/v1/dailynotes/query
{
  "accepts": [
    {
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "description": "Access to MyPivots Daily Notes data",
      "extra": {
        "name": "USD Coin",
        "version": "2"
      },
      "maxAmountRequired": "20000",
      "maxTimeoutSeconds": 60,
      "mimeType": "application/json",
      "network": "base",
      "payTo": "0x6eee1521fed0f44b3af264c0d7818693cba7de28",
      "resource": "https://www.mypivots.com/api/v1/dailynotes/query",
      "scheme": "exact"
    }
  ],
  "billing": {
    "billableCells": 2,
    "freeCells": 1,
    "pricePerCellAtomic": "10000",
    "totalAtomic": "20000"
  },
  "error": "X-PAYMENT header is required",
  "partialCells": {
    "cells": [
      {
        "barsAvailable": 45,
        "dateRequested": "2026-09-24",
        "firstAvailableDate": "2026-07-20",
        "nullIndicators": [
          "movingAverages.ma50",
          "movingAverages.ma100",
          "movingAverages.ma200",
          "stats.60d",
          "stats.80d",
          "stats.100d",
          "stats.120d",
          "performance.d63",
          "ichimoku",
          "performance.d126"
        ],
        "symbol": "stk:NEWCO",
        "tradingDate": "2026-09-24"
      }
    ],
    "perSymbolCounts": {
      "stk:NEWCO": 1
    },
    "totalPartialCells": 1
  },
  "x402Version": 1
}

Response Schema (DailyNotesQueryResponse)

Locked v1 matrix response envelope containing schemaVersion, atomic-USDC billing breakdown, and ordered cells array (symbols × dates).

FieldTypeDescription
billingDailyNotesBillingAudits the micropayment settlement: pricePerCellAtomic ("10000"), billableCells, freeCells, and totalAtomic.
cellsDailyNoteCell[]Cells returned in exact request order (symbols × dates), discriminated by status ("full" | "partial" | "missing").
schemaVersionstringSemantic version of the public v1 data contract (e.g. "1.0.0").

TypeScript Type Definitions

DailyNotesQueryRequestRequest JSON body accepted by POST /api/v1/dailynotes/query.
export interface DailyNotesQueryRequest {
  /**
   * Non-empty array of ISO calendar dates (YYYY-MM-DD).
   */
  readonly dates: readonly string[];

  /**
   * Non-empty array of namespaced public symbol IDs (e.g. 'fut:NQZ26', 'stk:AAPL').
   * Total cells (symbols.length * dates.length) must not exceed 100.
   */
  readonly symbols: readonly string[];
}
DailyNotesQueryResponseLocked v1 HTTP 200 matrix response payload returned by POST /api/v1/dailynotes/query.
export interface DailyNotesQueryResponse {
  readonly billing: DailyNotesBilling;
  readonly cells: readonly DailyNoteCell[];
  readonly schemaVersion: string;
}

export type DailyNoteCell =
  | DailyNoteFullCell
  | DailyNotePartialCell
  | DailyNoteMissingCell;

export interface DailyNoteFullCell {
  readonly data: DailyNoteData;
  readonly dateRequested: string;
  readonly status: 'full';
  readonly symbol: string;
  readonly tradingDate: string;
}

export interface DailyNotePartialCell {
  readonly coverage: {
    readonly barsAvailable: number;
    readonly firstAvailableDate: string;
  };
  readonly data: DailyNoteData;
  readonly dateRequested: string;
  readonly status: 'partial';
  readonly symbol: string;
  readonly tradingDate: string;
}

export interface DailyNoteMissingCell {
  readonly data: null;
  readonly dateRequested: string;
  readonly reason: string;
  readonly status: 'missing';
  readonly symbol: string;
  readonly tradingDate: string | null;
}
DailyNotesBillingBilling breakdown included in both HTTP 402 challenges and HTTP 200 responses.
export interface DailyNotesBilling {
  /**
   * Count of served cells with status 'full' or 'partial'.
   */
  readonly billableCells: number;

  /**
   * Count of served cells with status 'missing' (billed at 0 atomic USDC).
   */
  readonly freeCells: number;

  /**
   * Flat per-cell price in atomic USDC ('10000' = $0.01 USDC).
   */
  readonly pricePerCellAtomic: string;

  /**
   * Exact integer string: billableCells * pricePerCellAtomic.
   */
  readonly totalAtomic: string;
}
X402PaymentChallengeHTTP 402 challenge response structure with upfront billing and partial-cell disclosure.
export interface X402PaymentChallenge {
  readonly accepts: readonly X402PaymentRequirement[];
  readonly billing: DailyNotesBilling;
  readonly error: string;
  readonly partialCells: {
    readonly cells: readonly {
      readonly barsAvailable: number;
      readonly dateRequested: string;
      readonly firstAvailableDate: string;
      readonly nullIndicators: readonly string[];
      readonly symbol: string;
      readonly tradingDate: string;
    }[];
    readonly perSymbolCounts: Record<string, number>;
    readonly totalPartialCells: number;
  };
  readonly x402Version: number;
}

Example Request & Response

cURL Request (POST Matrix Query with x402 Payment Authorization)
Self-serve x402 request querying a 3×1 matrix with one full symbol (fut:NQZ26), one warm-up partial symbol (stk:NEWCO), and one unknown symbol (stk:UNKNOWN). Only the 2 billable cells are charged ($0.02 = 20,000 atomic USDC).
curl -X POST "https://www.mypivots.com/api/v1/dailynotes/query" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-PAYMENT: <base64-encoded-payment-authorization>" \
  -d '{
  "dates": [
    "2026-09-24"
  ],
  "symbols": [
    "fut:NQZ26",
    "stk:NEWCO",
    "stk:UNKNOWN"
  ]
}'
cURL Request (POST Matrix Query with Licensed Partner Bearer Key)
Licensed partner request using a Bearer API key. Skips the HTTP 402 payment flow and returns HTTP 200 OK with X-ENTITLEMENT: partner.
curl -X POST "https://www.mypivots.com/api/v1/dailynotes/query" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer mp_live_a1b2c3d4_<partner-secret>" \
  -H "Content-Type: application/json" \
  -d '{
  "dates": [
    "2026-09-24"
  ],
  "symbols": [
    "fut:NQZ26",
    "stk:NEWCO",
    "stk:UNKNOWN"
  ]
}'
HTTP 200 OK Matrix Response
Status 200
Response Headers
Content-Type: application/json
X-ENTITLEMENT: granted
X-PAYMENT-RESPONSE: eyJzdWNjZXNzIjp0cnVlLCJ0cmFuc2FjdGlvbkhhc2giOiIweD..."
{
  "billing": {
    "billableCells": 2,
    "freeCells": 1,
    "pricePerCellAtomic": "10000",
    "totalAtomic": "20000"
  },
  "cells": [
    {
      "data": {
        "adx": {
          "adx": 28.4,
          "dx": 31.2,
          "minusDi": 14.1,
          "params": {
            "period": 14
          },
          "plusDi": 26.8
        },
        "atrPercent": {
          "params": {
            "period": 14
          },
          "value": 1.18
        },
        "bollingerBands": {
          "bandwidth": 3.62,
          "lower": 19550,
          "middle": 19910.25,
          "params": {
            "multiplier": 2,
            "period": 20
          },
          "upper": 20270.5
        },
        "bullBearPower": {
          "bearPower": 45.5,
          "bullPower": 235.75,
          "params": {
            "period": 13
          }
        },
        "cci": {
          "params": {
            "period": 20
          },
          "value": 112.4
        },
        "crabel": [
          {
            "pattern": "NR",
            "value": true
          },
          {
            "pattern": "NR4",
            "value": false
          },
          {
            "pattern": "NR5",
            "value": false
          },
          {
            "pattern": "NR7",
            "value": false
          },
          {
            "pattern": "WS",
            "value": false
          },
          {
            "pattern": "WS4",
            "value": false
          },
          {
            "pattern": "WS5",
            "value": false
          },
          {
            "pattern": "WS7",
            "value": false
          },
          {
            "pattern": "ID",
            "value": false
          },
          {
            "pattern": "OD",
            "value": false
          },
          {
            "pattern": "IDnr4",
            "value": false
          },
          {
            "pattern": "2BNR",
            "value": false
          },
          {
            "pattern": "3BNR",
            "value": false
          },
          {
            "pattern": "4BNR",
            "value": false
          },
          {
            "pattern": "8BNR",
            "value": false
          },
          {
            "pattern": "Bear Hook",
            "value": false
          },
          {
            "pattern": "Bull Hook",
            "value": false
          },
          {
            "pattern": "Stretch",
            "stretchValue": 68.25,
            "value": true
          }
        ],
        "fibonacci": [
          {
            "level": "4.250",
            "type": "extension",
            "value": 21089.63
          },
          {
            "level": "2.618",
            "type": "extension",
            "value": 20779.44
          },
          {
            "level": "1.618",
            "type": "extension",
            "value": 20588.68
          },
          {
            "level": "1.000",
            "type": "extension",
            "value": 20471
          },
          {
            "level": "0.618",
            "type": "extension",
            "value": 20398.24
          },
          {
            "level": "HIGH",
            "type": "high",
            "value": 20280.5
          },
          {
            "level": "0.618",
            "type": "retracement",
            "value": 20207.74
          },
          {
            "level": "0.500",
            "type": "retracement",
            "value": 20185.25
          },
          {
            "level": "0.382",
            "type": "retracement",
            "value": 20162.76
          },
          {
            "level": "LOW",
            "type": "low",
            "value": 20090
          },
          {
            "level": "0.618",
            "type": "extension",
            "value": 19972.26
          },
          {
            "level": "1.000",
            "type": "extension",
            "value": 19899.5
          },
          {
            "level": "1.618",
            "type": "extension",
            "value": 19781.82
          },
          {
            "level": "2.618",
            "type": "extension",
            "value": 19591.06
          },
          {
            "level": "4.250",
            "type": "extension",
            "value": 19280.88
          }
        ],
        "fibonacciRetracements": {
          "level236": 20124.25,
          "level382": 19815.5,
          "level500": 19565,
          "level618": 19314.5,
          "level786": 18958,
          "params": {
            "period": 252
          }
        },
        "fiftyTwoWeekHighLow": {
          "high": 20650,
          "highDistancePercent": -1.96,
          "low": 18480,
          "lowDistancePercent": 9.55,
          "params": {
            "period": 252
          }
        },
        "fisher": [
          {
            "level": "R1",
            "oneDay": 20261,
            "threeDay": 20310.5
          },
          {
            "level": "PP",
            "oneDay": 20205.42,
            "threeDay": 20220.15
          },
          {
            "level": "S1",
            "oneDay": 20149.83,
            "threeDay": 20129.8
          }
        ],
        "generatedAt": "2026-09-24T20:00:00.000Z",
        "historicalVolatility": {
          "params": {
            "annualizationFactor": 252,
            "period": 30
          },
          "value": 18.45
        },
        "ichimoku": {
          "chikouSpan": 20245.75,
          "kijunSen": 19980,
          "params": {
            "basePeriod": 26,
            "conversionPeriod": 9,
            "spanBPeriod": 52
          },
          "senkouSpanA": 20055.25,
          "senkouSpanB": 19720,
          "tenkanSen": 20130.5
        },
        "macd": {
          "histogram": 6.7,
          "macd": 45.2,
          "params": {
            "fastPeriod": 12,
            "signalPeriod": 9,
            "slowPeriod": 26
          },
          "signal": 38.5
        },
        "movingAverages": [
          {
            "diff": 125.25,
            "diffPercent": 0.62,
            "period": 5,
            "signal": "above",
            "value": 20120.5
          },
          {
            "diff": 200.75,
            "diffPercent": 1,
            "period": 10,
            "signal": "above",
            "value": 20045
          },
          {
            "diff": 335.5,
            "diffPercent": 1.68,
            "period": 20,
            "signal": "above",
            "value": 19910.25
          },
          {
            "diff": 595.75,
            "diffPercent": 3.03,
            "period": 50,
            "signal": "above",
            "value": 19650
          },
          {
            "diff": 1045,
            "diffPercent": 5.44,
            "period": 100,
            "signal": "above",
            "value": 19200.75
          },
          {
            "diff": 1795.25,
            "diffPercent": 9.73,
            "period": 200,
            "signal": "above",
            "value": 18450.5
          }
        ],
        "ohlcv": {
          "close": 20245.75,
          "high": 20280.5,
          "low": 20090,
          "open": 20150.25,
          "volume": 482150
        },
        "performance": {
          "d126": 6.45,
          "d21": 2.15,
          "d252": 11.8,
          "d63": 4.12,
          "ytd": 8.9
        },
        "pivotPoints": {
          "daily": {
            "levels": [
              {
                "camarilla": 20350.53,
                "classic": 20526.75,
                "demark": null,
                "name": "R4",
                "woodie": 20526.75
              },
              {
                "camarilla": 20298.14,
                "classic": 20431.5,
                "demark": null,
                "name": "R3",
                "woodie": 20381.25
              },
              {
                "camarilla": 20263.21,
                "classic": 20336.25,
                "demark": null,
                "name": "R2",
                "woodie": 20336.25
              },
              {
                "camarilla": 20245.75,
                "classic": 20291,
                "demark": 20291,
                "name": "R1",
                "woodie": 20291
              },
              {
                "camarilla": 20205.42,
                "classic": 20205.42,
                "demark": 20205.42,
                "name": "PP",
                "woodie": 20205.42
              },
              {
                "camarilla": 20210.79,
                "classic": 20145.5,
                "demark": 20145.5,
                "name": "S1",
                "woodie": 20145.5
              },
              {
                "camarilla": 20193.32,
                "classic": 20074.58,
                "demark": null,
                "name": "S2",
                "woodie": 20074.58
              },
              {
                "camarilla": 20158.39,
                "classic": 19979.33,
                "demark": null,
                "name": "S3",
                "woodie": 19929.08
              },
              {
                "camarilla": 20106,
                "classic": 19884.08,
                "demark": null,
                "name": "S4",
                "woodie": 19884.08
              }
            ]
          },
          "weekly": {
            "levels": [
              {
                "camarilla": 20410,
                "classic": 20600,
                "demark": null,
                "name": "R4",
                "woodie": 20600
              },
              {
                "camarilla": 20360,
                "classic": 20500,
                "demark": null,
                "name": "R3",
                "woodie": 20450
              },
              {
                "camarilla": 20310,
                "classic": 20400,
                "demark": null,
                "name": "R2",
                "woodie": 20400
              },
              {
                "camarilla": 20260,
                "classic": 20350,
                "demark": 20350,
                "name": "R1",
                "woodie": 20350
              },
              {
                "camarilla": 20220,
                "classic": 20220,
                "demark": 20220,
                "name": "PP",
                "woodie": 20220
              },
              {
                "camarilla": 20180,
                "classic": 20120,
                "demark": 20120,
                "name": "S1",
                "woodie": 20120
              },
              {
                "camarilla": 20130,
                "classic": 20040,
                "demark": null,
                "name": "S2",
                "woodie": 20040
              },
              {
                "camarilla": 20080,
                "classic": 19940,
                "demark": null,
                "name": "S3",
                "woodie": 19890
              },
              {
                "camarilla": 20030,
                "classic": 19840,
                "demark": null,
                "name": "S4",
                "woodie": 19840
              }
            ]
          }
        },
        "relativeVolume": {
          "averageVolume": 470500,
          "params": {
            "period": 20
          },
          "relativeVolume": 1.02
        },
        "roc": {
          "params": {
            "period": 12
          },
          "value": 1.85
        },
        "rsi": {
          "params": {
            "period": 14
          },
          "value": 64.25
        },
        "stats": [
          {
            "averageRange": 210.5,
            "averageRangePercent": 1.04,
            "averageVolume": 450000,
            "closePercent": 81.5,
            "days": 5,
            "high": 20280.5,
            "low": 19930.25,
            "newHigh": true,
            "newLow": false,
            "range": 350.25,
            "rangePercent": 1.73
          },
          {
            "averageRange": 225,
            "averageRangePercent": 1.11,
            "averageVolume": 462000,
            "closePercent": 75.2,
            "days": 10,
            "high": 20280.5,
            "low": 19800.5,
            "newHigh": true,
            "newLow": false,
            "range": 480,
            "rangePercent": 2.37
          },
          {
            "averageRange": 230.1,
            "averageRangePercent": 1.14,
            "averageVolume": 470500,
            "closePercent": 68.4,
            "days": 20,
            "high": 20280.5,
            "low": 19560,
            "newHigh": true,
            "newLow": false,
            "range": 720.5,
            "rangePercent": 3.56
          },
          {
            "averageRange": 240.5,
            "averageRangePercent": 1.19,
            "averageVolume": 465000,
            "closePercent": 62.1,
            "days": 40,
            "high": 20450,
            "low": 19300,
            "newHigh": false,
            "newLow": false,
            "range": 1150,
            "rangePercent": 5.68
          },
          {
            "averageRange": 245,
            "averageRangePercent": 1.21,
            "averageVolume": 472000,
            "closePercent": 59.8,
            "days": 60,
            "high": 20500,
            "low": 19079.75,
            "newHigh": false,
            "newLow": false,
            "range": 1420.25,
            "rangePercent": 7.02
          },
          {
            "averageRange": 248.2,
            "averageRangePercent": 1.23,
            "averageVolume": 478000,
            "closePercent": 55.4,
            "days": 80,
            "high": 20550,
            "low": 18900,
            "newHigh": false,
            "newLow": false,
            "range": 1650,
            "rangePercent": 8.15
          },
          {
            "averageRange": 252,
            "averageRangePercent": 1.24,
            "averageVolume": 481000,
            "closePercent": 52.3,
            "days": 100,
            "high": 20600,
            "low": 18709.5,
            "newHigh": false,
            "newLow": false,
            "range": 1890.5,
            "rangePercent": 9.34
          },
          {
            "averageRange": 255.4,
            "averageRangePercent": 1.26,
            "averageVolume": 485000,
            "closePercent": 49.8,
            "days": 120,
            "high": 20650,
            "low": 18550,
            "newHigh": false,
            "newLow": false,
            "range": 2100,
            "rangePercent": 10.37
          }
        ],
        "stochastic": {
          "d": 78.5,
          "k": 82.1,
          "params": {
            "dPeriod": 3,
            "kPeriod": 14
          }
        },
        "stochRsi": {
          "d": 68.2,
          "k": 72.4,
          "params": {
            "dPeriod": 3,
            "kPeriod": 3,
            "rsiPeriod": 14,
            "stochPeriod": 14
          }
        },
        "technicalSummary": {
          "groups": {
            "movingAverages": {
              "counted": 6,
              "score": 1,
              "verdict": "Strong Buy"
            },
            "oscillators": {
              "counted": 9,
              "score": 0.33,
              "verdict": "Buy"
            },
            "priceLevels": {
              "counted": 2,
              "score": 0.5,
              "verdict": "Buy"
            },
            "trend": {
              "counted": 2,
              "score": 1,
              "verdict": "Strong Buy"
            }
          },
          "methodologyVersion": "1.0",
          "overall": {
            "counted": 19,
            "score": 0.63,
            "verdict": "Strong Buy"
          },
          "signals": {
            "adx": 1,
            "bullBearPower": 1,
            "cci": 1,
            "crabel": 0,
            "ichimoku": 1,
            "ma10": 1,
            "ma100": 1,
            "ma20": 1,
            "ma200": 1,
            "ma5": 1,
            "ma50": 1,
            "macd": 1,
            "pivotPosition": 1,
            "roc": 1,
            "rsi": 0,
            "stochastic": 0,
            "stochRsi": 0,
            "ultimateOscillator": 0,
            "williamsR": 0
          }
        },
        "ticker": "NQ Z26",
        "ultimateOscillator": {
          "params": {
            "longPeriod": 28,
            "mediumPeriod": 14,
            "shortPeriod": 7
          },
          "value": 58.6
        },
        "williamsR": {
          "params": {
            "period": 14
          },
          "value": -17.9
        }
      },
      "dateRequested": "2026-09-24",
      "status": "full",
      "symbol": "fut:NQZ26",
      "tradingDate": "2026-09-24"
    },
    {
      "coverage": {
        "barsAvailable": 45,
        "firstAvailableDate": "2026-07-20"
      },
      "data": {
        "adx": {
          "adx": 24.1,
          "dx": 26.5,
          "minusDi": 15,
          "params": {
            "period": 14
          },
          "plusDi": 25.2
        },
        "atrPercent": {
          "params": {
            "period": 14
          },
          "value": 3.65
        },
        "bollingerBands": {
          "bandwidth": 14.2,
          "lower": 37.35,
          "middle": 40.2,
          "params": {
            "multiplier": 2,
            "period": 20
          },
          "upper": 43.05
        },
        "bullBearPower": {
          "bearPower": 0.65,
          "bullPower": 2.95,
          "params": {
            "period": 13
          }
        },
        "cci": {
          "params": {
            "period": 20
          },
          "value": 134.8
        },
        "crabel": [
          {
            "pattern": "NR",
            "value": false
          },
          {
            "pattern": "NR4",
            "value": false
          },
          {
            "pattern": "NR5",
            "value": false
          },
          {
            "pattern": "NR7",
            "value": false
          },
          {
            "pattern": "WS",
            "value": true
          },
          {
            "pattern": "WS4",
            "value": true
          },
          {
            "pattern": "WS5",
            "value": false
          },
          {
            "pattern": "WS7",
            "value": false
          },
          {
            "pattern": "ID",
            "value": false
          },
          {
            "pattern": "OD",
            "value": false
          },
          {
            "pattern": "IDnr4",
            "value": false
          },
          {
            "pattern": "2BNR",
            "value": false
          },
          {
            "pattern": "3BNR",
            "value": false
          },
          {
            "pattern": "4BNR",
            "value": false
          },
          {
            "pattern": "8BNR",
            "value": false
          },
          {
            "pattern": "Bear Hook",
            "value": false
          },
          {
            "pattern": "Bull Hook",
            "value": false
          },
          {
            "pattern": "Stretch",
            "stretchValue": 0.85,
            "value": true
          }
        ],
        "fibonacci": [
          {
            "level": "4.250",
            "type": "extension",
            "value": 53.88
          },
          {
            "level": "2.618",
            "type": "extension",
            "value": 50.12
          },
          {
            "level": "1.618",
            "type": "extension",
            "value": 47.82
          },
          {
            "level": "1.000",
            "type": "extension",
            "value": 46.4
          },
          {
            "level": "0.618",
            "type": "extension",
            "value": 45.52
          },
          {
            "level": "HIGH",
            "type": "high",
            "value": 44.1
          },
          {
            "level": "0.618",
            "type": "retracement",
            "value": 43.22
          },
          {
            "level": "0.500",
            "type": "retracement",
            "value": 42.95
          },
          {
            "level": "0.382",
            "type": "retracement",
            "value": 42.68
          },
          {
            "level": "LOW",
            "type": "low",
            "value": 41.8
          },
          {
            "level": "0.618",
            "type": "extension",
            "value": 40.38
          },
          {
            "level": "1.000",
            "type": "extension",
            "value": 39.5
          },
          {
            "level": "1.618",
            "type": "extension",
            "value": 38.08
          },
          {
            "level": "2.618",
            "type": "extension",
            "value": 35.78
          },
          {
            "level": "4.250",
            "type": "extension",
            "value": 32.02
          }
        ],
        "fibonacciRetracements": {
          "level236": 42.4,
          "level382": 41.35,
          "level500": 40.5,
          "level618": 39.65,
          "level786": 38.44,
          "params": {
            "period": 45
          }
        },
        "fiftyTwoWeekHighLow": {
          "high": 44.1,
          "highDistancePercent": -0.79,
          "low": 36.9,
          "lowDistancePercent": 18.56,
          "params": {
            "period": 45
          }
        },
        "fisher": [
          {
            "level": "R1",
            "oneDay": 44.18,
            "threeDay": 44.3
          },
          {
            "level": "PP",
            "oneDay": 43.22,
            "threeDay": 43.15
          },
          {
            "level": "S1",
            "oneDay": 42.25,
            "threeDay": 42
          }
        ],
        "generatedAt": "2026-09-24T20:00:00.000Z",
        "historicalVolatility": {
          "params": {
            "annualizationFactor": 252,
            "period": 30
          },
          "value": 42.1
        },
        "ichimoku": null,
        "macd": {
          "histogram": 0.23,
          "macd": 0.85,
          "params": {
            "fastPeriod": 12,
            "signalPeriod": 9,
            "slowPeriod": 26
          },
          "signal": 0.62
        },
        "movingAverages": [
          {
            "diff": 0.95,
            "diffPercent": 2.22,
            "period": 5,
            "signal": "above",
            "value": 42.8
          },
          {
            "diff": 2.25,
            "diffPercent": 5.42,
            "period": 10,
            "signal": "above",
            "value": 41.5
          },
          {
            "diff": 3.55,
            "diffPercent": 8.83,
            "period": 20,
            "signal": "above",
            "value": 40.2
          },
          {
            "diff": null,
            "diffPercent": null,
            "period": 50,
            "signal": null,
            "value": null
          },
          {
            "diff": null,
            "diffPercent": null,
            "period": 100,
            "signal": null,
            "value": null
          },
          {
            "diff": null,
            "diffPercent": null,
            "period": 200,
            "signal": null,
            "value": null
          }
        ],
        "ohlcv": {
          "close": 43.75,
          "high": 44.1,
          "low": 41.8,
          "open": 42.5,
          "volume": 1250000
        },
        "performance": {
          "d126": null,
          "d21": 12.18,
          "d252": null,
          "d63": null,
          "ytd": 18.56
        },
        "pivotPoints": {
          "daily": {
            "levels": [
              {
                "camarilla": 45.04,
                "classic": 47.07,
                "demark": null,
                "name": "R4",
                "woodie": 47.07
              },
              {
                "camarilla": 44.41,
                "classic": 45.92,
                "demark": null,
                "name": "R3",
                "woodie": 45.35
              },
              {
                "camarilla": 43.99,
                "classic": 44.77,
                "demark": null,
                "name": "R2",
                "woodie": 44.77
              },
              {
                "camarilla": 43.75,
                "classic": 44.22,
                "demark": 44.22,
                "name": "R1",
                "woodie": 44.22
              },
              {
                "camarilla": 43.22,
                "classic": 43.22,
                "demark": 43.22,
                "name": "PP",
                "woodie": 43.22
              },
              {
                "camarilla": 43.33,
                "classic": 42.5,
                "demark": 42.5,
                "name": "S1",
                "woodie": 42.5
              },
              {
                "camarilla": 43.12,
                "classic": 41.67,
                "demark": null,
                "name": "S2",
                "woodie": 41.67
              },
              {
                "camarilla": 42.7,
                "classic": 40.52,
                "demark": null,
                "name": "S3",
                "woodie": 39.95
              },
              {
                "camarilla": 42.06,
                "classic": 39.37,
                "demark": null,
                "name": "S4",
                "woodie": 39.37
              }
            ]
          },
          "weekly": {
            "levels": [
              {
                "camarilla": 45.5,
                "classic": 48,
                "demark": null,
                "name": "R4",
                "woodie": 48
              },
              {
                "camarilla": 44.8,
                "classic": 46.5,
                "demark": null,
                "name": "R3",
                "woodie": 46
              },
              {
                "camarilla": 44.2,
                "classic": 45.2,
                "demark": null,
                "name": "R2",
                "woodie": 45.2
              },
              {
                "camarilla": 43.8,
                "classic": 44.5,
                "demark": 44.5,
                "name": "R1",
                "woodie": 44.5
              },
              {
                "camarilla": 43,
                "classic": 43,
                "demark": 43,
                "name": "PP",
                "woodie": 43
              },
              {
                "camarilla": 43.2,
                "classic": 42,
                "demark": 42,
                "name": "S1",
                "woodie": 42
              },
              {
                "camarilla": 42.8,
                "classic": 41,
                "demark": null,
                "name": "S2",
                "woodie": 41
              },
              {
                "camarilla": 42.2,
                "classic": 39.8,
                "demark": null,
                "name": "S3",
                "woodie": 39.2
              },
              {
                "camarilla": 41.5,
                "classic": 38.5,
                "demark": null,
                "name": "S4",
                "woodie": 38.5
              }
            ]
          }
        },
        "relativeVolume": {
          "averageVolume": 1200000,
          "params": {
            "period": 20
          },
          "relativeVolume": 1.04
        },
        "roc": {
          "params": {
            "period": 12
          },
          "value": 4.15
        },
        "rsi": {
          "params": {
            "period": 14
          },
          "value": 68.4
        },
        "stats": [
          {
            "averageRange": 1.45,
            "averageRangePercent": 3.31,
            "averageVolume": 1100000,
            "closePercent": 78.2,
            "days": 5,
            "high": 44.1,
            "low": 41.3,
            "newHigh": true,
            "newLow": false,
            "range": 2.8,
            "rangePercent": 6.4
          },
          {
            "averageRange": 1.55,
            "averageRangePercent": 3.54,
            "averageVolume": 1150000,
            "closePercent": 69.5,
            "days": 10,
            "high": 44.1,
            "low": 40.2,
            "newHigh": true,
            "newLow": false,
            "range": 3.9,
            "rangePercent": 8.91
          },
          {
            "averageRange": 1.62,
            "averageRangePercent": 3.7,
            "averageVolume": 1200000,
            "closePercent": 65,
            "days": 20,
            "high": 44.1,
            "low": 38.6,
            "newHigh": true,
            "newLow": false,
            "range": 5.5,
            "rangePercent": 12.57
          },
          {
            "averageRange": 1.68,
            "averageRangePercent": 3.84,
            "averageVolume": 1220000,
            "closePercent": 61.2,
            "days": 40,
            "high": 44.1,
            "low": 36.9,
            "newHigh": true,
            "newLow": false,
            "range": 7.2,
            "rangePercent": 16.46
          },
          {
            "averageRange": null,
            "averageRangePercent": null,
            "averageVolume": null,
            "closePercent": null,
            "days": 60,
            "high": null,
            "low": null,
            "newHigh": null,
            "newLow": null,
            "range": null,
            "rangePercent": null
          },
          {
            "averageRange": null,
            "averageRangePercent": null,
            "averageVolume": null,
            "closePercent": null,
            "days": 80,
            "high": null,
            "low": null,
            "newHigh": null,
            "newLow": null,
            "range": null,
            "rangePercent": null
          },
          {
            "averageRange": null,
            "averageRangePercent": null,
            "averageVolume": null,
            "closePercent": null,
            "days": 100,
            "high": null,
            "low": null,
            "newHigh": null,
            "newLow": null,
            "range": null,
            "rangePercent": null
          },
          {
            "averageRange": null,
            "averageRangePercent": null,
            "averageVolume": null,
            "closePercent": null,
            "days": 120,
            "high": null,
            "low": null,
            "newHigh": null,
            "newLow": null,
            "range": null,
            "rangePercent": null
          }
        ],
        "stochastic": {
          "d": 80.2,
          "k": 84.8,
          "params": {
            "dPeriod": 3,
            "kPeriod": 14
          }
        },
        "stochRsi": {
          "d": 71,
          "k": 74.5,
          "params": {
            "dPeriod": 3,
            "kPeriod": 3,
            "rsiPeriod": 14,
            "stochPeriod": 14
          }
        },
        "technicalSummary": {
          "groups": {
            "movingAverages": {
              "counted": 3,
              "score": 1,
              "verdict": "Strong Buy"
            },
            "oscillators": {
              "counted": 9,
              "score": 0.44,
              "verdict": "Buy"
            },
            "priceLevels": {
              "counted": 2,
              "score": 0.5,
              "verdict": "Buy"
            },
            "trend": {
              "counted": 1,
              "score": 1,
              "verdict": "Strong Buy"
            }
          },
          "methodologyVersion": "1.0",
          "overall": {
            "counted": 15,
            "score": 0.6,
            "verdict": "Strong Buy"
          },
          "signals": {
            "adx": 1,
            "bullBearPower": 1,
            "cci": 1,
            "crabel": 1,
            "ma10": 1,
            "ma20": 1,
            "ma5": 1,
            "macd": 1,
            "pivotPosition": 1,
            "roc": 1,
            "rsi": 0,
            "stochastic": 0,
            "stochRsi": 0,
            "ultimateOscillator": 0,
            "williamsR": 0
          }
        },
        "ticker": "NEWCO",
        "ultimateOscillator": {
          "params": {
            "longPeriod": 28,
            "mediumPeriod": 14,
            "shortPeriod": 7
          },
          "value": 61.2
        },
        "williamsR": {
          "params": {
            "period": 14
          },
          "value": -15.2
        }
      },
      "dateRequested": "2026-09-24",
      "status": "partial",
      "symbol": "stk:NEWCO",
      "tradingDate": "2026-09-24"
    },
    {
      "data": null,
      "dateRequested": "2026-09-24",
      "reason": "Symbol 'stk:UNKNOWN' not found in registry",
      "status": "missing",
      "symbol": "stk:UNKNOWN",
      "tradingDate": null
    }
  ],
  "schemaVersion": "1.0.0"
}

5. Schema Versioning Policy (schemaVersion)

Every HTTP 200 response envelope includes a top-level schemaVersion string following strict Semantic Versioning (MAJOR.MINOR.PATCH), independent of internal storage caches. Current version: 1.0.0.

MAJOR Bump1.0.0 -> 2.0.0

Breaking change. Consumers must update their parser/types before migrating to the new major version.

  • Removal or renaming of existing fields or indicator blocks
  • Type definition changes (for example, changing a number to a string or object)
  • Tightening or loosening nullability in breaking positions
  • Structural changes to the request body or response envelope
MINOR Bump1.0.0 -> 1.1.0

Backwards-compatible addition. Existing parsers that ignore unknown JSON keys continue working without modification.

  • Addition of new optional indicator blocks within DailyNoteData
  • Addition of new optional metadata fields in billing or coverage
  • Non-breaking backwards-compatible schema extensions
PATCH Bump1.0.0 -> 1.0.1

Fully transparent to parsers. Field names, nullability, and data types are unchanged.

  • Bug fixes in indicator calculation math that preserve field keys and types
  • Decimal precision rounding refinements and specification clarifications

6. Errors, Limits & Resolution Reference

Non-Trading-Day Handling (dateRequested vs tradingDate)

Callers may pass any ISO-8601 calendar date (YYYY-MM-DD) in dates. When a requested date falls on a weekend or exchange holiday, the API automatically resolves it backward to the most recent prior trading session. Each cell returns both dateRequested (the exact calendar date from your request) and tradingDate (the actual session date of the bar used to compute the indicators). If a requested date precedes the earliest available trading session for that symbol, the cell is returned with status: "missing", tradingDate: null, data: null, and a descriptive reason string at zero charge.

Warm-Up & Partial Cells Explained

Computing the complete indicator suite (including the 200-day Simple Moving Average) requires at least 200 historical trading sessions on or before the requested date. When a symbol has between 1 and 199 trading sessions available (for example, a newly listed futures contract or recent IPO), the API returns status: "partial", a coverage block ({ barsAvailable, firstAvailableDate }), and the standard data object with computed values for every indicator whose lookback requirement is met and null for longer-window indicators. For full transparency before payment, the HTTP 402 challenge includes a partialCells object listing every partial cell, its barsAvailable, firstAvailableDate, and the exact nullIndicators list.

HTTP Status Codes & Error Payloads

400 Bad Request — Invalid Query Parameters or Batch Size Over 100 Cells
HTTP 400

Returned before payment when symbols or dates is empty, a symbol does not match ^[a-z]+:[A-Za-z0-9_.-]+$, a date is not a valid YYYY-MM-DD calendar date, or symbols.length × dates.length exceeds the 100-cell cap.

{
  "error": "Invalid query parameters. Required: symbols (non-empty namespaced array), dates (non-empty YYYY-MM-DD array), max 100 cells (symbols × dates <= 100)"
}
400 Bad Request — Malformed X-PAYMENT Header
HTTP 400

Returned when the X-PAYMENT header is present but cannot be base64-decoded into a valid x402 payment payload structure.

{
  "error": "Invalid or malformed payment header"
}
402 Payment Required — Payment Challenge or Settlement Rejection
HTTP 402

Returned when a request with at least one billable cell has no valid partner Bearer key and either omits X-PAYMENT (initial price discovery) or presents an X-PAYMENT signature that fails verification/settlement.

{
  "accepts": [
    {
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "description": "Access to MyPivots Daily Notes data",
      "extra": {
        "name": "USD Coin",
        "version": "2"
      },
      "maxAmountRequired": "10000",
      "maxTimeoutSeconds": 60,
      "mimeType": "application/json",
      "network": "base",
      "payTo": "0x6eee1521fed0f44b3af264c0d7818693cba7de28",
      "resource": "https://www.mypivots.com/api/v1/dailynotes/query",
      "scheme": "exact"
    }
  ],
  "billing": {
    "billableCells": 1,
    "freeCells": 0,
    "pricePerCellAtomic": "10000",
    "totalAtomic": "10000"
  },
  "error": "X-PAYMENT header is required",
  "partialCells": {
    "cells": [],
    "perSymbolCounts": {},
    "totalPartialCells": 0
  },
  "x402Version": 1
}
405 Method Not Allowed — Non-POST HTTP Method
HTTP 405

Returned when the endpoint is requested with an HTTP method other than POST. Daily Notes matrix queries only accept POST.

{
  "error": "Method Not Allowed"
}
429 Too Many Requests — Partner API Key Rate Limit Exceeded
HTTP 429

Returned when a licensed partner Bearer key exceeds its configured per-minute request allowance. Always includes a Retry-After header (in seconds).

Retry-After: 42
{
  "error": "Rate limit exceeded for partner API key. Please wait before retrying."
}
429 Too Many Requests — Payer Wallet Rate Limit Exceeded
HTTP 429

Returned when a self-serve x402 payer wallet exceeds the fair-use sliding-window rate limit (60 requests/minute). Always includes a Retry-After header (in seconds).

Retry-After: 60
{
  "error": "Rate limit exceeded for wallet. Please wait before retrying."
}
500 Internal Server Error — Server Error
HTTP 500

Returned when an unexpected internal server error occurs during query validation, matrix resolution, or data calculation.

{
  "error": "Internal Server Error"
}

7. Data Licensing, AI Policy & Attribution

Per the MyPivots Terms of Service AI Data Policy, API access grants the right to query and consume market notes and indicator levels for authorized application and agent workflows. It does not grant rights to redistribute the raw dataset, resell bulk historical archives, or use the content for training, fine-tuning, or testing artificial intelligence (AI) models, large language models (LLMs), or machine learning algorithms. Commercial AI training or enterprise redistribution requires a negotiated Data Licensing Agreement.

Attribution to MyPivots (https://www.mypivots.com) is required whenever data or derived levels from this API are displayed, published, or cited in downstream applications or agent responses.