{"uid":"cap_zpEXpy_J1fHiUK8hReSLZ","slug":"excelexi-analytics-history-api-b9689d8c","name":"Excelexi Analytics History API","description":"**Excelexi** — Financial technical indicators API marketplace.\n\nAgent-consumable OpenAPI document for the public Excelexi indicator surface.\n\n**x402 Payment**: Indicator compute endpoints require a USDC micropayment on Base (Coinbase L2, chain 8453). When the x402 gate is active, a 402 Payment Required response is returned with a payment challenge. Submit the signed EIP-3009 transferWithAuthorization proof in the `X-Payment` header and retry the request.\n\n**Discovery**: `GET /.well-known/x402` returns the current per-slug prices.\n\n**Regulatory notice**: All indicator outputs are informational only and do not constitute financial advice. Responses include `regulatory_notice` = `\"information_only_not_financial_advice\"`.","url":"https://api.excelexi.com/api/v1/analytics/history","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"to":{"type":"string","description":"To date (UTC, inclusive). Optional."},"from":{"type":"string","description":"From date (UTC, inclusive). Optional."},"limit":{"type":"string","description":"Page size. Max 100. Default 100."},"metric":{"type":"string","description":"Metric ID (e.g. \"rsi_rsi\")."},"offset":{"type":"string","description":"Zero-based page offset. Default 0."},"symbol":{"type":"string","description":"Asset symbol."},"interval":{"type":"string","description":"Candle interval: \"1h\", \"4h\", \"1d\"."}}},"responseSchema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","format":"date-time","description":"UTC timestamp of the closed bar."},"value":{"type":["null","number","string"],"format":"double","pattern":"^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$","description":"Metric value as a decimal (numeric metrics only; null if the value is categorical).\nSerialized as JSON number."}},"description":"One time-series data point in the analytics history response."},"description":"Time-series data points ordered by time ascending."},"meta":{"type":"object","properties":{"limit":{"type":["integer","string"],"format":"int32","pattern":"^-?(?:0|[1-9]\\d*)$","description":"Page size used."},"total":{"type":["integer","string"],"format":"int32","pattern":"^-?(?:0|[1-9]\\d*)$","description":"Total number of rows matching the window (before paging)."},"offset":{"type":["integer","string"],"format":"int32","pattern":"^-?(?:0|[1-9]\\d*)$","description":"Zero-based offset used."}},"description":"Pagination metadata for the analytics history response."},"prov_meta":{"oneOf":[{"type":"null"},{"type":"object","required":["computed_at","schema_version","request_id","latency_ms"],"properties":{"is_live":{"type":["null","boolean"],"description":"True when ALL contributing sources are live Binance feeds. Null when no sources."},"query_id":{"type":["null","string"],"description":"Deterministic 12-hex-char SHA-256 of the canonical IR/query. Same input → same value (D-ARM-9)."},"bar_closed":{"type":["null","boolean"],"description":"True when the last bar has closed (now &gt;= as_of). Null when no as_of."},"latency_ms":{"type":["integer","string"],"format":"int32","pattern":"^-?(?:0|[1-9]\\d*)$","description":"Server-side processing time in milliseconds (non-deterministic)."},"request_id":{"type":"string","description":"Per-request UUID string (non-deterministic)."},"computed_at":{"type":"string","format":"date-time","description":"UTC instant at which the server computed the response."},"data_freshness":{"type":["null","string"],"description":"`\"fresh\"`, `\"stale\"`, or `\"snapshot\"`. Null when no sources."},"schema_version":{"type":"string","description":"Schema version tag (e.g. `\"ask.v1\"`)."},"next_bar_close_at":{"type":["null","string"],"format":"date-time","description":"UTC close-time of the NEXT bar (= as_of + interval_duration). Null when no as_of or unrecognised interval."},"staleness_seconds":{"type":["null","integer","string"],"format":"int32","pattern":"^-?(?:0|[1-9]\\d*)$","description":"Seconds since the indicator value's effective close time. Null when no as_of."}},"description":"PROV.3 — Shared wire DTO for the response-level wall-clock metadata block (`data.meta`).\nJSON key names are SNAKE_CASE, matching the existing ARM ask wire.\n\nAll nullable fields use [JsonIgnore(WhenWritingNull)]. The entire object is\nnull (and omitted by WhenWritingNull on the parent property) when the feature is\nOFF (D-PROV-6 additive / no-perturbation)."}]},"provenance":{"oneOf":[{"type":"null"},{"type":"object","required":["interval","interval_source","params","bars_used"],"properties":{"unit":{"type":["null","string"],"description":"The unit of the indicator value (e.g. `\"index\"`, `\"price\"`). Null when unknown."},"as_of":{"type":["null","string"],"format":"date-time","description":"The effective close time of the last bar (`bar_open_time + interval_duration`).\nThe value is valid \"as of\" this time. Null when `bar_open_time` is unavailable."},"range":{"type":["null","string"],"description":"The value range (e.g. `\"0..100\"` for RSI). Null when unbounded or unknown."},"params":{"type":"object","description":"The leaf parameters (e.g. `{\"period\": 14}` for RSI). Empty dict when no params.","additionalProperties":{"type":["number","string"],"format":"double","pattern":"^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$"}},"source":{"type":["null","string"],"description":"The data source identifier (e.g. `\"binance:1h\"`, `\"dev:1h\"`). Null when series is empty."},"interval":{"type":"string","description":"The effective candle interval for this leaf (e.g. \"1h\", \"1d\")."},"bars_used":{"type":["integer","string"],"format":"int32","pattern":"^-?(?:0|[1-9]\\d*)$","description":"The number of bars in the series used to compute the indicator value."},"data_window":{"oneOf":[{"type":"null"},{"type":"object","required":["first","last"],"properties":{"last":{"type":"string","format":"date-time","description":"UTC open-time of the last bar in the series."},"first":{"type":"string","format":"date-time","description":"UTC open-time of the first bar in the series."}},"description":"PROV.3 — The data window: first and last bar UTC open-times."}]},"bar_open_time":{"type":["null","string"],"format":"date-time","description":"The UTC open-time of the last bar in the series. Null when the series is empty."},"interval_source":{"type":"string","description":"How the interval was determined: `\"user_specified\"` (explicit in the IR) or `\"default\"`."},"warmup_satisfied":{"type":["null","boolean"],"description":"True when `bars_used &gt;= min_bars` for this indicator (D-ARM-5); false when below;\nnull when the indicator is unknown (conservative — no false confidence)."}},"description":"PROV.3 — Shared wire DTO for per-result provenance, usable by all Phase-1 endpoints\n(D-PROV-1: reuse the ARM shapes exactly). JSON key names are SNAKE_CASE, matching the\nexisting ARM ask wire (`evaluated[i].provenance`).\n\nAll nullable fields use [JsonIgnore(WhenWritingNull)] so the wire omits\nabsent fields — byte-identical to pre-PROV when the flag is OFF (D-PROV-6)."}]}},"description":"PROV.8 — Analytics history response extended with an optional window-level provenance block\n(one provenance covers the entire returned time series) and a response-level meta block.\nJSON is byte-identical to AnalyticsHistoryResponse when both prov fields are null\n(D-PROV-6 additive / no-perturbation)."},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.00005","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.00005/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.00005","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.00005","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_phtc45bY43eYL-JUqudrG","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.00005","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Computes and returns historical financial technical indicator data for a given asset, requiring a USDC micropayment via x402 on Base.","exampleAgentPrompt":"Pull the historical RSI(14) values for BTC/USD over the last 90 days from Excelexi so I can backtest a mean-reversion strategy.","exampleUseCases":[{"title":"Backtest a momentum trading strategy","prompt":"Get me 180 days of historical MACD(12,26,9) data for ETH/USD from Excelexi so I can backtest my momentum strategy."},{"title":"Volatility analysis for options pricing","prompt":"Fetch the last 60 days of historical ATR(14) values for AAPL from Excelexi — I need it for my options premium model."},{"title":"Charting historical Bollinger Bands","prompt":"Pull Bollinger Band history (20-period, 2 standard deviations) for SOL/USD over the past 30 days from Excelexi so I can plot the squeeze signals."}],"resultDescription":"Returns a time-series array of computed technical indicator values for the requested asset and date range, along with a regulatory_notice field set to 'information_only_not_financial_advice'. Each data point includes a timestamp and the computed indicator output(s) for that period.","failureModes":["402 Payment Required — x402 gate active, must submit signed EIP-3009 transferWithAuthorization proof in X-Payment header","Invalid or unsupported indicator slug — returns 400 or 404","Asset symbol not found or unsupported — returns 404","Date range too large or malformed — returns 400","Insufficient USDC balance for micropayment — payment authorization fails","Network or compute timeout on complex indicator history — returns 503"],"whenToPreferThis":"Choose this endpoint when you need historical technical indicator computations on demand without managing your own time-series database or indicator library. It is ideal for AI agents doing backtesting, signal research, or chart generation that need pre-computed indicator history rather than raw OHLCV data. Prefer this over raw market data APIs when you need indicator math (RSI, MACD, ATR, Bollinger Bands, etc.) already applied to historical prices. The per-call micropayment model suits low-frequency or exploratory use better than a subscription.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T06:37:48.771Z","isFirstParty":false}