What the API covers
Every 8-K, 10-Q and 10-K on a covered company's timeline, with its form, its items and whether AIR classed it as material — an 8-K API and a material events API in one call. AIR scores, Discovery Gap reads and the Discover ranking come from the same key.
Use it as an SEC EDGAR API alternative for research: filings arrive already tied to a company and to AIR's read, so there is no EDGAR parsing on your side. Coverage is the ~1,800 companies AIR follows, not all of EDGAR.
The Free plan costs nothing, and paid plans are priced for independent developers — an affordable financial data API for filings and research reads. It serves no stock prices.
Quickstart
- Sign in, open Account → API and create a key. It is shown once — copy it then.
- Check the key and your plan:
export AIR_API_KEY=air_live_…
curl -H "Authorization: Bearer $AIR_API_KEY" https://beta.aistockradars.com/api/v1/meList companies, then read one by its ticker:
curl -H "Authorization: Bearer $AIR_API_KEY" "https://beta.aistockradars.com/api/v1/companies?per_page=5"
curl -H "Authorization: Bearer $AIR_API_KEY" https://beta.aistockradars.com/api/v1/companies/TICKEREvery response is JSON with data and a disclaimer (“Research, not investment advice.”). The full description is at /api/v1/openapi.json (OpenAPI 3.1).
Attribution
On the Free plan, every public use of AIR data from the API must show this line, linked to www.aistockradars.com where the medium allows links:
Source: AIR Stock Discovery — www.aistockradars.com
Free-plan responses carry it as attribution, with attribution_required: true. Builder and Pro waive the requirement while the subscription is active. If a paid plan ends, it applies again from the end of the paid period.
Plans
| Plan | Monthly | Yearly | Calls a day | Active keys | Attribution |
|---|---|---|---|---|---|
| Free | Free | — | 100 | 1 | Required |
| Builder | €35.09/monthEU price incl. VAT€29/month excl. VAT | €350.90/yearEU price incl. VAT€290/year excl. VAT | 10,000 | 3 | Not required |
| Pro | €119.79/monthEU price incl. VAT€99/month excl. VAT | €1,197.90/yearEU price incl. VAT€990/year excl. VAT | 25,000 | 10 | Not required |
- Daily limits are per account: all of your keys share one limit. Three keys on Builder share 10,000 calls a day between them — not 10,000 each.
- Every plan: up to 10 calls a second. The day resets at 00:00 UTC. Refused calls are not counted.
- Pro adds month-end Discover rankings for closed months and email support.
- Yearly is two months free.
- Prices marked “EU price incl. VAT” include 21% Spanish VAT, charged to consumers in the EU.
- Businesses: the price excl. VAT applies. EU businesses with a valid VAT ID are reverse-charged.
- Outside the EU, you pay the price excl. VAT. Checkout shows your exact total before you pay.
Every new account starts on Free. Upgrade in Account → API.
Endpoints
Base URL https://beta.aistockradars.com/api/v1. Send Authorization: Bearer <key> with every call.
GET /companies
The companies AIR currently covers
Ticker, name, sector and cap-size label (small, mid or large) for every company in AIR's universe, ordered by ticker. The cap label is null for a company without a current scored snapshot.
- page
- (query) Page number, from 1.
- per_page
- (query) Items per page.
Response fields
- ticker
- string
- name
- string
- sector
- Sector
- cap_band
- CapBand — Cap-size label only; AIR does not publish market-cap figures.
GET /companies/{ticker}
A company's current AIR read
The AIR score, the five perspectives as rating words, overall confidence and the Discovery Gap, exactly as the company page shows them. A company outside AIR's current universe, or whose last score is out of date, returns `status: not_current` with the site's notice and no scores.
- ticker
- (path, required) Ticker symbol, case-insensitive.
Response fields
- ticker
- string
- name
- string
- sector
- Sector
- status
- "current" | "not_current"
- notice
- string or null — Set when status is not_current.
- as_of
- date or null
- air_score
- integer or null
- overall_confidence
- integer or null
- perspectives
- array of Perspective or null
- discovery_gap
- DiscoveryGap or null
GET /companies/{ticker}/evidence
SEC filings on the company's timeline
Newest first. The last twelve months by default; `all=true` for the full history on file. `summary` is AIR's one-paragraph reading of the filing where the site shows one, otherwise null.
- ticker
- (path, required) Ticker symbol, case-insensitive.
- all
- (query) `true` for the full history instead of the last twelve months.
Response fields
- kind
- string
- accession
- string
- form
- string
- filed_at
- date
- title
- string
- summary
- string or null
- material
- boolean
- sec_url
- string or null
GET /companies/{ticker}/capital-events
Dividend and buyback facts from SEC filings
Each event is one plain sentence (`line`) as stated in the company's 8-K, with the filing it came from. `current` is the latest dividend change and the latest buyback still running; it is null for a company outside the universe. `upcoming_investor_days` lists investor days the company announced in a filing.
- ticker
- (path, required) Ticker symbol, case-insensitive.
- all
- (query) `true` for the full history instead of the last twelve months.
Response fields
- current
- object or null
- events
- array of CapitalEvent
- upcoming_investor_days
- array of InvestorDay
GET /discover
The Discover ranking
The current ranked list as /discover shows it: companies with overall confidence of at least `min_confidence`, ordered by Discovery Gap (or by AIR score with `sort=air`), ties broken by confidence. Pro plan: `month=YYYY-MM` returns the ranking at a closed month's month-end snapshot.
- page
- (query) Page number, from 1.
- per_page
- (query) Items per page.
- sort
- (query) Rank by Discovery Gap (`gap`, default) or AIR score (`air`).
- sector
- (query) Only this sector.
- month
- (query) Pro plan only. A closed calendar month, YYYY-MM. Other plans receive 403 forbidden_tier.
Response fields
- rank
- integer
- ticker
- string
- name
- string
- sector
- Sector
- cap_band
- CapBand — Cap-size label only; AIR does not publish market-cap figures.
- air_score
- integer or null
- air_word
- "Attractive" | "Constructive" | "Neutral" | "Cautious" | "Weak" | "High risk" | null
- confidence
- integer or null
- gap_band
- "Very high" | "High" | "Medium" | "Low" | "Very low" | null
- gap_score
- integer or null
- new_this_month
- boolean — First month in the ranking. Always false for a past month.
GET /ledger
The forward ledger
For each closed month, the five companies with the widest Discovery Gap at that month's end (overall confidence of at least 40), the read when they surfaced and the read now, and the filing categories since. The same record as /paper-trail; it is never rewritten.
- month
- (query) One closed month, YYYY-MM.
Response fields
- month
- string
- month_end_as_of
- date or null
- notice
- string or null — A note on that month's snapshot, when there is one.
- surfaced
- array of LedgerEntry
GET /me
Your plan, today's usage and limits
`usage_today` counts this call. The day resets at 00:00 UTC.
Response fields
- tier
- "free" | "builder" | "pro"
- tier_label
- string
- attribution_required
- boolean
- usage_today
- integer — Accepted calls today across all of your keys.
- limits
- object
- active_keys
- integer
- day_resets_at
- string
Errors
Errors are JSON: {"error": {"code", "message"}}. A refused call (401, 403, 429) is not counted. On 429 wait for the Retry-After seconds. Codes:
missing_key · invalid_key · revoked_key · rate_limited · daily_limit · not_found · bad_request · forbidden_tier · metering_unavailable · internal_error
API stability & versioning
- v1 is additive-only. We may add fields, endpoints and enum values at any time without notice. Your client must ignore fields it does not know and handle enum values it does not know.
- We will never remove or rename an existing v1 field or change what it means. Anything that would break a v1 client ships as a new version, /v2.
- When /v2 ships, v1 keeps running for at least 6 months. We announce the deprecation on the Developers page and by email to every active key owner, and from then on every v1 response carries Deprecation and Sunset headers and a deprecation field.
- Methodology changes — how scores are computed — do not change the API's shape. They are listed in the changelog with the date of their decision record.
Changelog
Version 1.0.0
- First release: companies, company read, SEC filings, capital events, Discover ranking, forward ledger and usage.
- Pro: month-end Discover rankings for closed months.
Use of the API is covered by the API Terms. AIR provides research, not investment advice.