Tools · 11 · developer API
The Algoholic API.
The structural readiness engine behind Am I in the AI? — as a JSON endpoint. Score any page programmatically, so readiness becomes a check in your pipeline, not a thing you remember to paste into a form.
$ curl "https://algoholic.com/api/analyze?url=https://example.com/page"
{
"method": "structural",
"total": 68,
"grade": "Retrievable",
"band": "retrievable",
"projected": { "min": 80, "max": 88, "delta": 20 }
} A score you can automate.
The UI version answers "is this one page ready?" The API answers it for every page, on every deploy, without a human in the loop. Three shapes that come up first.
CI gates
Fail the build when a page regresses. Score the URLs a pull request touches and block the merge if structural readiness drops below your threshold — the same discipline you already apply to Lighthouse or bundle size.
Bulk audits
Score a whole sitemap in one run. Loop the endpoint over every URL, write the total and the eight per-dimension scores to a table, and rank the pages bleeding the most citation surface to the top.
Dashboards
Track the one number that predicts citation survival. Pull scores on a schedule into your BI tool and watch the trend by template, by author, by section — not one page at a time in a browser tab.
One call, no ceremony.
The public structural endpoint is live now. Pass a URL, get the score. It is the exact engine that runs behind the free tool — same weights, same output, documented in the methodology.
/api/analyze Authorization: Bearer) is planned for the private-beta tiers. url — required. The absolute URL to fetch and score; pass it in the query string, or as JSON on a POST. Omit the scheme and https:// is assumed. # GET — no key required (public structural endpoint, live today)
curl "https://algoholic.com/api/analyze?url=https://example.com/page" # POST works too — pass the url in a JSON body
curl -X POST https://algoholic.com/api/analyze \
-H "content-type: application/json" \
-d '{"url":"https://example.com/page"}' # Planned (private beta) — key-authenticated + metered
curl "https://algoholic.com/api/analyze?url=https://example.com/page" \
-H "authorization: Bearer algk_live_xxx" The third form is illustrative — key auth is in development, not live.
{
"version": "v1.0",
"method": "structural",
"grade": "Retrievable",
"band": "retrievable",
"url": "https://example.com/page",
"fetchedAt": "2026-07-10T14:22:05.001Z",
"title": "Example — Product Overview",
"words": 1284,
"sentences": 72,
"total": 68,
"projected": { "min": 80, "max": 88, "delta": 20 },
"dimensions": [
{
"key": "quantification",
"label": "Quantification",
"score": 12,
"max": 20,
"evidence": "14 of 72 sentences carry a specific number, date, or measured unit.",
"fix": "Replace vague magnitude words with the real number ...",
"essay": "/research/statement-level-visibility"
},
{
"key": "sourcing",
"label": "Source anchoring",
"score": 9,
"max": 17,
"evidence": "6 sentences reference a study, audit, named source, or citation.",
"fix": "Anchor load-bearing claims to a named, dated primary source ...",
"essay": "/research/taxonomy-llm-citation-behavior"
}
// ... 6 more dimensions
],
"topFixes": [
{
"label": "Qualifier proximity",
"fix": "Put the claim and the qualifier that makes it true in one sentence ...",
"essay": "/research/chunking-is-the-new-pagination"
}
// ... up to 2 more
]
} Trimmed for the page. The live response returns all eight dimensions and up to three topFixes. Field-by-field reference below.
400No url provided in the query string or JSON body.422The page could not be fetched, has under 80 words of body text, or took longer than 10s to respond.429Rate limit reached — retry in a minute.503The scorer is temporarily disabled.
The structural endpoint (GET / POST /api/analyze) is public and live today;
it powers Am I in the AI? and every example above. The productised,
key-authenticated, usage-metered tiers are in development — they need an auth keystore
and billing, which are not built yet, so they are offered as a private beta you can request into.
The live model-probing endpoints (the 14-model audit) additionally depend on model-provider API keys.
No SLAs or uptime figures are promised while the paid API is in beta — when they exist, they will be
measured, not asserted.
Every field, defined.
No opaque payload. The score is structural, computed from your page's actual text — so each number traces back to something you can read and change.
| field | type | meaning |
|---|---|---|
| total | number | The 0–100 structural readiness score — the headline number. |
| grade | string | Human band: Citation-grade · Retrievable · Structurally fragile · Invisible by default. |
| band | string | Machine key for the grade: citation · retrievable · fragile · invisible. |
| method | string | Always "structural" — an analysis of the page text, never a live model probe. |
| projected | object | { min, max, delta } — the score within reach if the weak dimensions are remediated. |
| dimensions[] | array | The eight scored dimensions, each { key, label, score, max, evidence, fix, essay }. |
| topFixes[] | array | The three highest-leverage fixes, each { label, fix, essay }. |
| url · title | string | The page that was fetched and its <title>. |
| words · sentences | number | The body-text counts the score is computed over. |
| version · fetchedAt | string | Engine version and an ISO-8601 timestamp. Nothing is stored server-side. |
dimensions[]Weights sum to 100. Each dimension object also carries the evidence string, a concrete fix, and the essay path that documents it.
Free to call. Metered to productise.
The public endpoint is genuinely free to hit within the rate limit. The tiers below describe where the key-authenticated API is heading — they are planned, not a checkout. Pricing: Usage-based · contact for keys.
- GET / POST /api/analyze — no key required
- Every field documented on this page
- Rate-limited per IP (currently 12 req/min)
- Fetched once, scored, discarded — nothing stored
- Key authentication + usage metering
- Higher, per-key rate limits
- Bulk scoring across a whole sitemap
- The GEO Diff endpoint (two-URL delta)
- Everything in Pro, at higher volume
- Live 14-model audit endpoints
- Additionally needs model-provider API keys
- Limits and terms set with you directly
Illustrative structure for the private beta — no SLAs, uptime, or customer counts implied. Final limits and price are set with each beta team directly.
Private beta
Request an API key.
The public structural endpoint is open now — no key, just call it. For the key-authenticated tiers (metering, bulk scoring, higher limits), tell me what you'd score and I'll add you to the private beta as each piece comes online.
See the engine in the browser at Am I in the AI? · read how every number is measured in the methodology.