Last updated: 2026-08-07

API and machine access

One place for people and automated agents to find TapeFlow's indicator history JSON API, its OpenAPI description, the RFC 9727 API catalog, the markdown representation of every page, and the authentication policy.

Authentication

None

No signup, key issuance, or token exchange exists.

Response format

JSON

Described by an OpenAPI 3.1 document.

Update model

Static build

Values change when the site rebuilds, not per request.

Key summary

  • Indicator history is published as a read-only JSON endpoint that answers a single unauthenticated GET.
  • The machine-readable entry point is /.well-known/api-catalog (RFC 9727), and every page response carries a Link header pointing at it.
  • There are no accounts, issued keys, or authorization servers, so no credentials should ever be sent to this origin.

Public review trail

TapeFlow's public value is visible when indicators, radar screens, methodology, and source notices connect. These paths let readers follow the source and interpretation standard behind the numbers.

Indicator history endpoint

GET https://caelion.dev/api/indicators/{slug}/history returns every stored observation for one indicator, oldest first. The slug is the same identifier used in the indicator page URL — the KOSPI index, for example, is kospi_index.

The response carries the observation window (historyStartDate, historyEndDate), the observation count (historyPointCount), and a rows array of dated values. Indicators whose source publishes open, high, low, close, and volume include those fields on each row.

Adding a trailing slash redirects with a 301 to the canonical slash-free URL. An unknown slug returns a 404 with a JSON error body rather than the site's HTML error page.

  • Example request: https://caelion.dev/api/indicators/kospi_index/history
  • Valid slugs are listed on the indicators page and in sitemap.xml.
  • Some indicators have no public detail page, and those have no history endpoint either.

Discovery path for automated agents

The machine-readable entry point sits at the location RFC 9727 defines: https://caelion.dev/.well-known/api-catalog. It is served as application/linkset+json and links the OpenAPI description of the API (service-desc), the human documentation (service-doc), and the usage terms and authentication policy (service-meta).

Every page response also carries an RFC 8288 Link header pointing at the catalog, the OpenAPI description, this page, and the markdown representation of that page — so one request is enough to reach every machine-readable resource.

  • API catalog: https://caelion.dev/.well-known/api-catalog
  • OpenAPI 3.1 description: https://caelion.dev/api/openapi.json
  • Authentication policy: https://caelion.dev/auth.md
  • Crawl policy and content signals: https://caelion.dev/robots.txt

Authentication and credentials

TapeFlow has no login, no accounts, no issued keys, and no authorization server. Every resource answers an anonymous GET, so there is no reason to send an Authorization header or an API key — and sending credentials to a service that never issued them only creates leak risk.

That is also why no OAuth protected-resource metadata or authorization-server metadata is published. Advertising an identity system this service does not run would push agents into a registration flow that does not exist. The auth.md document states the same policy in machine-readable form.

Instead of credentials, put a name and a contact URL in your User-Agent header. It is not required, but it is the only thing that distinguishes a well-behaved client if traffic ever has to be diagnosed.

Markdown representation

Every page ships a markdown twin. Send Accept: text/markdown, or append .md to the URL, and you get the text content without the page chrome; the response reports an approximate token count in the x-markdown-tokens header.

Requests that prefer text/html, or that send no Accept header at all, keep getting HTML. Because one URL serves both representations, responses carry Vary: Accept.

  • Example: curl -H "Accept: text/markdown" https://caelion.dev/en/indicators/kospi_index/
  • Example: https://caelion.dev/en/indicators/kospi_index.md

Terms and limits

This API is a static export. Values refresh when the site rebuilds, not when you call it, so it is not a real-time quote feed. Use your broker's live data for any order decision.

There is no published rate limit, but please avoid sustained parallel crawling of every indicator. Indicator values derive from third-party public sources, so redistribution follows each provider's license. The content signals in robots.txt declare the operator's preferences; they are not access controls.

Endpoint shapes and response fields can change without notice. Automated clients should treat the OpenAPI description as the reference and tolerate unknown fields being added.

Related pages