CLAUDE.md
CryptoQuant API documentation, built with Mintlify. Config:docs.json. Pages are .mdx;
API reference is generated from OpenAPI specs.
Tab → source map
MDX rendering gotchas (these break the build silently)
Mintlify compiles descriptions and page bodies as MDX. A raw<...> that isn’t a real
component is parsed as JSX; compilation fails and the entire block renders as raw text
(literal ###, | tables, backticks). Rules:
- Self-close void tags:
<br/>, not<br>. Same for<hr/>,<img ... />. Bare<br>was the cause of the Lightning/Mempool “broken page” reports. - No raw angle-bracket placeholders in prose or frontmatter:
<YOUR_API_KEY>,<token>,List<T>etc. break MDX unless they are inside a code span (`<YOUR_API_KEY>`), a code fence, or written as the entity<. Frontmatterdescription:is compiled too — it must not contain a raw<...>. - Inside fenced/inline code,
<...>and{...}are safe.{/* ... */}is a valid MDX comment.$$ ... \frac{}{} ... $$is KaTeX, not JSX — leave it.
grep -n '<br>' openapi/*.json (expect 0; only <br/>).
Code-sample conventions (keep all three APIs identical)
Everyx-codeSamples / hand-written example uses the same shape and the placeholder
token <YOUR_API_KEY> (never ${access_token}, {access_token}, $CRYPTOQUANT_API_KEY).
- Shell:
curl -X GET "URL" \newline-H "Authorization: Bearer <YOUR_API_KEY>"(-X GETis explicit even though GET is curl’s default; public/no-auth endpoints omit the-H). - JavaScript / NodeJS / Ruby / Python: match the templates already in
openapi/v2.json(auth header included,<YOUR_API_KEY>). Language order: Shell, JavaScript, NodeJS, Ruby, Python.
curl "URL" for a
protected endpoint.
limit parameter (differs by API — do not copy blindly)
Exception:
/btc/flow-indicator/stablecoins-ratio (v1) caps limit at 1000, not 100000 — intentional.
Editing the OpenAPI JSON specs
Both specs are serialized withjson.dumps(data, indent=1, ensure_ascii=False).
Re-dumping openapi/v2.json is byte-exact. For openapi/v1.json, Python rewrites four float
literals in scientific notation — restore them after dumping:
1.321e-05 → 0.00001321, 1.221e-05 → 0.00001221. Prefer surgical string replacement on the
raw text for small edits to keep diffs minimal.
Verifying changes locally
.mdx edits hot-reload. Changes to openapi/*.json require restarting the dev server
(the parsed spec is cached). Confirm a page renders with 0 console errors before claiming done.