{"uid":"cap_NJoBxFxRzNaxjeT3h1oFa","slug":"excelexi-analytics-snapshot-626461d1","name":"Excelexi Analytics Snapshot","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/snapshot","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"metrics":{"type":"string","description":"Optional list of metric IDs to include. When omitted or empty, the full default core set\n(all MetricDefinitions) is returned."},"symbols":{"type":"array","description":"Asset symbols to retrieve snapshots for.\nMaximum 50 symbols per request."},"interval":{"type":"string","description":"Candle interval for the snapshot values.\nAccepted values: \"1h\", \"4h\", \"1d\"."}}},"responseSchema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"market":{"type":["null","string"],"description":"PROV.8 — Market type: always \"spot\" for analytics (perp not supported). Null when disabled."},"symbol":{"type":"string"},"values":{"type":"object"},"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)."}]},"snapshotAt":{"type":"string","format":"date-time"},"resolved_pair":{"type":["null","string"],"description":"PROV.8 — Canonical trading pair (e.g. \"BTCUSDT\"). Null when `Provenance:Enabled=false`."},"quote_currency":{"type":["null","string"],"description":"PROV.8 — Quote currency extracted from string? SnapshotBundleEntryWithProv.ResolvedPair (e.g. \"USDT\"). Null when disabled."}},"description":"PROV.8 — Snapshot bundle entry extended with optional per-symbol provenance fields.\nReplaces SnapshotBundleEntry in the controller response when the feature\nflag is ON; JSON is byte-identical to SnapshotBundleEntry when all\nprovenance properties are null (D-PROV-6 additive / no-perturbation)."},"description":"One entry per requested symbol."},"meta":{"type":"object","properties":{"missing":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric ID that has no snapshot value."},"symbol":{"type":"string","description":"Symbol for which the metric is missing."}},"description":"Missing (symbol, metric) pair reported in meta.missing."},"description":"(symbol, metric) pairs that had no snapshot row."},"staleValues":{"type":["null","array"],"items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric ID."},"symbol":{"type":"string","description":"Symbol."},"computedAt":{"type":"string","format":"date-time","description":"UTC timestamp when this value was last computed."}},"description":"Stale value entry reported in meta.staleValues when a per-value ComputedAt is older than the interval."},"description":"Per-value staleness info — only populated when a value's ComputedAt is older than 1 interval\nbut not older than 2x (which would trigger a 503 instead).\nOmitted from JSON when empty."}},"description":"Meta block for the snapshot bundle 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)."}]}},"description":"PROV.8 — Snapshot bundle response extended with an optional response-level provenance meta block.\nJSON is byte-identical to SnapshotBundleResponse when ResponseMetaDto? SnapshotBundleResponseWithProv.ProvMeta is null\n(D-PROV-6 additive / no-perturbation)."},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.0001","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.0001/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.0001","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.0001","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_F0x3dndBoQPMDvPDb0WK2","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.0001","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Computes a snapshot of financial technical indicators for a given asset, returning results behind an x402 USDC micropayment gate","exampleAgentPrompt":"Can you pull a technical indicators snapshot for BTC/USD — I want RSI, MACD, and EMA — and pay the micropayment automatically?","exampleUseCases":[{"title":"Crypto trading signal check","prompt":"Get me a full technical indicator snapshot for ETH/USD right now — RSI, MACD, Bollinger Bands — so I can see if it's overbought or oversold."},{"title":"Equity momentum analysis","prompt":"Run a technical analysis snapshot for AAPL and give me the key momentum indicators like EMA and MACD so I can decide whether to enter a position."},{"title":"Automated strategy data feed","prompt":"Fetch the latest indicator snapshot for SOL/USDC every time my trading bot needs to evaluate entry conditions — include RSI and moving averages."}],"resultDescription":"A JSON object containing computed values for one or more financial technical indicators (e.g. RSI, MACD, EMA, Bollinger Bands) for the requested asset at the time of the call, along with a regulatory_notice field set to 'information_only_not_financial_advice'. The response is gated behind an x402 micropayment of $0.0001 USDC on Base (chain 8453).","failureModes":["402 Payment Required — x402 payment challenge returned when no valid X-Payment header is present; agent must sign EIP-3009 transferWithAuthorization and retry","Invalid or unsupported asset slug — returns 400 or 404 if the ticker/symbol is not recognized","Malformed payment proof — X-Payment header contains invalid or expired EIP-3009 authorization","Insufficient USDC balance — payment fails if the agent wallet has insufficient funds on Base","Rate limiting or overload — 429 or 503 if the compute service is at capacity"],"whenToPreferThis":"Choose this endpoint when you need a quick, on-demand multi-indicator technical analysis snapshot for a financial asset and want to pay per-use via USDC micropayment rather than subscribing to a data feed. It is well-suited for AI agents that invoke technical analysis episodically (e.g. on trading signals or user requests) rather than continuously streaming market data. Prefer it over general market data APIs when you specifically need computed indicators (RSI, MACD, EMA, etc.) rather than raw price data.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-16T00:31:59.030Z","isFirstParty":false}