{"openapi":"3.1.0","info":{"title":"Anansi Data","description":"Pay-per-call access to accumulated time-series and derived analytics that no one else archives: prediction-market history, LLM price-change and deprecation records, per-minute cross-chain gas, perp funding, and a live index of paid agent endpoints.\n\nPayment uses x402: every paid route answers 402 with a signed challenge naming price, asset and payTo BEFORE any charge, so a client can decide before it commits. Settlement is USDC on Base mainnet.\n\nEach dataset carries an explicit licence tag. Sources granting no redistribution right for raw values are served as derived analytics only; a dataset whose terms have not been reviewed fails closed rather than open. Paid responses carry provenance naming source and method.","contact":{"name":"Anansi Data","url":"https://anansidata.xyz/"},"license":{"name":"Per-dataset; see /datasets"},"version":"1.1.0"},"servers":[{"url":"https://anansidata.xyz"}],"paths":{"/admin/settlements":{"get":{"summary":"Settlements","description":"Recent paid requests with their settlement, newest first.\n\nReports `external` by excluding loopback and this host's own address:\n4 of the first 5 paid 200s in this service's history were our own tests\ncalling in from localhost or from the box's public IP, and counting those\nas customers is how a test becomes a revenue figure.","operationId":"settlements_admin_settlements_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Index","description":"Machine catalogue. Served at / for direct callers; behind the reverse\nproxy / is the human homepage, so /catalog is the stable JSON path.","operationId":"index__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/catalog":{"get":{"summary":"Index","description":"Machine catalogue. Served at / for direct callers; behind the reverse\nproxy / is the human homepage, so /catalog is the stable JSON path.","operationId":"index_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/free/search":{"get":{"summary":"Free Search","description":"Resolve a model or dataset name to something callable. Real results.","operationId":"free_search_free_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/free/sample":{"get":{"summary":"Free Sample","description":"Three real rows from a dataset, free. The taste that sells the meal.\n\nAdvertised in every 402 body so an agent that balked at paying blind can\nsee actual data first. Raw rows only for licence=public datasets; for\nderived_only the sample is the field list, not values -- same rule the\npaid path enforces, no bypass through the free door.","operationId":"free_sample_free_sample_get","parameters":[{"name":"dataset","in":"query","required":false,"schema":{"type":"string","default":"cloud_spot","title":"Dataset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/free/price/current":{"get":{"summary":"Free Price Current","description":"Current per-token prices for a model. Real values, capped rows.","operationId":"free_price_current_free_price_current_get","parameters":[{"name":"model_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Model Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/free/price/changes":{"get":{"summary":"Free Price Changes","description":"Recent observed LLM price changes. This is the wedge, given away.\n\nDetection is free; DEPTH is paid. The archive is days old and says so —\nwhat makes this valuable today is that providers overwrite their catalogue\nand publish no history at all, so even a short recorded window exists\nnowhere else.","operationId":"free_price_changes_free_price_changes_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/llms.txt":{"get":{"summary":"Llms Txt","description":"Several directories and agent crawlers read /llms.txt. Plain text, no\nmarketing: what this is, what it costs, how to pay, what the limits are.","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/holder/tiers":{"get":{"summary":"Holder Tiers","description":"What holding ANANSI gets you. Public, no auth.","operationId":"holder_tiers_holder_tiers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/holder/challenge":{"get":{"summary":"Holder Challenge","operationId":"holder_challenge_holder_challenge_get","parameters":[{"name":"address","in":"query","required":false,"schema":{"type":"string","default":"","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/holder/session":{"post":{"summary":"Holder Session","operationId":"holder_session_holder_session_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/x402.json":{"get":{"summary":"Well Known X402","description":"Machine-readable service discovery document.\n\nResource URLs are built from the REQUEST, so behind the reverse proxy they\nadvertise https://anansidata.xyz rather than the raw IP — provided uvicorn\nruns with --proxy-headers, or the X-Forwarded-* headers are ignored and the\norigin leaks into every published URL.","operationId":"well_known_x402__well_known_x402_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/x402":{"get":{"summary":"Well Known X402","description":"Machine-readable service discovery document.\n\nResource URLs are built from the REQUEST, so behind the reverse proxy they\nadvertise https://anansidata.xyz rather than the raw IP — provided uvicorn\nruns with --proxy-headers, or the X-Forwarded-* headers are ignored and the\norigin leaks into every published URL.","operationId":"well_known_x402__well_known_x402_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/datasets":{"get":{"summary":"List Datasets","description":"Free: what the engine holds -- the menu. The data itself is paid.\n\nServed from cache ALWAYS. The underlying aggregate had grown to ~43s, and\n/datasets is the first thing a discovering agent hits, so any request that\npays that cost is an agent that times out and leaves. Expiry triggers a\nbackground rebuild and the caller still gets the stale menu immediately:\ncounts are advertising, and a few minutes of staleness is invisible to a\nbuyer. The freshness that matters is on the paid rows, which are live.","operationId":"list_datasets_datasets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/stats":{"get":{"summary":"Stats","operationId":"stats_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/paid/search/web":{"get":{"summary":"Paid Search Web","description":"Live web search, resold per-call through a licensed index.\n\nSettlement happens in the middleware BEFORE this body runs, like every\npaid route. The upstream call costs us wholesale; the agent has already\npaid retail, so an upstream failure after settlement is OUR loss to eat --\nthe buyer gets an apology object, never a silent nothing.","operationId":"paid_search_web_paid_search_web_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","default":8,"title":"Count"}},{"name":"freshness","in":"query","required":false,"schema":{"type":"string","default":"","title":"Freshness"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/paid/data/all":{"get":{"summary":"Paid Data All","description":"One payment, every dataset -- served from a cache rebuilt every five\nminutes. Licence-gated per dataset; a bundle is not a bypass.","operationId":"paid_data_all_paid_data_all_get","parameters":[{"name":"per","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Per"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/paid/quote":{"get":{"summary":"Paid Quote","operationId":"paid_quote_paid_quote_get","parameters":[{"name":"eth_amount","in":"query","required":false,"schema":{"type":"number","default":1.0,"title":"Eth Amount"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/paid/data/latest":{"get":{"summary":"Paid Latest","operationId":"paid_latest_paid_data_latest_get","parameters":[{"name":"dataset","in":"query","required":false,"schema":{"type":"string","default":"cloud_spot","title":"Dataset"}},{"name":"key","in":"query","required":false,"schema":{"type":"string","default":"","title":"Key"}},{"name":"keys","in":"query","required":false,"schema":{"type":"string","default":"","title":"Keys"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/paid/intel/verdict":{"get":{"summary":"Paid Verdict","operationId":"paid_verdict_paid_intel_verdict_get","parameters":[{"name":"dataset","in":"query","required":true,"schema":{"type":"string","title":"Dataset"}},{"name":"key","in":"query","required":true,"schema":{"type":"string","title":"Key"}},{"name":"field","in":"query","required":true,"schema":{"type":"string","title":"Field"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/paid/data/search":{"get":{"summary":"Paid Search","operationId":"paid_search_paid_data_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/paid/intel/movers":{"get":{"summary":"Paid Movers","operationId":"paid_movers_paid_intel_movers_get","parameters":[{"name":"dataset","in":"query","required":false,"schema":{"type":"string","default":"cloud_spot","title":"Dataset"}},{"name":"field","in":"query","required":false,"schema":{"type":"string","default":"price","title":"Field"}},{"name":"window_s","in":"query","required":false,"schema":{"type":"integer","default":21600,"title":"Window S"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/paid/intel/anomalies":{"get":{"summary":"Paid Anomalies","operationId":"paid_anomalies_paid_intel_anomalies_get","parameters":[{"name":"dataset","in":"query","required":false,"schema":{"type":"string","default":"openrouter_models","title":"Dataset"}},{"name":"field","in":"query","required":false,"schema":{"type":"string","default":"price","title":"Field"}},{"name":"z_threshold","in":"query","required":false,"schema":{"type":"number","default":3.0,"title":"Z Threshold"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/paid/data/history":{"get":{"summary":"Paid History","operationId":"paid_history_paid_data_history_get","parameters":[{"name":"dataset","in":"query","required":true,"schema":{"type":"string","title":"Dataset"}},{"name":"key","in":"query","required":true,"schema":{"type":"string","title":"Key"}},{"name":"since","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Since"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/paid/data/changes":{"get":{"summary":"Paid Changes","operationId":"paid_changes_paid_data_changes_get","parameters":[{"name":"dataset","in":"query","required":true,"schema":{"type":"string","title":"Dataset"}},{"name":"since","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Since"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/paid/intel/model-advisor":{"get":{"summary":"Paid Model Advisor","operationId":"paid_model_advisor_paid_intel_model_advisor_get","parameters":[{"name":"max_prompt_price","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Prompt Price"}},{"name":"min_context","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Min Context"}},{"name":"modality","in":"query","required":false,"schema":{"type":"string","default":"","title":"Modality"}},{"name":"window_s","in":"query","required":false,"schema":{"type":"integer","default":604800,"title":"Window S"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/paid/intel/model-changes":{"get":{"summary":"Paid Model Changes","operationId":"paid_model_changes_paid_intel_model_changes_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Since"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/paid/extract":{"post":{"summary":"Paid Extract","operationId":"paid_extract_paid_extract_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ExtractBody":{"properties":{"text":{"type":"string","title":"Text"},"json_schema":{"additionalProperties":true,"type":"object","title":"Json Schema"}},"type":"object","required":["text","json_schema"],"title":"ExtractBody"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}