Glyph Answer API
The Answer API from Glyph — 1 operation(s) for answer.
The Answer API from Glyph — 1 operation(s) for answer.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/glyphapi-dev:glyphapi-dev-answer-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a 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.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Glyph Answer 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: Answer
paths:
/answer:
post:
summary: Answer
description: 'Synthesized mode: returns a citation-rich answer composed server-side
from the top-k retrieved docs, alongside the raw docs for verification.
Charges ANSWER_PRICE_USDC (default $0.02). Designed for weaker tool-calling
models that can''t reliably synthesize raw retrieval results; premium models
can keep using /query at $0.01 and reason over the docs themselves.'
operationId: answer_answer_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/QueryIn'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/AnswerOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- HTTPBearer: []
tags:
- Answer
components:
schemas:
Hit:
properties:
id:
type: string
title: Id
source:
type: string
title: Source
url:
type: string
title: Url
published_at:
type: string
title: Published At
title:
type: string
title: Title
text:
type: string
title: Text
score:
anyOf:
- type: number
- type: 'null'
title: Score
severity_score:
anyOf:
- type: number
- type: 'null'
title: Severity Score
affected:
items:
additionalProperties: true
type: object
type: array
title: Affected
type: object
required:
- id
- source
- url
- published_at
- title
- text
title: Hit
AnswerOut:
properties:
cutoff:
type: string
title: Cutoff
query:
type: string
title: Query
gap_days:
type: number
title: Gap Days
answer:
anyOf:
- type: string
- type: 'null'
title: Answer
citations:
items:
additionalProperties: true
type: object
type: array
title: Citations
corpus_match:
type: string
title: Corpus Match
top_score:
type: number
title: Top Score
model:
type: string
title: Model
reason:
anyOf:
- type: string
- type: 'null'
title: Reason
results:
items:
$ref: '#/components/schemas/Hit'
type: array
title: Results
model_id:
anyOf:
- type: string
- type: 'null'
title: Model Id
cutoff_source:
anyOf:
- type: string
- type: 'null'
title: Cutoff Source
model_cutoff:
anyOf:
- type: string
- type: 'null'
title: Model Cutoff
type: object
required:
- cutoff
- query
- gap_days
- answer
- citations
- corpus_match
- top_score
- model
- results
title: AnswerOut
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
QueryIn:
properties:
cutoff:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Cutoff
description: ISO8601 training cutoff. Documents with published_at strictly after this instant are returned. Optional when model_id is set; an explicit cutoff wins if both are sent.
model_id:
anyOf:
- type: string
- type: 'null'
title: Model Id
description: Catalog model id (for example claude-sonnet-5, gpt-5.4, gemini-2.5-pro, llama-4-scout, grok-4.6). Resolves to that model's training cutoff when cutoff is omitted. See data/model_cutoffs.json.
query:
type: string
maxLength: 512
minLength: 1
title: Query
description: What topic / question
k:
type: integer
maximum: 50.0
minimum: 1.0
title: K
default: 10
glyph:
type: boolean
title: Glyph
description: If true, also return the result pieces rendered as a photo glyph (a dense, VLM-readable image) under the `glyph` field. Lets a vision model read results as one image. See /v1/glyph for image bytes.
default: false
glyph_tier:
anyOf:
- type: string
- type: 'null'
title: Glyph Tier
description: 'Glyph density tier: ''6x'' | ''10x'' | ''15x''. Default ''10x''.'
sources:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Sources
description: 'Optional list of source names to restrict retrieval. Each must be a known source from the ingest registry (e.g. ''cves'', ''papers'', ''frontier'', ''arena'', ''arxiv'', ''rss'', ''hackernews'', ''github_releases''). When omitted, all sources are searched. Pricing is unchanged: a filtered /query is billed at the flat /query rate. For per-slice pricing, use the dedicated /query/{slice} routes.'
substrate:
type: string
title: Substrate
description: 'Delivery substrate for POST /v1/retrieve: ''text'' | ''glyph'' | ''answer'' | ''auto''. ''auto'' runs one retrieval and returns whichever substrate is cheapest for your reader model''s token billing (text on Claude/GPT pixel billing, dense glyph on Gemini/Qwen flat-tile billing, a synthesized answer for weak tool-callers). Ignored by /query, /answer, /v1/glyph.'
default: text
reader:
anyOf:
- type: string
- type: 'null'
title: Reader
description: Your reader model, used by substrate='auto' to pick the cheapest legible form (e.g. 'claude', 'gemini', 'qwen2.5-vl', 'gpt-4o', 'llama-3.3'). If omitted, the server auto-detects it from the 'X-Reader-Model' request header (declare it once at the transport layer) or the User-Agent; an unidentified caller is treated as pixel-billed (the safe default — auto returns text rather than overclaim a saving). Ignored unless substrate='auto'.
verbatim:
anyOf:
- type: boolean
- type: 'null'
title: Verbatim
description: 'For substrate=''auto'': set true if you need exact/verbatim text or code (auto then never picks glyph, which paraphrases). None auto-detects from the result sources/content. Ignored unless substrate=''auto''.'
type: object
required:
- query
title: QueryIn
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
securitySchemes:
HTTPBearer:
type: http
scheme: bearer