Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: Glyph Health API
description: 'A language for agents: encode content into the cheapest substrate the reading model can parse, with honest per-reader token math. Fillin is the retrieval product — a time-series index of the dev internet that closes the gap between an LLM''s training cutoff and now.'
version: 0.1.0
tags:
- name: Health
paths:
/v1/health:
get:
summary: Healthz
description: 'Liveness + freshness. No auth.
Returns the public health signal an uptime monitor or evaluating agent
expects (`{"ok": true}`) plus a minimal freshness echo — last ingest
timestamp and lag in seconds — so a caller can verify the corpus is
actually being kept current without burning the `/v1/corpus` aggregate.
Reads from the same cached aggregate as `/v1/corpus`; no extra DB cost.
When `stale_sources` is non-empty, `recovery` tells an agent which sources,
how far past SLO they are, the catch-up window the scheduler will use, and
(only if the scheduler has recorded one) the last attempt. See freshness.py
for the SLO table. The field is absent when every source is inside SLO.'
operationId: healthz_v1_health_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
tags:
- Health
/health:
get:
summary: Healthz
description: 'Liveness + freshness. No auth.
Returns the public health signal an uptime monitor or evaluating agent
expects (`{"ok": true}`) plus a minimal freshness echo — last ingest
timestamp and lag in seconds — so a caller can verify the corpus is
actually being kept current without burning the `/v1/corpus` aggregate.
Reads from the same cached aggregate as `/v1/corpus`; no extra DB cost.
When `stale_sources` is non-empty, `recovery` tells an agent which sources,
how far past SLO they are, the catch-up window the scheduler will use, and
(only if the scheduler has recorded one) the last attempt. See freshness.py
for the SLO table. The field is absent when every source is inside SLO.'
operationId: healthz_health_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
tags:
- Health
components:
securitySchemes:
HTTPBearer:
type: http
scheme: bearer