{"openapi":"3.1.0","info":{"title":"InvestorsCraft Valuation API","version":"1.0.0","description":"Proprietary stock valuation (AI, IC/DCF, Graham). Not raw market data. Use these HTTP APIs instead of scraping HTML stock pages."},"servers":[{"url":"https://investorscraft.com"}],"paths":{"/api/v1":{"get":{"operationId":"getApiCatalog","summary":"Free catalog of live agent endpoints","responses":{"200":{"description":"Catalog JSON"}}}},"/api/v1/pricing":{"get":{"operationId":"getApiPricing","summary":"Credits, list USD, and complimentary flags","responses":{"200":{"description":"Pricing JSON"}}}},"/api/v1/openapi.json":{"get":{"operationId":"getOpenApi","summary":"This OpenAPI document","responses":{"200":{"description":"OpenAPI 3.1 JSON"}}}},"/api/v1/valuation/{ticker}":{"get":{"operationId":"getStockValuation","summary":"InvestorsCraft valuation for one ticker","description":"Returns AI, IC, DCF, and Graham fair values versus last close. Use when an agent needs what a stock is worth on InvestorsCraft. When agents pay: MPP is per GET at list USD 0.03; API key is 1 credit (mint at /account). Pay the HTTP 402 WWW-Authenticate: Payment Challenge (Tempo USDC), then retry the same request with Payment-Authorization. Amount is in the Challenge request blob, not chosen by the client.","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"},"description":"Stock ticker, e.g. AAPL"}],"responses":{"200":{"description":"Valuation JSON","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Valuation"}}}},"401":{"description":"Invalid or revoked API key"},"402":{"description":"MPP Payment Challenge only (WWW-Authenticate: Payment, method=tempo). Retry with Payment-Authorization. Empty API keys are 403, not 402."},"403":{"description":"API key present but insufficient credits. Not an MPP Challenge."},"404":{"description":"Unknown ticker (after settlement when agents pay)"},"429":{"description":"Anonymous valuation rate limit"}},"security":[{"apiKey":[]},{"mpp":[]}]}},"/api/v1/valuation/{ticker}/full":{"get":{"operationId":"getStockValuationFull","summary":"Valuation plus sector, industry, IC history, and company description","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"},"description":"Stock ticker, e.g. AAPL"}],"responses":{"200":{"description":"Full valuation JSON","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValuationFull"}}}},"401":{"description":"Invalid or revoked API key"},"402":{"description":"MPP Payment Challenge only (WWW-Authenticate: Payment, method=tempo). Retry with Payment-Authorization. Empty API keys are 403, not 402."},"403":{"description":"API key present but insufficient credits. Not an MPP Challenge."},"404":{"description":"Unknown ticker (after settlement when agents pay)"},"429":{"description":"Anonymous valuation rate limit"}},"security":[{"apiKey":[]},{"mpp":[]}]}},"/api/v1/batch/valuation":{"post":{"operationId":"postStockValuationBatch","summary":"Valuations for up to 25 tickers","description":"Body { tickers: string[] }. Charges list USD and credits per ticker (same as GET valuation). Missing tickers are null in results after settlement.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tickers"],"properties":{"tickers":{"type":"array","items":{"type":"string"},"maxItems":25}}}}}},"responses":{"200":{"description":"{ results: { TICKER: Valuation | null }, skippedInternational }"},"400":{"description":"Invalid body or too many tickers"},"401":{"description":"Invalid API key"},"402":{"description":"MPP Payment Challenge"},"403":{"description":"Insufficient credits"},"429":{"description":"Anonymous valuation rate limit"}},"security":[{"apiKey":[]},{"mpp":[]}]}}},"components":{"schemas":{"Valuation":{"type":"object","properties":{"ticker":{"type":"string","description":"Exchange ticker, uppercase."},"name":{"type":"string","description":"Company name."},"currentPrice":{"type":["number","null"],"description":"Last close price, not a live quote."},"ai":{"type":["number","null"],"description":"InvestorsCraft AI fair value per share."},"iv":{"type":["number","null"],"description":"Intrinsic / DCF value per share."},"ic":{"type":["number","null"],"description":"InvestorsCraft (IC) value per share."},"ivGD":{"type":["number","null"],"description":"Graham-Dodd value per share."},"ivGF":{"type":["number","null"],"description":"Graham Formula value per share."},"asOf":{"type":["string","null"],"description":"Date of currentPrice."},"shares":{"type":["number","null"],"description":"Shares outstanding, millions."},"mktCap":{"type":["number","null"],"description":"Market capitalization, USD."}},"required":["ticker","name","currentPrice","ai","iv","ic","ivGD","ivGF","asOf","shares","mktCap"]},"ValuationFull":{"type":"object","properties":{"ticker":{"type":"string","description":"Exchange ticker, uppercase."},"name":{"type":"string","description":"Company name."},"currentPrice":{"type":["number","null"],"description":"Last close price, not a live quote."},"ai":{"type":["number","null"],"description":"InvestorsCraft AI fair value per share."},"iv":{"type":["number","null"],"description":"Intrinsic / DCF value per share."},"ic":{"type":["number","null"],"description":"InvestorsCraft (IC) value per share."},"ivGD":{"type":["number","null"],"description":"Graham-Dodd value per share."},"ivGF":{"type":["number","null"],"description":"Graham Formula value per share."},"asOf":{"type":["string","null"],"description":"Date of currentPrice."},"shares":{"type":["number","null"],"description":"Shares outstanding, millions."},"mktCap":{"type":["number","null"],"description":"Market capitalization, USD."},"sector":{"type":["string","null"],"description":"GICS-style sector (full payload only)."},"industry":{"type":["string","null"],"description":"Industry (full payload only)."},"icHistory":{"type":"array","description":"Annual historic IC values (date + ic per share), same series as the stock-page valuation-history chart (full payload only).","items":{"type":"object","properties":{"date":{"type":"string","description":"Fiscal year-end date for the IC observation."},"ic":{"type":["number","null"],"description":"InvestorsCraft (IC) value per share."}},"required":["date","ic"]}},"coinfo":{"type":["string","null"],"description":"Company description (full payload only)."}},"required":["ticker","name","currentPrice","ai","iv","ic","ivGD","ivGF","asOf","shares","mktCap"]}},"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"ic_live_ or ic_test_","description":"Mint at /account after /login. Skips MPP when the key has credits. Insufficient credits are HTTP 403, not Tempo 402."},"mpp":{"type":"apiKey","in":"header","name":"Payment-Authorization","description":"MPP Tempo USDC after HTTP 402. Put the Challenge proof here; keep Authorization for API keys."}}}}