API fields
What each field in the responses means and where it comes from. Responses carry data only. Paid views are 0.001 USDC per call on Solana (x402 exact); discovery: /.well-known/x402.json.
Per-company endpoints
| GET /api/solana-stocks/{ticker} | Free. Tokenized stock on Solana: tokens and mints, next_earnings, condition_count, result_counts, latest_verdict. |
| GET /api/solana-stocks/{ticker}?view=full | Paid when the ticker has a condition. Adds conditions (full rows), financials, signals. |
| GET /api/catalyst/{ticker}?view=free | Free. Any company with a condition (US / JP Weekly, sector themes, neocloud, Physical AI): identity, next_earnings, counts, latest_verdict. |
| GET /api/catalyst/{ticker} | Paid when the company has a condition; a covered company without one gets the free view at no cost. Adds conditions, financials, signals. Both views carry themes (the theme ids the company belongs to). |
| GET /api/themes | Free. themes (those with active catalysts first) and, apart, selections (weekly): id, kind, title, member_count, active_catalysts, events_next_14_days, latest_article. |
| GET /api/themes/{theme} | Free. lineage (editions, latest marked) and members: ticker, company, listed, group, source_article, next_earnings, next_event_date, active_catalysts, solana_token. |
| GET /api/themes/{theme}?view=full | Paid, 0.01 USDC. Per member: current_catalyst, latest_verdict, status_counts, conditions (full rows with status), solana_tokens (issuer, symbol, mint). |
Example: https://osd.x402jp.com/api/catalyst/6920?view=free. An unknown ticker is 404 before any payment is asked for.
Themes
| id | A sector × market: neocloud-us, neocloud-jp, physical-ai-semis-us, physical-ai-robotics-us, physical-ai-models-us, physical-ai-jp, semiconductor-supply-chain-jp, datacenter-power-jp, space-geospatial-jp, infrastructure-resilience-jp, healthcare-jp, edge-ai-field-dx-jp, financials-jp, mobility-auto-parts-jp, food-staples-jp. weekly-us and weekly-jp are the week's selection and are listed apart (selections). |
| members | The latest article edition's list (lineage marks it latest), with the article's sub-grouping in group; plus any company a catalyst was later added to under the theme, and Weekly picks in their sector. A company with no active catalyst is still listed. source_article is where the company was picked from (e.g. the IR fair exhibitor map), not a theme. |
| next_event_date | The nearer of a confirmed earnings date and the current catalyst's target date, on or after today. |
| current_catalyst | The nearest active catalyst, as a full row; null when the company has none. |
| success_conditions | On rows written since 2026-11-05: metric, operator (> >= < <=), threshold {value, unit} and source_doc — the document it is judged against. A disclosure that has to happen is {value: 1, unit: "event"}. |
| updates | New catalysts are added weekly through the chat operation (theme_catalysts) and appear the same day; existing ones are never rewritten. A newer edition's condition replaces an older one by status, not by deletion. |
next_earnings
The next earnings date, only as a primary source states it. A date estimated by a model is never returned. Checked by npm run check:earnings-dates (weekly, no API key) into data/earnings-dates.json.
| date | YYYY-MM-DD, or null when status is not confirmed. |
| status: confirmed | A future date read off a primary source; source_url is that source. |
| status: not_announced | JP: the JPX 決算発表予定日 lists were read and carry no future date for the code — the company has not notified one yet. |
| status: unverified | No primary source could be checked (US companies without an announcement on record, or the JPX fetch failed). Counted as 取得失敗. |
| source_url | JP: the JPX schedule workbook (https://www.jpx.co.jp/listing/event-schedules/financial-announcement/). US: the company's IR / press-release page the date was read from. |
| checked_at | When the source was read. |
conditions[] and latest_verdict
One row per dated condition this site set on the company. Every row carries the question, the ticker, the target date, the result and the evidence URL; rows are never reduced to an id.
| id | Stable, readable row id: us-weekly-{week}-{ticker}, jp-weekly-{week}-{ticker}, physical-ai-{n}, neocloud-us-{n}, jp-sector-{ticker}. |
| ticker / company | The company the condition is about. |
| population | US Weekly Selection, JP Weekly Selection, Physical AI series, Neocloud US, Neocloud Japan, JP Sector Research, Submitted catalyst. Hit-rates are reported per population. |
| week_of | Weekly rows: the Monday of the selection week. |
| question | The condition being judged — what has to be disclosed for a hit. |
| fail_direction | What a miss would look like, as written with the condition. Not judged on its own. |
| target_date | The date the condition is judged on. When the company's own date was checked, that date (target_date_source_url is the IR page); otherwise the date written with the condition. Judging waits until 7 days after it. |
| result | hit / partial / miss / na (the date passed and nothing could be judged) / pending / excluded (left the population before its date, e.g. delisted). |
| status | active (target date ahead, current edition) / judged (a verdict was given) / superseded (a newer edition replaced it — superseded_by is the replacement — or dropped the company) / expired (date passed, no verdict yet). |
| source_article | The article the condition, or its scoring, was published in. |
| themes | Theme ids the company belongs to; Weekly rows carry the sector theme of the pick (e.g. semiconductor-supply-chain-jp). |
| judged_at | When the result was given. |
| evidence_url | The disclosure the result was judged against (first of evidence_urls). |
| reasoning (paid) | What was observed against the question. |
| evaluator (paid) | Who judged: the model name, or the chat operation. |
| verdict_history (paid) | Earlier results and why they were corrected. A result is never overwritten in place. |
financials (paid)
The latest disclosed figures, extracted mechanically from the filing by npm run fetch:financials (no API key, no model). A value the filing does not tag is null; nothing is derived or estimated.
| US source | SEC EDGAR XBRL companyfacts. latest_quarter (a ~90-day period) and latest_annual (~365 days): revenue, operating_income, net_income, eps_diluted. |
| US value fields | value, unit, period_start, period_end, concept (us-gaap tag), form (10-Q / 10-K), filed, source_url (the filing on EDGAR). |
| JP source | TDnet 決算短信 XBRL (Summary). latest: revenue (売上高), operating_income (営業利益), ordinary_income (経常利益, JGAAP only), net_income (親会社株主に帰属する当期純利益). |
| JP period | Q1_YTD / Q2_YTD / Q3_YTD are cumulative from the start of the fiscal year, as 決算短信 report them; FY is the full year. basis: consolidated or non_consolidated. |
| JP value fields | value (JPY), prior_value, yoy_pct, source_url (the 短信 PDF on TDnet), disclosed_at. TDnet keeps documents for about a month, so older source_url links may have expired. |
| prior_value / yoy_pct | Same period one year earlier, as reported in the same filing. yoy_pct = (value − prior) / prior × 100, 1 dp; null when either is missing or prior ≤ 0. |
| null | No filing in reach yet: a private company, a non-US filer without us-gaap facts, or a JP company with no 短信 since the extraction started. |
signals (paid)
| claim / direction | One-line claim and its direction (bullish / bearish / structural). |
| source / source_url / source_tier | Where it came from: primary, secondary, opinion or leak. |
| verified | false = not confirmed against a primary source. Kept, not used for selection. |
Informational only — not investment advice. No market prices are shown or used.