{"openapi":"3.1.0","info":{"title":"2s — the (most) everything API","version":"1","summary":"The (most) everything API.","description":"The (most) everything API for AI agents: 575+ pay-per-call endpoints on one origin. More live, ground-truth data than any other x402 service — public records, finance & SEC filings, crypto & web3, security & CVEs, legal, medical, weather, geocoding, and B2B/EDI. A full AI gateway: chat, image, and multi-model consensus across every major model, priced per request in the 402 before you pay. And agent infrastructure with no account: wallet-scoped storage (kv/docs/vectors/files), locks, queues, scheduled callbacks, pub/sub, and watchers that push signed webhooks when the world changes. Pay per call in USDC on Base or Solana via x402 — no API keys, no signup, no subscription. The first x402 API with upto billing: on AI endpoints, authorize the quoted max and settle only your actual usage. Try before you buy: add ?trial=1 (or header X-2s-Trial: 1) to any endpoint for one free real call per endpoint per hour — no wallet needed. New endpoints land constantly.","contact":{"name":"2s","url":"https://2s.io","email":"alley@2s.io"},"x-logo":{"url":"https://2s.io/icon-512.png","altText":"2s"},"x-guidance":"Pay-per-call REST API for AI agents — hundreds of endpoints returning ground-truth data (US public records, company & legal identifiers, finance/SEC, crypto/web3, security & CVEs, medical codes, weather & geocoding, agriculture, energy, maritime, music, and more). Every endpoint is paid per call in USDC via x402 (Base or Solana) — no API key, no signup. Call any endpoint with no auth to get a 402 PaymentRequirements envelope, sign it (EIP-3009 on Base, partial SPL transfer on Solana), and retry with the PAYMENT-SIGNATURE header. Add ?trial=1 for one free real call per endpoint per hour to test before paying. To discover the right endpoint: GET https://2s.io/api/directory for the full catalog, or GET https://2s.io/api/search/endpoints?q=<natural-language task> for a ranked match. Per-call price is on each operation as x-payment-info (from $0.001). Batch up to 50 calls behind one payment via POST https://2s.io/api/batch/run."},"servers":[{"url":"https://2s.io"}],"components":{"responses":{"BadRequest":{"description":"Bad request — invalid parameters."},"PaymentRequired":{"description":"Payment required. Body contains the x402 PaymentRequirements envelope with a multi-network accepts array; the per-call price is in accepts[].amount (and on the operation as x-2s-price). Sign for whichever rail you hold USDC on (EIP-3009 for Base, partial SPL transfer for Solana) and retry with the PAYMENT-SIGNATURE header (X-PAYMENT also accepted for v1 clients).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402PaymentRequiredV2"}}}},"MethodNotAllowed":{"description":"Method not allowed — see `Allow` header for the supported method."},"ServerError":{"description":"Internal server error."},"UpstreamError":{"description":"Upstream provider error."}},"parameters":{"TrialMode":{"name":"trial","in":"query","required":false,"description":"Try before you buy. Set to 1 for one free real call per endpoint per hour — no wallet or payment needed — to verify the endpoint before paying. Equivalent to sending the \"X-2s-Trial: 1\" request header. Works on every endpoint.","schema":{"type":"integer","enum":[1]}}},"securitySchemes":{"x402Payment":{"type":"apiKey","in":"header","name":"PAYMENT-SIGNATURE","description":"x402 protocol v2: base64-encoded PaymentPayload. Call any paid endpoint without auth to receive a 402 with a multi-network PaymentRequirements envelope. Sign for either rail: EIP-3009 transferWithAuthorization (Base USDC) OR a partial SPL token transfer (Solana USDC). Retry with PAYMENT-SIGNATURE header. X-PAYMENT is also accepted for v1 buyer clients. See https://x402.org."}},"schemas":{"Source":{"type":"object","description":"Provenance of the data: upstream provider, source URL, and license.","properties":{"provider":{"type":"string","description":"Upstream data provider."},"url":{"type":"string","description":"Source URL or documentation link."},"license":{"type":"string","description":"License / usage terms for the data."}}},"CallMeta":{"type":"object","description":"Per-call meta envelope — endpoint id, cost, caller kind, settlement details."},"X402PaymentRequiredV2":{"type":"object","description":"x402 v2 PaymentRequired envelope. Pick any entry from accepts[], sign for that rail, retry with the PAYMENT-SIGNATURE header.","required":["x402Version","accepts"],"properties":{"x402Version":{"type":"integer","const":2},"error":{"type":"string","description":"Human-readable reason payment is required."},"resource":{"type":"string","description":"The resource URL being purchased."},"accepts":{"type":"array","description":"Payment requirement options, one per supported network (Base USDC, Solana USDC).","items":{"type":"object","required":["scheme","network","amount","asset","payTo","maxTimeoutSeconds"],"properties":{"scheme":{"type":"string","enum":["exact"]},"network":{"type":"string","description":"CAIP-2 network id, e.g. \"eip155:8453\" (Base) or \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\"."},"amount":{"type":"string","description":"Price in atomic asset units (USDC has 6 decimals)."},"asset":{"type":"string","description":"Asset contract address / mint."},"payTo":{"type":"string","description":"Treasury address to pay."},"maxTimeoutSeconds":{"type":"integer"},"extra":{"type":"object","description":"Rail-specific extras (EVM: EIP-712 domain name/version; Solana: feePayer).","additionalProperties":true}}}},"extensions":{"type":"object","description":"Optional discovery metadata (e.g. bazaar input/output schemas).","additionalProperties":true}}}}},"paths":{"/api/research/author":{"get":{"tags":["research"],"summary":"Resolve a researcher by ORCID iD.","description":"Resolve a researcher by ORCID iD. Pass orcid (e.g. 0000-0002-1825-0097, with or without the https://orcid.org/ prefix). Returns the researcher name, affiliations (employments and educations with organization, role, department, years, and a current flag), a total works count, and a works summary (title, type, year, DOI when present). Data: ORCID Public API, free and keyless; per-record visibility is set by the record holder. The canonical author key in scholarly metadata — pair with /api/papers/search, /api/paper/doi-lookup, and /api/research/org (ROR institutions). Use to verify an author identity, current institution, or publication record before citing.","operationId":"research_author","deprecated":false,"security":[{"x402Payment":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"object","properties":{"orcid":{"type":"string"},"url":{"type":"string"},"name":{"type":"object","properties":{"given":{"type":"string","nullable":true},"family":{"type":"string","nullable":true},"credit":{"type":"string","nullable":true}},"required":["given","family","credit"],"additionalProperties":false},"affiliations":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["employment","education"]},"organization":{"type":"string","nullable":true},"roleTitle":{"type":"string","nullable":true},"department":{"type":"string","nullable":true},"startYear":{"type":"number","nullable":true},"endYear":{"type":"number","nullable":true},"current":{"type":"boolean"},"country":{"type":"string","nullable":true}},"required":["type","organization","roleTitle","department","startYear","endYear","current","country"],"additionalProperties":false}},"worksCount":{"type":"number"},"works":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","nullable":true},"type":{"type":"string","nullable":true},"year":{"type":"number","nullable":true},"doi":{"type":"string","nullable":true}},"required":["title","type","year","doi"],"additionalProperties":false}},"sources":{"type":"array","items":{"$ref":"#/components/schemas/Source"}}},"required":["orcid","url","name","affiliations","worksCount","works","sources"],"additionalProperties":false},"meta":{"$ref":"#/components/schemas/CallMeta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"402":{"$ref":"#/components/responses/PaymentRequired"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"500":{"$ref":"#/components/responses/ServerError"},"502":{"$ref":"#/components/responses/UpstreamError"}},"x-2s-id":"research.author","x-2s-version":null,"x-2s-price":{"usd":0.003},"x-2s-accepts":["x402"],"x-2s-response-shape":"legacy","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003000"},"protocols":[{"x402":{}}]},"parameters":[{"name":"orcid","in":"query","required":true,"description":"ORCID iD, e.g. 0000-0002-1825-0097.","schema":{"type":"string","minLength":16,"maxLength":60}},{"name":"worksLimit","in":"query","required":false,"description":"Works limit.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"$ref":"#/components/parameters/TrialMode"}]}},"/api/research/funding":{"get":{"tags":["research"],"summary":"Search US federal biomedical research grants via NIH RePORTER.","description":"Search US federal biomedical research grants via NIH RePORTER. Filter by term (free-text over project title, terms, and abstract), org (funded institution name), pi (principal-investigator name), and/or fiscalYear; page with limit (1-50) and offset. Returns each award with project number, title, fiscal year, award amount (USD), contact PI, organization (name, city, state, country, department), funding agency/institute, and project start/end dates — newest fiscal year first, with a total match count. Data: NIH RePORTER, free and public-domain. Fresh post-training award data agents cannot know; pair with /api/research/org (ROR) and /api/research/author (ORCID). Use for funding landscape research, competitor/lab tracking, and grant-opportunity context.","operationId":"research_funding","deprecated":false,"security":[{"x402Payment":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"object","properties":{"query":{"type":"object","properties":{"term":{"type":"string","nullable":true},"org":{"type":"string","nullable":true},"pi":{"type":"string","nullable":true},"fiscalYear":{"type":"number","nullable":true},"limit":{"type":"number"},"offset":{"type":"number"}},"required":["term","org","pi","fiscalYear","limit","offset"],"additionalProperties":false},"total":{"type":"number","nullable":true},"count":{"type":"number"},"awards":{"type":"array","items":{"type":"object","properties":{"projectNum":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"fiscalYear":{"type":"number","nullable":true},"awardAmount":{"type":"number","nullable":true},"piName":{"type":"string","nullable":true},"organization":{"type":"string","nullable":true},"orgCity":{"type":"string","nullable":true},"orgState":{"type":"string","nullable":true},"orgCountry":{"type":"string","nullable":true},"department":{"type":"string","nullable":true},"agency":{"type":"string","nullable":true},"agencyName":{"type":"string","nullable":true},"startDate":{"type":"string","nullable":true},"endDate":{"type":"string","nullable":true}},"required":["projectNum","title","fiscalYear","awardAmount","piName","organization","orgCity","orgState","orgCountry","department","agency","agencyName","startDate","endDate"],"additionalProperties":false}},"sources":{"type":"array","items":{"$ref":"#/components/schemas/Source"}}},"required":["query","total","count","awards","sources"],"additionalProperties":false},"meta":{"$ref":"#/components/schemas/CallMeta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"402":{"$ref":"#/components/responses/PaymentRequired"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"500":{"$ref":"#/components/responses/ServerError"},"502":{"$ref":"#/components/responses/UpstreamError"}},"x-2s-id":"research.funding","x-2s-version":null,"x-2s-price":{"usd":0.0045},"x-2s-accepts":["x402"],"x-2s-response-shape":"legacy","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.004500"},"protocols":[{"x402":{}}]},"parameters":[{"name":"term","in":"query","required":false,"description":"Term.","schema":{"type":"string","minLength":2,"maxLength":200}},{"name":"org","in":"query","required":false,"description":"Org.","schema":{"type":"string","minLength":2,"maxLength":200}},{"name":"pi","in":"query","required":false,"description":"Pi.","schema":{"type":"string","minLength":2,"maxLength":120}},{"name":"fiscalYear","in":"query","required":false,"description":"Fiscal year.","schema":{"type":"integer","minimum":1985,"maximum":2100}},{"name":"limit","in":"query","required":false,"description":"Maximum number of results to return.","schema":{"type":"integer","minimum":1,"maximum":50,"default":10}},{"name":"offset","in":"query","required":false,"description":"Number of results to skip before returning (pagination offset).","schema":{"type":"integer","minimum":0,"maximum":14000,"default":0}},{"$ref":"#/components/parameters/TrialMode"}]}},"/api/research/org":{"get":{"tags":["research"],"summary":"Resolve a research organization via the Research...","description":"Resolve a research organization via the Research Organization Registry (ROR). Pass id (a ROR id like 056y0v115 or its full URL) to fetch one org, or name to search by free text. Returns the canonical ROR id and name, organization type, status, founding year, location (city, country, GeoNames coordinates), website, Wikipedia link, external identifiers (GRID, ISNI, Wikidata, Crossref Funder), parent/child relationships, and aliases/acronyms. Data: ROR, free and CC0. The canonical institution key in scholarly metadata — pair with /api/papers/search and /api/paper/doi-lookup (author affiliations) and /api/research/author (ORCID). Use to disambiguate an institution name to a stable id before joining datasets.","operationId":"research_org","deprecated":false,"security":[{"x402Payment":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"object","properties":{"query":{"type":"object","properties":{"id":{"type":"string","nullable":true},"name":{"type":"string","nullable":true}},"required":["id","name"],"additionalProperties":false},"total":{"type":"number","nullable":true},"count":{"type":"number"},"organizations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"established":{"type":"number","nullable":true},"status":{"type":"string","nullable":true},"types":{"type":"array","items":{"type":"string"}},"location":{"type":"object","properties":{"city":{"type":"string","nullable":true},"countryCode":{"type":"string","nullable":true},"countryName":{"type":"string","nullable":true},"subdivision":{"type":"string","nullable":true},"lat":{"type":"number","nullable":true},"lng":{"type":"number","nullable":true},"geonamesId":{"type":"number","nullable":true}},"required":["city","countryCode","countryName","subdivision","lat","lng","geonamesId"],"additionalProperties":false,"nullable":true},"website":{"type":"string","nullable":true},"wikipedia":{"type":"string","nullable":true},"externalIds":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"preferred":{"type":"string","nullable":true},"all":{"type":"array","items":{"type":"string"}}},"required":["type","preferred","all"],"additionalProperties":false}},"relationships":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"string"},"label":{"type":"string","nullable":true}},"required":["type","id","label"],"additionalProperties":false}},"aliases":{"type":"array","items":{"type":"string"}}},"required":["id","name","established","status","types","location","website","wikipedia","externalIds","relationships","aliases"],"additionalProperties":false}},"sources":{"type":"array","items":{"$ref":"#/components/schemas/Source"}}},"required":["query","total","count","organizations","sources"],"additionalProperties":false},"meta":{"$ref":"#/components/schemas/CallMeta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"402":{"$ref":"#/components/responses/PaymentRequired"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"500":{"$ref":"#/components/responses/ServerError"},"502":{"$ref":"#/components/responses/UpstreamError"}},"x-2s-id":"research.org","x-2s-version":null,"x-2s-price":{"usd":0.003},"x-2s-accepts":["x402"],"x-2s-response-shape":"legacy","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003000"},"protocols":[{"x402":{}}]},"parameters":[{"name":"id","in":"query","required":false,"description":"Unique identifier of the record to fetch.","schema":{"type":"string","minLength":2,"maxLength":120}},{"name":"name","in":"query","required":false,"description":"Name to search for.","schema":{"type":"string","minLength":2,"maxLength":200}},{"name":"limit","in":"query","required":false,"description":"Maximum number of results to return.","schema":{"type":"integer","minimum":1,"maximum":20,"default":5}},{"$ref":"#/components/parameters/TrialMode"}]}}}}