ドキュメント/はじめに/Your first request
はじめに · 04 of 06

Your first request.

In about three minutes you’ll pull live ownership trajectories for ticker 6330, see each filer’s large-shareholding filings rolled up into one classified trajectory, and capture the meta.as_of token so the same query is replayable months from now.

API version
v1
Read time
~3 min
Last edited
2026-05-18

01 Prerequisites

You’ll need an API key. Generate one from the dashboard. Every key has the form ax_live_ followed by 32 hex characters.

i
Keep your key server-side.

Keys bill against your plan and count toward rate limits. Send it only from your backend, and rotate it from the dashboard if it leaks.

02 Make a request

Fetch the large-shareholding trajectories for Toyo Engineering (ticker 6330). The response carries one row per filer, aggregating that filer’s amendments into a single trajectory with summary deltas and a classified direction.

GETapi.axiora.dev/v1/companies/{ticker}/ownership/trajectoriescopy
auth Bearer·scope ownership:read·idempotent yes·meta.as_of returned
# Replace ax_live_••• with your key.
curl -X GET https://api.axiora.dev/v1/companies/6330/ownership/trajectories \
  -H "Authorization: Bearer ax_live_•••" \
  -H "Accept: application/json"

You’ll receive a JSON document with two top-level keys: data and meta. The replay token is carried inside meta, at meta.as_of.

Response · 200 OK6330 · 2 trajectories
{
  "data": [
    {
      "issuer_security_code": "6330",
      "issuer_name": "東洋エンジニアリング株式会社",
      "filer_canonical_code": "E25156",
      "filer_name": null,
      "latest_holding_ratio_pct": 4.24,
      "delta_90d_pct": null,
      "delta_180d_pct": null,
      "delta_1y_pct": null,
      "trajectory_type": "exiting",
      "streak_length": 13,
      "velocity_pp_per_month": -18.4453,
      "purpose_category": "activist",
      "first_base_date": "2026-02-18",
      "last_base_date": "2026-04-06",
      "filing_count": 14,
      "points": null
    },
    {
      "issuer_security_code": "6330",
      "issuer_name": "東洋エンジニアリング株式会社",
      "filer_canonical_code": "AXIORA_E_JPM_AM_JP",
      "filer_name": "JPモルガン・アセット・マネジメント株式会社",
      "latest_holding_ratio_pct": 5.33,
      "delta_90d_pct": null,
      "delta_180d_pct": null,
      "delta_1y_pct": null,
      "trajectory_type": "new_position",
      "streak_length": 1,
      "velocity_pp_per_month": 0.0,
      "purpose_category": "portfolio_investment",
      "first_base_date": "2021-06-30",
      "last_base_date": "2021-06-30",
      "filing_count": 1,
      "points": null
    }
  ],
  "meta": {
    "total": 2,
    "limit": 50,
    "offset": 0,
    "next_cursor": null,
    "request_id": "813ab1fb-2fd3-46e5-b986-34fe2a1b6d10",
    "computation_version": "2026.04.1",
    "ontology_version": "2.1.0",
    "data_as_of": "2026-05-22T14:30:43.878680Z",
    "as_of": "6b6d7729-0e41-4e6c-94dc-33e584afaf0d",
    "caveats": [
      "This response is a derived view, not a raw filing snapshot. Capture meta.as_of and replay with ?as_of=<token> for bit-identical reproduction.",
      "Rows aggregate across multiple filings; per-row doc_id is not currently exposed."
    ]
  }
}

03 Response schema

Every endpoint returns the same envelope: an array of typed rows under data and a metadata block under meta (which carries the as_of replay token). The fields below appear on every ownership.trajectory row.

FieldTypeDescription
filer_canonical_codestringStable identifier for the filer. Equals the filer’s EDINET code for ungrouped filers; grouped filers carry an AXIORA_ prefix.
filer_namestring · nullableFiler name. null when the name has not yet been resolved for that filer code.
latest_holding_ratio_pctnumberMost recent reported holding ratio, as a percentage of voting rights. Lifted from typed XBRL. Never inferred.
delta_90d_pctnumber · nullableChange in holding ratio over the trailing 90 days (also delta_180d_pct, delta_1y_pct). null when the window has too few filings to diff.
trajectory_typeenumHow the holding is moving, classified across the filer’s filings: accumulating, exiting, stable, or new_position. A revisable labelling layer, see §05.
velocity_pp_per_monthnumberAverage change in holding ratio, in percentage points per month, across the filer’s filings.
streak_lengthintegerConsecutive filings in the current direction.
purpose_categorystring · nullableLatest classified holding purpose (e.g. activist, portfolio_investment, pure_investment). Independent of trajectory_type.
filing_countintegerNumber of large-shareholding filings aggregated into this trajectory.
first_base_date · last_base_datestring · dateBase dates of the earliest and most recent filings in the trajectory.
pointsarray · nullablePer-filing trajectory points. Only populated on the single-filer detail endpoint; null on this list view.

04 Replay it with an as_of token

Every response carries a freeze token at meta.as_of. Pass it back to the same endpoint as the ?as_of=<token>query parameter and you’ll get back the same bytes, even if EDINET restates the filing, the schema changes upstream, or the ontology evolves.

# Same request, months later: byte-identical, replayed via the as_of token.
# Replay by passing the meta.as_of token back as the ?as_of= query param.
curl -X GET "https://api.axiora.dev/v1/companies/6330/ownership/trajectories?as_of=6b6d7729-0e41-4e6c-94dc-33e584afaf0d" \
  -H "Authorization: Bearer ax_live_•••"
Bit-identical guarantee.

If two responses share an as_of token, the bytes are identical. The SHA-256of the body is part of the token’s contract.

05 What’s deterministic, what’s not

Axiora is honest about which parts of the pipeline are typed code and which involve language models. Numbers are typed. Language is LLM-assisted. The two layers never cross.

Numbers

Typed XBRL → typed code. No model.

Every latest_holding_ratio_pct, revenue, eps is lifted directly from a schema-validated XBRL element by deterministic code. Replay them with an as_of token; you’ll get the same bytes.

Language

Translations and names go through an LLM.

Reporter-name naturalisation, JA→EN section translation, and English issuer aliases are LLM-assisted. The original Japanese is preserved alongside the translated text so you can audit the language layer.

Classification

Event labels are a separate layer.

The trajectory_type field is a labelling layer applied on top of the numbers. It may use models and can be revised, but it never changes the underlying figures.

Ontology

The ontology version travels with every response.

Every response carries the Axiora ontology_version in its meta block. When EDINET changes a schema upstream, the ontology absorbs it; your endpoint contract stays stable.

06 Errors

Axiora uses standard HTTP status codes plus a typed error.code. Every error response carries the same envelope shape so you can switch on code without parsing strings. See Errors for the full catalogue.

HTTPcodeWhen
200·Success. Response carries data and meta (with the as_of replay token).
401UNAUTHORIZEDMissing or invalid Authorization header / API key.
403FORBIDDENAuthenticated, but not allowed: a dashboard-only endpoint or a blocked request.
404NOT_FOUNDTicker is not in coverage, or freeze token has been revoked.
422VALIDATION_ERRORMalformed query parameters or unparseable date range. Body carries a detail array.
429RATE_LIMITEDExceeded your rate limit. Retry after the window in Retry-After.
500INTERNAL_ERRORUnexpected server error. Cached freeze tokens still resolve.

Next steps