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.

Built here Private beta Usage-based
algoholic / api / analyze
$ 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 }
}
§ 01
What it's for

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.

01

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.

02

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.

03

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.

§ 02
The endpoint

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.

Endpoint GETPOST/api/analyze
Auth None for the public endpoint. Key auth (Authorization: Bearer) is planned for the private-beta tiers.
Rate limit 12 requests per minute, per IP, on the public endpoint. Higher per-key limits are planned.
Params 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.
Request
# 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.

Response · 200
{
  "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.

Errors
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.
Status — the honest version

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.

§ 03
Response shape

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.

fieldtypemeaning
totalnumberThe 0–100 structural readiness score — the headline number.
gradestringHuman band: Citation-grade · Retrievable · Structurally fragile · Invisible by default.
bandstringMachine key for the grade: citation · retrievable · fragile · invisible.
methodstringAlways "structural" — an analysis of the page text, never a live model probe.
projectedobject{ min, max, delta } — the score within reach if the weak dimensions are remediated.
dimensions[]arrayThe eight scored dimensions, each { key, label, score, max, evidence, fix, essay }.
topFixes[]arrayThe three highest-leverage fixes, each { label, fix, essay }.
url · titlestringThe page that was fetched and its <title>.
words · sentencesnumberThe body-text counts the score is computed over.
version · fetchedAtstringEngine version and an ISO-8601 timestamp. Nothing is stored server-side.
The eight dimensions in dimensions[]
01 Quantification quantification 20 pts
02 Source anchoring sourcing 17 pts
03 Entity specificity entities 15 pts
04 Qualifier proximity qualifiers 12 pts
05 Chunk survival chunking 12 pts
06 Front-loading frontload 8 pts
07 Machine-readable identity schema 10 pts
08 Superlative liability superlatives 6 pts

Weights sum to 100. Each dimension object also carries the evidence string, a concrete fix, and the essay path that documents it.

§ 04
Plans

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.

Dev
Live today
Free
the public structural endpoint
  • 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
Read the docs ↑
Scale
Planned · private beta
By arrangement
high volume + live model probing
  • Everything in Pro, at higher volume
  • Live 14-model audit endpoints
  • Additionally needs model-provider API keys
  • Limits and terms set with you directly
Talk to Gilad →

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.

Goes straight to my inbox — no sequence, no CRM. The public endpoint already works with no key at all.