{"openapi":"3.1.0","info":{"title":"Bosco Labs data API","description":"Official-source data for AI agents: SEC EDGAR, company registers, sanctions lists, EU and national law, ECB and Eurostat. Prepaid credits, 1 credit = $0.0001. Docs: https://boscolabs.dev/api.html","version":"0.1.0"},"servers":[{"url":"https://api.boscolabs.dev"}],"paths":{"/v1/health":{"get":{"summary":"Health","operationId":"health_v1_health_get","parameters":[{"name":"probe","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Probe"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tools":{"get":{"summary":"Catalogue","operationId":"catalogue_v1_tools_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/me":{"get":{"summary":"Me","operationId":"me_v1_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/company-check":{"post":{"summary":"Company Check API: identity, financials & SEC filings in 1 call","description":"One company report per call: legal name, LEI, registration number, status, address and industry, years of revenue, profit, equity, assets and cash, SEC filings and FDIC bank data. Look up by name, LEI, UK, DK, NO, FR, FI or EE number, ticker, CIK or FDIC cert. Sourced values. Price: $0.03 per `company-report`.","operationId":"company_check_v1_company_check_post","requestBody":{"content":{"application/json":{"schema":{"properties":{"query":{"type":"string","title":"Company (name or identifier)","description":"The company to check: a name (e.g. \"Novo Nordisk\") or an identifier: LEI (20 characters, e.g. \"724500Y6DUVHQD6OXN27\"), UK company number (\"00445790\", \"SC123456\"), Danish CVR (\"24256790\"), Norwegian org number (\"923609016\"), French SIREN (9 digits, \"552032534\") or SIRET (14 digits, \"55203253400703\"), Finnish Business ID with its dash (\"0112038-9\"), Estonian registry code (8 digits, \"12417834\"), US ticker in capitals or with $ (\"AAPL\", \"$brk.b\"; foreign companies listed in the US resolve to their home country), SEC CIK (\"320193\") or FDIC certificate of a US bank (\"FDIC:628\"). The type is detected from format and check digits; an 8-digit number valid in several registers (UK, Danish CVR, Estonian) is settled by asking them, and `country` decides when given. Required."},"country":{"type":"string","title":"Country (optional)","description":"ISO 3166 alpha-2 country code to disambiguate, e.g. \"DK\", \"GB\", \"NO\", \"FR\", \"FI\", \"EE\", \"NL\", \"US\". With a name it limits the search to that country and, for NO, FR, FI and EE, also searches the national register (most companies there have no LEI); with a number it says which register the number belongs to (e.g. \"GB\" for a UK number without a leading zero, \"EE\" for an Estonian registry code, \"FI\" for a Business ID typed without its dash). Empty = detect from the query."},"maxYears":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Financial years","description":"How many fiscal years of key figures to return, newest first, e.g. 3. Default 3, maximum 10. Norway's open register holds the last 3 years only. The price is the same for any number of years.","default":3},"include":{"type":"array","title":"Sections","description":"Which sections to fill: any of \"identity\", \"financials\", \"us\" (SEC filings of US issuers), e.g. [\"identity\", \"financials\"]. Default (or empty) = all three. Fewer sections = fewer sources called, slightly faster; the price is the same.","default":["identity","financials","us"]}},"type":"object","required":["query"]}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/eu-law-lookup":{"post":{"summary":"EU Law Lookup API (EUR-Lex): article text, in force, amendments","description":"The text of an EU law article as in force today (or on a date), whether the act is in force, what amended it, plus new Official Journal acts. Ask by name (GDPR, AI Act), citation, CELEX or ELI; 24 languages. Official EUR-Lex/Cellar data with a source link per row. Price: $0.005 per `act-lookup`.","operationId":"eu_law_lookup_v1_eu_law_lookup_post","requestBody":{"content":{"application/json":{"schema":{"properties":{"query":{"type":"string","title":"EU act","description":"The EU act to look up: a short name (\"GDPR\", \"AI Act\", \"DSA\", \"NIS2\", \"DORA\", \"MiCA\", \"CSRD\"...), a citation (\"Regulation (EU) 2024/1689\", \"Directive 95/46/EC\", \"Regulation (EC) No 1907/2006\"), a bare number (\"2016/679\"), a CELEX number (\"32016R0679\") or an ELI URI (\"http://data.europa.eu/eli/reg/2016/679/oj\"). \"AI Act Article 50\" also works. Leave empty only when using ojSince (new Official Journal acts). An unreadable citation fails in seconds, with examples, at no charge."},"article":{"type":"string","title":"Article(s)","description":"Article number, optionally with a paragraph: \"5\", \"6(1)\", \"4a\"; several separated by commas (\"5, 6(1)\", up to 10). One row per article. Empty = one row for the whole act with its table of contents and recital count (no full text unless include has \"text\")."},"language":{"type":"string","enum":["BG","CS","DA","DE","EL","EN","ES","ET","FI","FR","GA","HR","HU","IT","LT","LV","MT","NL","PL","PT","RO","SK","SL","SV"],"title":"Language","description":"EU language code of the text and titles: BG, CS, DA, DE, EL, EN, ES, ET, FI, FR, GA, HR, HU, IT, LT, LV, MT, NL, PL, PT, RO, SK, SL, SV. Default EN. If the text is missing in that language, English is returned with a warning.","default":"EN","enumTitles":["BG: Bulgarian","CS: Czech","DA: Danish","DE: German","EL: Greek","EN: English","ES: Spanish","ET: Estonian","FI: Finnish","FR: French","GA: Irish","HR: Croatian","HU: Hungarian","IT: Italian","LT: Lithuanian","LV: Latvian","MT: Maltese","NL: Dutch","PL: Polish","PT: Portuguese","RO: Romanian","SK: Slovak","SL: Slovenian","SV: Swedish"]},"asOf":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}(T.*)?)?$","title":"As of date","description":"YYYY-MM-DD, e.g. \"2025-01-01\": return the consolidated version that applied on that date. Empty = today (the newest consolidated version in force now). Acts without consolidated versions return the Official Journal text."},"include":{"items":{"type":"string","enum":["metadata","amendments","citing","text"],"enumTitles":["Metadata (always on)","Amendments (amended/corrected/repealed by, amends, repeals)","Citing acts and judgments","Full text of the act"]},"type":"array","title":"Extra sections","description":"Any of \"metadata\" (always on), \"amendments\" (amended_by, corrected_by, repealed_by, amends, repeals), \"citing\" (acts and judgments that cite this act, newest first) and \"text\" (the whole act as plain text, cut at maxTextChars). Default [\"metadata\", \"amendments\"]. The price is the same.","default":["metadata","amendments"]},"maxTextChars":{"type":"integer","maximum":500000.0,"minimum":1000.0,"title":"Max text characters","description":"Cap on article_text and text, in characters, e.g. 30000 (default). Longer text is cut and flagged (article_text_truncated / text_truncated) with a warning.","default":30000},"maxCiting":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Max citing acts","description":"With include \"citing\": how many citing acts to list, newest first, e.g. 20 (default). citing_acts_total always gives the full count.","default":20},"ojSince":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}(T.*)?)?$","title":"New OJ acts since (date)","description":"Switches to Official Journal mode: list acts published in the OJ L series from this date (YYYY-MM-DD, e.g. \"2026-11-03\") until today, newest first, at most 31 days back. Leave query empty when you use this. Empty = normal lookup."},"keywords":{"type":"string","title":"OJ title keywords","description":"OJ mode only: comma-separated words or phrases; an act is kept when its title (in the chosen language) contains any of them, case-insensitive, e.g. \"artificial intelligence, data\". Empty = all acts."},"maxResults":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Max OJ acts","description":"OJ mode only: the most acts to return, newest first, e.g. 50 (default). One charge per act returned.","default":50}},"type":"object","required":[]}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/eu-rates-inflation":{"post":{"summary":"ECB Rates & Euro Inflation API: policy rates, FX, €STR, HICP","description":"Latest value, previous value, change and recent history of ECB policy rates, euro reference FX rates, €STR, euro-area and national bond yields, and Eurostat HICP inflation. Ask by plain name (ecb_deposit_rate, eur_fx:USD, hicp:NL), no SDMX keys. Official data, a source link per series. Price: $0.002 per `series`.","operationId":"eu_rates_inflation_v1_eu_rates_inflation_post","requestBody":{"content":{"application/json":{"schema":{"properties":{"series":{"type":"array","title":"Series (plain names)","description":"Which series to fetch, by plain name (case-insensitive), up to 20 per run, e.g. [\"ecb_deposit_rate\", \"eur_fx:USD\", \"hicp:EA\"]. Names: ecb_deposit_rate, ecb_main_refi_rate, ecb_marginal_lending_rate (one observation per rate change), estr (€STR), eur_fx:<CUR> (ECB reference rate, CUR per 1 EUR, e.g. eur_fx:GBP), euro_area_yield_curve:<maturity> (AAA spot yield, e.g. 10Y, 3M, 1Y6M; add :all for all government bonds), gov_bond_10y:<country> (monthly 10-year yield, e.g. gov_bond_10y:IT), hicp:<geo>[:<variant>] (Eurostat inflation; geo EA, EU or NL, DE, ...; variant annual (default), monthly, index, core, energy, food, services, goods, or an ECOICOP 2 code like CP01). An unknown name fails at once with suggestions and costs nothing. Empty (with no rawSeriesKey) = list the catalogue for free."},"last":{"type":"integer","maximum":1000.0,"minimum":1.0,"title":"Observations per series","description":"How many of the newest observations to return per series, e.g. 12 (the last 12 months of a monthly series). Empty = 12, or with dateFrom every observation in the window (up to 1000). latest_value, previous_value and change are always filled. The price is the same for any number."},"dateFrom":{"type":"string","title":"From date","description":"First date of the window, YYYY-MM-DD, e.g. \"2026-01-01\". For monthly series the month holding the date counts. Empty = no lower bound (only `last` limits)."},"dateTo":{"type":"string","title":"To date","description":"Last date of the window, YYYY-MM-DD, e.g. \"2026-03-15\". With last = 1 you get the value on that date or the last one before it (weekends and holidays have no FX value). Empty = up to the latest published value."},"frequency":{"type":"string","enum":["","daily","monthly","annual"],"title":"Frequency","description":"Only where the source has it: eur_fx daily (default), monthly or annual averages; policy rates daily (rate on every day) instead of the default one-row-per-change. Other series keep their own frequency and say so in `warnings`. Empty = each series' default.","default":"","enumTitles":["Series default","Daily","Monthly","Annual"]},"rawSeriesKey":{"type":"array","title":"Raw ECB series keys (experts)","description":"Optional full ECB Data Portal series keys (dataflow + key, every dimension filled, no wildcards), e.g. [\"EXR.M.CHF.EUR.SP00.E\"]. Same output and price as named series. Empty = none."},"mode":{"type":"string","enum":["series","catalogue"],"title":"Mode","description":"\"series\" (default) fetches the series above. \"catalogue\" returns one row per supported name pattern with its source dataset, key template, frequencies, unit and an example, free of charge.","default":"series","enumTitles":["Fetch series","List the catalogue of names (free)"]}},"type":"object","required":[]}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/national-law-lookup":{"post":{"summary":"UK & Dutch Law Lookup API: article text by date, in force","description":"The text of a UK section or Dutch article as in force today (or on a date), whether it is in force and what changed it. Ask by citation: \"Companies Act 2006 s 172\", \"BW 7:658\", \"artikel 13 Wet Vpb 1969\". Official legislation.gov.uk and Dutch BWB data with a source link per row. Price: $0.005 per `act-lookup`.","operationId":"national_law_lookup_v1_national_law_lookup_post","requestBody":{"content":{"application/json":{"schema":{"properties":{"query":{"type":"string","title":"Citation","description":"The act, optionally with the article. UK: a short title with a section (\"Companies Act 2006 s 172\", \"section 172 of the Companies Act 2006\"), a short name (\"CA 2006\", \"DPA 2018\", \"UK GDPR\", \"PECR\"; 35 common acts), a legislation.gov.uk path or URL (\"ukpga/2006/46/section/172\"), a chapter (\"2006 c. 46\") or an SI (\"S.I. 2003/2426 reg 6\"). NL: \"BW 7:658\", \"artikel 13 Wet Vpb 1969\", \"Awb 8:1\", \"art. 310 Sr\", an abbreviation (BW1-10, Sr, Sv, Rv, Awb, UAVG, Wft, Wwft, Woo ...), a citeertitel, a BWB id (\"BWBR0002672\"), a jci reference or a wetten.overheid.nl URL. Required. An unreadable citation fails in seconds, with examples, at no charge."},"jurisdiction":{"type":"string","enum":["","UK","NL"],"title":"Jurisdiction","description":"\"UK\" or \"NL\". Default empty = detected from the citation (paths, BWB ids, known names, Dutch or English words); set it when a bare name is ambiguous.","default":"","enumTitles":["Detect from the citation","United Kingdom (legislation.gov.uk)","Netherlands (wetten.overheid.nl / BWB)"]},"article":{"type":"string","title":"Article(s) or section(s)","description":"Section, regulation or article number, optionally with a subsection or lid: \"172\", \"172(1)\", \"7:658\", \"13 lid 2\", \"8:1\"; several separated by commas (up to 5, e.g. \"171, 172\"). One row per article. Overrides an article in the query. Empty = the article in the query, or else one row for the whole act with its table of contents."},"asOf":{"type":"string","title":"As of date","description":"YYYY-MM-DD, e.g. \"2025-01-01\": return the text as in force on that date (UK point-in-time version; NL consolidated version, newest correction). Empty = today."},"language":{"type":"string","title":"Language","description":"Optional, \"EN\" or \"NL\". UK texts are English and Dutch texts are Dutch: there is no official English translation of Dutch legislation, so EN for a Dutch act returns the Dutch text with a warning. Default empty = the source language."},"maxTextChars":{"type":"integer","maximum":500000.0,"minimum":1000.0,"title":"Max text characters","description":"Cap on article_text, in characters, e.g. 30000 (default). Longer text is cut and flagged (article_text_truncated) with a warning.","default":30000}},"type":"object","required":["query"]}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/sanctions-screening":{"post":{"summary":"Sanctions Screening API: OFAC, UK, EU & US export lists","description":"Is this company, vessel or person sanctioned? Returns per name: match yes/no, the listed entry, aliases, programs, listing date, identifiers and a source link, from the official OFAC SDN and non-SDN, US Consolidated Screening List, UK Sanctions List and EU lists, with each list's date. Price: $0.01 per `name-screened`.","operationId":"sanctions_screening_v1_sanctions_screening_post","requestBody":{"content":{"application/json":{"schema":{"properties":{"names":{"type":"array","maxItems":200,"minItems":1,"title":"Names to screen","description":"Company, vessel or person names to check, one per entry, as plain text, e.g. [\"Sovcomflot\", \"Novo Nordisk A/S\", \"Vladimir Putin\"]. Legal forms (Ltd, LLC, GmbH, PJSC), accents, punctuation and word order are ignored. 1-200 names; each name gives one result row and one charge; repeats are screened once. Required."},"country":{"type":"string","title":"Country (optional)","description":"Country of the party you are screening, as an ISO 3166 alpha-2 code or English name, e.g. \"RU\" or \"Russia\". It never hides a match: listings that name other countries move to the end and get country_match false. Empty = no country ranking.","enumSuggestedValues":["AE","AF","AG","AL","AM","AN","AO","AR","AT","AU","AW","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BO","BR","BS","BY","BZ","CA","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CS","CU","CV","CW","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FR","GA","GB","GE","GG","GH","GI","GM","GN","GQ","GR","GT","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LT","LU","LV","LY","MA","MC","MD","ME","MG","MH","MK","ML","MM","MN","MO","MR","MT","MU","MV","MX","MY","MZ","NA","NE","NG","NI","NL","NO","NZ","OM","PA","PE","PH","PK","PL","PS","PT","PW","PY","QA","RO","RS","RU","RW","SA","SC","SD","SE","SG","SI","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TD","TG","TH","TJ","TM","TN","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VC","VE","VG","VN","VU","WS","XK","YE","YU","ZA","ZM","ZW"],"enumTitles":["AE: United Arab Emirates","AF: Afghanistan","AG: Antigua & Barbuda","AL: Albania","AM: Armenia","AN: Netherlands Antilles","AO: Angola","AR: Argentina","AT: Austria","AU: Australia","AW: Aruba","AZ: Azerbaijan","BA: Bosnia And Herzegowina","BB: Barbados","BD: Bangladesh","BE: Belgium","BF: Burkina Faso","BG: Bulgaria","BH: Bahrain","BI: Burundi","BJ: Benin","BM: Bermuda","BO: Bolivia","BR: Brazil","BS: Bahamas","BY: Belarus","BZ: Belize","CA: Canada","CD: Congo (Democratic Republic)","CF: Central African Republic","CG: Congo","CH: Switzerland","CI: Cote D'Ivoire","CK: Cook Islands","CL: Chile","CM: Cameroon","CN: China","CO: Colombia","CR: Costa Rica","CS: Serbia And Montenegro","CU: Cuba","CV: Cabo Verde","CW: Curacao","CY: Cyprus","CZ: Czech Republic","DE: Germany","DJ: Djibouti","DK: Denmark","DM: Dominica","DO: Dominican Republic","DZ: Algeria","EC: Ecuador","EE: Estonia","EG: Egypt","ER: Eritrea","ES: Spain","ET: Ethiopia","FI: Finland","FJ: Fiji","FR: France","GA: Gabon","GB: United Kingdom","GE: Georgia","GG: Guernsey","GH: Ghana","GI: Gibraltar","GM: Gambia","GN: Guinea","GQ: Equatorial Guinea","GR: Greece","GT: Guatemala","GW: Guinea-Bissau","GY: Guyana","HK: Hong Kong","HN: Honduras","HR: Croatia","HT: Haiti","HU: Hungary","ID: Indonesia","IE: Ireland","IL: Israel","IM: Isle of Man","IN: India","IQ: Iraq","IR: Iran","IS: Iceland","IT: Italy","JE: Jersey","JM: Jamaica","JO: Jordan","JP: Japan","KE: Kenya","KG: Kyrgyzstan","KH: Cambodia","KI: Kiribati","KM: Comoros","KN: Saint Kitts And Nevis","KP: DPRK","KR: Korea, South","KW: Kuwait","KY: Cayman Islands","KZ: Kazakhstan","LA: Lao People's Democratic Republic","LB: Lebanon","LC: Saint Lucia","LI: Liechtenstein","LK: Sri Lanka","LR: Liberia","LT: Lithuania","LU: Luxembourg","LV: Latvia","LY: Libya","MA: Morocco","MC: Monaco","MD: Moldova","ME: Montenegro","MG: Madagascar","MH: Marshall Islands","MK: North Macedonia, The Republic of","ML: Mali","MM: Burma","MN: Mongolia","MO: Macao","MR: Mauritania","MT: Malta","MU: Mauritius","MV: Maldives","MX: Mexico","MY: Malaysia","MZ: Mozambique","NA: Namibia","NE: Niger","NG: Nigeria","NI: Nicaragua","NL: Netherlands","NO: Norway","NZ: New Zealand","OM: Oman","PA: Panama","PE: Peru","PH: Philippines","PK: Pakistan","PL: Poland","PS: Occupied Palestinian Territories","PT: Portugal","PW: Palau","PY: Paraguay","QA: Qatar","RO: Romania","RS: Serbia","RU: Region: Russia","RW: Rwanda","SA: Saudi Arabia","SC: Seychelles","SD: Sudan","SE: Sweden","SG: Singapore","SI: Slovenia","SK: Slovakia","SL: Sierra Leone","SM: San Marino","SN: Senegal","SO: Somalia","SR: Suriname","SS: South Sudan","ST: Sao Tome & Principe","SV: El Salvador","SX: Sint Maarten","SY: Syria","SZ: Eswatini","TD: Chad","TG: Togo","TH: Thailand","TJ: Tajikistan","TM: Turkmenistan","TN: Tunisia","TR: Turkey","TT: Trinidad And Tobago","TV: Tuvalu","TW: Taiwan","TZ: Tanzania","UA: Crimea (occupied)","UG: Uganda","US: United States","UY: Uruguay","UZ: Uzbekistan","VC: Saint Vincent and the Grenadines","VE: Venezuela","VG: British Virgin Islands","VN: Viet Nam","VU: Vanuatu","WS: Samoa","XK: Kosovo","YE: Yemen","YU: Yugoslavia","ZA: South Africa","ZM: Zambia","ZW: Zimbabwe"]},"entityType":{"type":"string","enum":["any","organization","person","vessel"],"title":"Entity type","description":"Only return listings of this type, e.g. \"organization\". Default \"any\". Listings whose type the list does not state (the US Commerce and State lists) are always kept.","default":"any","enumTitles":["Any","Organization (company, bank, group)","Person","Vessel (ship)"]},"minScore":{"type":"integer","maximum":100.0,"minimum":50.0,"title":"Minimum match score","description":"Lowest similarity score (0-100) that counts as a match, e.g. 85 (default). 100 = same name after normalisation; 90-99 = small spelling differences or the name inside a longer listed name; lower values find more variants and more false positives. Range 50-100.","default":85},"lists":{"items":{"type":"string","enum":["ofac_sdn","ofac_consolidated","us_csl","uk","eu"],"enumTitles":["ofac_sdn: OFAC SDN List","ofac_consolidated: OFAC Consolidated (non-SDN) List","us_csl: US Consolidated Screening List (Commerce, State)","uk: UK Sanctions List","eu: EU Consolidated Financial Sanctions List"]},"type":"array","title":"Lists","description":"Which lists to check, any of \"ofac_sdn\", \"ofac_consolidated\", \"us_csl\", \"uk\", \"eu\", e.g. [\"ofac_sdn\", \"uk\"]. Default (or empty) = all five. The price is the same for any number of lists."}},"type":"object","required":["names"]}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/sec-company-financials":{"post":{"summary":"SEC Company Financials API: income, balance sheet, cash flow","description":"US company financials from SEC XBRL: revenue, profit, EPS, balance sheet, cash flow, free cash flow and margins per fiscal year or quarter, 2009 to today. By ticker or CIK, 10-K/10-Q and 20-F filers. Each value cites its XBRL tag and SEC filing. Q4 derived where not reported. Price: $0.005 per `company-period`.","operationId":"sec_company_financials_v1_sec_company_financials_post","requestBody":{"content":{"application/json":{"schema":{"properties":{"tickers":{"items":{"type":"string","pattern":"^\\s*[A-Za-z0-9][A-Za-z0-9./-]{0,9}\\s*$"},"type":"array","title":"Tickers","description":"US tickers as listed by the SEC, e.g. [\"AAPL\", \"MSFT\"]; share classes with a dash or dot, e.g. \"BRK-B\". Foreign companies filing 20-F/40-F work too, e.g. \"NVO\". Mapped to the CIK with the SEC's company_tickers.json; an unknown ticker is skipped with suggestions in the status message. Empty = use `ciks`."},"ciks":{"type":"array","title":"CIKs","description":"SEC Central Index Keys as digits, leading zeros optional, e.g. [\"320193\"] for Apple. Use for delisted companies and filers without a ticker. Empty = use `tickers`; at least one of the two is required."},"period":{"type":"string","enum":["annual","quarterly"],"title":"Period","description":"\"annual\" = one row per fiscal year (FY). \"quarterly\" = one row per fiscal quarter, Q1-Q4, each a discrete 3-month period (Q4 and year-to-date-only cash flows are derived, see `warnings`). Companies without quarterly XBRL data (most 20-F filers) return fiscal years instead. Default \"annual\".","default":"annual","enumTitles":["Fiscal years (10-K, 20-F)","Fiscal quarters Q1-Q4 (10-Q, 10-K)"]},"years":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Fiscal years back","description":"How many of the latest fiscal years to return per company, e.g. 5 (5 rows annual, up to 20 rows quarterly; 2 with quarterly = the last 8 quarters). XBRL data starts in 2009-2011. Default 5, max 20.","default":5},"metrics":{"items":{"type":"string","enum":["revenue","cost_of_revenue","gross_profit","research_and_development","selling_general_and_administrative","operating_profit","profit_before_tax","net_income","net_income_attributable_to_parent","eps_basic","eps_diluted","weighted_average_shares_basic","weighted_average_shares_diluted","depreciation_amortisation","total_assets","current_assets","cash_and_equivalents","total_liabilities","current_liabilities","noncurrent_liabilities","long_term_debt","total_equity","equity_attributable_to_parent","shares_outstanding","operating_cash_flow","investing_cash_flow","financing_cash_flow","capex","dividends_paid","free_cash_flow","ebitda","gross_margin","operating_margin","net_margin","return_on_equity","equity_ratio","revenue_growth"],"enumTitles":["Revenue","Cost of revenue","Gross profit","Research and development","Selling general and administrative","Operating profit","Profit before tax","Net income","Net income attributable to parent","Eps basic","Eps diluted","Weighted average shares basic","Weighted average shares diluted","Depreciation amortisation","Total assets","Current assets","Cash and equivalents","Total liabilities","Current liabilities","Noncurrent liabilities","Long term debt","Total equity","Equity attributable to parent","Shares outstanding","Operating cash flow","Investing cash flow","Financing cash flow","Capex","Dividends paid","Free cash flow","Ebitda","Gross margin","Operating margin","Net margin","Return on equity","Equity ratio","Revenue growth"]},"type":"array","title":"Metrics","description":"Only these output fields, e.g. [\"revenue\", \"net_income\", \"free_cash_flow\", \"operating_margin\"]. Valid: revenue, cost_of_revenue, gross_profit, research_and_development, selling_general_and_administrative, operating_profit, profit_before_tax, net_income, net_income_attributable_to_parent, eps_basic, eps_diluted, weighted_average_shares_basic, weighted_average_shares_diluted, depreciation_amortisation, total_assets, current_assets, cash_and_equivalents, total_liabilities, current_liabilities, noncurrent_liabilities, long_term_debt, total_equity, equity_attributable_to_parent, shares_outstanding, operating_cash_flow, investing_cash_flow, financing_cash_flow, capex, dividends_paid, free_cash_flow, ebitda, gross_margin, operating_margin, net_margin, return_on_equity, equity_ratio, revenue_growth. Empty = all of them."},"includeSources":{"type":"boolean","title":"Include sources","description":"true = each row has `sources` (per value: the XBRL tag and the SEC accession number it came from, plus how it was derived) and `filings` (form, filing date and URL of each filing cited). false = values only, about 3x smaller rows. Default true.","default":true}},"type":"object","required":[]}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/sec-company-screen":{"post":{"summary":"SEC Company Screener API: filter all US filers by financials","description":"US companies matching your filters for one calendar year or quarter: revenue, net income, margins, cash flow, assets and 30 more metrics from SEC XBRL frames, sorted and capped. Each value cites its XBRL tag and SEC filing. Same metrics as SEC Company Financials. Price: $0.002 per `screen-row`.","operationId":"sec_company_screen_v1_sec_company_screen_post","requestBody":{"content":{"application/json":{"schema":{"properties":{"period":{"type":"string","pattern":"^\\s*[Cc][Yy]\\d{4}([Qq][1-4])?\\s*$","title":"Period","description":"Calendar period in SEC frames format: \"CY2025\" = annual figures, \"CY2025Q3\" = 3-month quarter figures. Required, 2009 to the current year. Calendar-aligned: each company comes with its own fiscal period that best fits it (e.g. CY2025 holds Apple's fiscal year to Sep 2025, Microsoft's to Jun 2025, Walmart's to Jan 2026), shown in period_start/period_end. Balance-sheet metrics are taken at each company's period end."},"filters":{"items":{"properties":{"metric":{"type":"string","enum":["revenue","cost_of_revenue","gross_profit","research_and_development","selling_general_and_administrative","operating_profit","profit_before_tax","net_income","net_income_attributable_to_parent","eps_basic","eps_diluted","weighted_average_shares_basic","weighted_average_shares_diluted","depreciation_amortisation","total_assets","current_assets","cash_and_equivalents","total_liabilities","current_liabilities","noncurrent_liabilities","long_term_debt","total_equity","equity_attributable_to_parent","shares_outstanding","operating_cash_flow","investing_cash_flow","financing_cash_flow","capex","dividends_paid","free_cash_flow","ebitda","gross_margin","operating_margin","net_margin","return_on_equity","equity_ratio"],"title":"Metric","description":"Metric name, same names as sortBy, e.g. \"revenue\"."}},"type":"object","required":["metric"]},"type":"array","title":"Filters","description":"Conditions every company must meet, as a list of {metric, min, max} (either bound optional, both inclusive), e.g. [{\"metric\": \"revenue\", \"min\": 10000000000}, {\"metric\": \"net_margin\", \"min\": 0.2}] = revenue of at least $10B and net margin of at least 20%. Money in full USD (10000000000 = $10B), ratios as fractions (0.2 = 20%), EPS in USD per share. A company without a value for a filter metric is left out. Metrics: see sortBy. Empty = no filter (all companies with a sortBy value)."},"sortBy":{"type":"string","enum":["revenue","cost_of_revenue","gross_profit","research_and_development","selling_general_and_administrative","operating_profit","profit_before_tax","net_income","net_income_attributable_to_parent","eps_basic","eps_diluted","weighted_average_shares_basic","weighted_average_shares_diluted","depreciation_amortisation","total_assets","current_assets","cash_and_equivalents","total_liabilities","current_liabilities","noncurrent_liabilities","long_term_debt","total_equity","equity_attributable_to_parent","shares_outstanding","operating_cash_flow","investing_cash_flow","financing_cash_flow","capex","dividends_paid","free_cash_flow","ebitda","gross_margin","operating_margin","net_margin","return_on_equity","equity_ratio"],"title":"Sort by","description":"Metric to rank by, e.g. \"operating_cash_flow\". Same names as the SEC Company Financials Actor; the last seven (free_cash_flow to equity_ratio) are derived from two reported metrics. Companies without a value for it are left out. Empty = the first filter's metric, else revenue.","enumTitles":["Revenue","Cost of revenue","Gross profit","Research and development","Selling general and administrative","Operating profit","Profit before tax","Net income","Net income attributable to parent","Eps basic","Eps diluted","Weighted average shares basic","Weighted average shares diluted","Depreciation amortisation","Total assets","Current assets","Cash and equivalents","Total liabilities","Current liabilities","Noncurrent liabilities","Long term debt","Total equity","Equity attributable to parent","Shares outstanding","Operating cash flow","Investing cash flow","Financing cash flow","Capex","Dividends paid","Free cash flow","Ebitda","Gross margin","Operating margin","Net margin","Return on equity","Equity ratio"]},"sortOrder":{"type":"string","enum":["desc","asc"],"title":"Sort order","description":"\"desc\" = largest first (top N), \"asc\" = smallest first (e.g. the lowest net margin). Default \"desc\".","default":"desc","enumTitles":["Largest first","Smallest first"]},"maxResults":{"type":"integer","maximum":1000.0,"minimum":1.0,"title":"Max results","description":"Most companies to return (and charge for), e.g. 20 for a top 20. The status message says how many matched in total. Default 50, max 1000.","default":50},"metrics":{"items":{"type":"string","enum":["revenue","cost_of_revenue","gross_profit","research_and_development","selling_general_and_administrative","operating_profit","profit_before_tax","net_income","net_income_attributable_to_parent","eps_basic","eps_diluted","weighted_average_shares_basic","weighted_average_shares_diluted","depreciation_amortisation","total_assets","current_assets","cash_and_equivalents","total_liabilities","current_liabilities","noncurrent_liabilities","long_term_debt","total_equity","equity_attributable_to_parent","shares_outstanding","operating_cash_flow","investing_cash_flow","financing_cash_flow","capex","dividends_paid","free_cash_flow","ebitda","gross_margin","operating_margin","net_margin","return_on_equity","equity_ratio"],"enumTitles":["Revenue","Cost of revenue","Gross profit","Research and development","Selling general and administrative","Operating profit","Profit before tax","Net income","Net income attributable to parent","Eps basic","Eps diluted","Weighted average shares basic","Weighted average shares diluted","Depreciation amortisation","Total assets","Current assets","Cash and equivalents","Total liabilities","Current liabilities","Noncurrent liabilities","Long term debt","Total equity","Equity attributable to parent","Shares outstanding","Operating cash flow","Investing cash flow","Financing cash flow","Capex","Dividends paid","Free cash flow","Ebitda","Gross margin","Operating margin","Net margin","Return on equity","Equity ratio"]},"type":"array","title":"Extra metrics","description":"More fields to show per company besides the sortBy and filter metrics, e.g. [\"operating_cash_flow\", \"total_assets\"]. Same names as sortBy. Each adds a few SEC requests. Empty = only the sortBy and filter metrics (plus the inputs of derived ones)."},"tickersOnly":{"type":"boolean","title":"Only companies with a ticker","description":"true = skip companies without a ticker in the SEC's company_tickers.json (delisted companies, private issuers of public debt, subsidiaries). Default false.","default":false},"includeSources":{"type":"boolean","title":"Include sources","description":"true = each row has `sources`: per value the XBRL tag, the SEC accession number and the filing URL (or the formula for derived values). false = values only, about 3x smaller rows. Default true.","default":true}},"type":"object","required":["period"]}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/sec-filings-feed":{"post":{"summary":"SEC EDGAR Filings API: 8-K, 10-K, 10-Q feed since 1994","description":"SEC EDGAR filings (8-K, 10-K, 10-Q, S-1, 13D, 13G, Form 4 and every other form) for any company or the whole market, live or back to 1994, from the SEC's own feeds. Filter by ticker, CIK, form, 8-K item and date; flags earnings releases (Item 2.02). Returns links to each filing, not its text. Price: $0.001 per `filing`.","operationId":"sec_filings_feed_v1_sec_filings_feed_post","requestBody":{"content":{"application/json":{"schema":{"properties":{"formTypes":{"items":{"type":"string","enumSuggestedValues":["8-K","8-K/A","10-K","10-K/A","10-Q","10-Q/A","20-F","40-F","6-K","S-1","S-1/A","S-3","S-4","424B4","DEF 14A","13D","13D/A","13G","13G/A","13F-HR","3","4","5","144","SD"]},"type":"array","title":"Form types","description":"EDGAR form types, exact match, e.g. [\"8-K\", \"10-K\", \"10-Q\"]; also S-1, 13D, 13G, 4, DEF 14A, 20-F, 6-K and any other form. Add \"10-K/A\" etc. for amendments. 13D and 13G also match the SC 13D and SCHEDULE 13D names. Empty = every form."},"tickers":{"items":{"type":"string","pattern":"^\\s*[A-Za-z0-9][A-Za-z0-9./-]{0,9}\\s*$"},"type":"array","title":"Tickers","description":"Company tickers, e.g. [\"AAPL\", \"MSFT\"]. Mapped to the CIK with the SEC's own company_tickers.json. Empty (and `ciks` empty) = the whole market."},"ciks":{"type":"array","title":"CIKs","description":"SEC Central Index Keys as digits, leading zeros optional, e.g. [\"320193\"] for Apple. Use for delisted companies, funds and filers without a ticker. Empty = no CIK filter."},"earningsReleasesOnly":{"type":"boolean","title":"Earnings releases only","description":"true = only 8-Ks with Item 2.02 (Results of Operations and Financial Condition): the dates and exact times companies released earnings. Overrides `formTypes` and `itemCodes`. Default false.","default":false},"itemCodes":{"items":{"type":"string","enum":["1.01","1.02","1.03","1.04","1.05","2.01","2.02","2.03","2.04","2.05","2.06","3.01","3.02","3.03","4.01","4.02","5.01","5.02","5.03","5.04","5.05","5.06","5.07","5.08","6.01","6.02","6.03","6.04","6.05","6.06","6.10","7.01","8.01","9.01"],"enumTitles":["1.01: Entry into a material definitive agreement","1.02: Termination of a material definitive agreement","1.03: Bankruptcy or receivership","1.04: Mine safety: shutdowns and patterns of violations","1.05: Material cybersecurity incident","2.01: Completion of acquisition or disposition of assets","2.02: Results of operations and financial condition (earnings)","2.03: Creation of a direct financial obligation","2.04: Triggering events that accelerate a financial obligation","2.05: Costs of exit or disposal activities","2.06: Material impairments","3.01: Delisting or failure to meet listing standards","3.02: Unregistered sales of equity securities","3.03: Material modification to rights of security holders","4.01: Change in certifying accountant","4.02: Non-reliance on previous financial statements","5.01: Change in control of registrant","5.02: Departure or appointment of directors or officers","5.03: Amendments to articles or bylaws; change in fiscal year","5.04: Temporary suspension of trading under employee benefit plans","5.05: Amendments to or waiver of the code of ethics","5.06: Change in shell company status","5.07: Submission of matters to a vote of security holders","5.08: Shareholder director nominations","6.01: ABS informational and computational material","6.02: Change of servicer or trustee","6.03: Change in credit enhancement","6.04: Failure to make a required distribution","6.05: Securities Act updating disclosure","6.06: Static pool","6.10: Alternative filings of asset-backed issuers","7.01: Regulation FD disclosure","8.01: Other events","9.01: Financial statements and exhibits"]},"type":"array","title":"8-K item codes","description":"Only 8-Ks reporting at least one of these items, as strings, e.g. [\"5.02\"] (director/officer change), \"1.01\" (material agreement), \"2.01\" (acquisition), \"1.05\" (cybersecurity incident). Without `formTypes`, reads 8-K and 8-K/A. Empty = no item filter."},"dateFrom":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}(T.*)?)?$","title":"Filed on or after","description":"Earliest filing date, YYYY-MM-DD, e.g. \"2020-01-01\". EDGAR's index goes back to 1993. Empty = `lookbackDays` days before today (or, for tickers/CIKs without `lookbackDays`, the company's newest filings)."},"dateTo":{"type":"string","pattern":"^(\\d{4}-\\d{2}-\\d{2}(T.*)?)?$","title":"Filed on or before","description":"Latest filing date, YYYY-MM-DD. Empty = today, including filings accepted minutes ago (live EDGAR feed)."},"lookbackDays":{"type":"integer","maximum":12000.0,"minimum":1.0,"title":"Days back (when no start date)","description":"Used only when `dateFrom` is empty: read filings from this many days back until today, e.g. 365. Empty = 7 days for the whole market; for `tickers`/`ciks`, empty = each company's newest filings (its last 1,000), so \"latest 10-K of AAPL\" needs no dates."},"maxResults":{"type":"integer","maximum":1000000.0,"minimum":1.0,"title":"Max filings","description":"Maximum filings, newest first, e.g. 10 for a company's latest 10 filings. Default 100. The run stops once it has this many; you pay per filing returned.","default":100}},"type":"object","required":[]}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/credits/checkout":{"post":{"summary":"Checkout","operationId":"checkout_v1_credits_checkout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/stripe/webhook":{"post":{"summary":"Webhook","operationId":"webhook_v1_stripe_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/keys/request":{"post":{"summary":"Request Key","description":"JSON in -> JSON out (fetch); a plain form post (no JS) gets a small HTML page.","operationId":"request_key_v1_keys_request_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"options":{"summary":"Request Preflight","operationId":"request_preflight_v1_keys_request_options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/keys/verify":{"get":{"summary":"Verify Page","operationId":"verify_page_v1_keys_verify_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Verify","operationId":"verify_v1_keys_verify_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"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"}}}}