readable AI benchmarks

Overview

This page documents the json routes. The Graph on / is a scatter of Blended price vs Quality Score / Value Score. It is not the ranking. Ranked pick is GET /api/recommend. No API key.

  • models[] is the requested ranking (default: Quality Score)
  • price[] is Value Score (quality per dollar). It is not cheapest Blended price.
  • cheap[] is lowest Blended price above 0
  • lookup: ?q=NAME (name / slug / provider)

Rankings

FieldTypeDescription
Quality Scorenumber 0-100precision = Correct / (Correct + Incorrect); excessWrong = max(0, Incorrect − Correct); answerQuality = clamp((0.6 × Correct + 0.4 × precision) × (1 − excessWrong × 0.75)); Quality Score = (Σ available weight × component / Σ available weight) × 100, with weights 0.50 / 0.20 / 0.075 / 0.075 on answerQuality, clamp(Intelligence/65), clamp(Coding/80), clamp(Agentic/60); missing index drops from both sums Formula v1; answerQuality has a 0.50 pre-normalization weight and all available weights normalize. Published AA indices are combined without source-overlap correction; higher is better.
Value Scorenumber 0-100capability = clamp(Intelligence / 65); reliability = clamp(Correct × (1 − Incorrect × 0.35)) with missing Incorrect = 0; affordability = 1 / (1 + log10(1 + max(0, blendedPrice) × 8) × 0.45); Value Score = (0.6 × capability + 0.4 × reliability) × affordability × 100 Formula v1; always uses blendedPrice, not selected graph cost. higher is better.
Reliabilitynumber 0-100Reliability = clamp((correct − incorrect + 1) / 2, 0, 1) × 100; requires finite correct and incorrect; abstain is not an input Formula v1; Graph Y-axis only. higher is better.
Blended priceUSD / 1M tokens7:2:1 cache-hit · input · output. lower is better.
Intelligence Indexnumberlive data Intelligence Index on the Graph and Shortlist.
Coding Indexnumberlive data Coding Index.
Agentic Indexnumberlive data Agentic Index.
Correct answersrate 0-1share of Omniscience questions answered correctly.
Incorrect answersrate 0-1share of Omniscience questions answered incorrectly.

cheap[] skips blendedPrice of 0 (local / unpublished rows).

Authentication

None. GET, HEAD, OPTIONS. CORS *.

GET/api/recommend

ranked pick for a constraint set. Default goal=quality, limit=10. Default body also includes price[] and cheap[]. read is the first field after source.

Query

KeyTypeDefaultDescription
goalquality | price | cheap | coding | intelligence | evidencequalityquality: Quality Score. price: Value Score (not cheapest USD). cheap: lowest Blended price above 0. coding / intelligence: those indexes. evidence: published evidence score.
maxBlendedPricefinite numbernoneUSD / 1M Blended price ceiling.
minIntelligencefinite numbernoneminimum Intelligence Index.
minQualityValuefinite numbernoneminimum Quality Score.
reasoningtrue | falsenonekeep only reasoning or non-reasoning rows.
openWeightstrue | falsenoneopen or closed weights.
minContextWindowinteger tokensnoneminimum context window.
inputModalitycomma list text,image,video,speechnoneAND: model must include every listed input.
outputModalitycomma list text,image,video,speechnoneAND: model must include every listed output.
providerstring, max 64nonecase-insensitive provider substring.
qstring, max 64nonelookup by name / slug / provider. example: ?q=grok
limitinteger 1-1010row cap. 11 is 400.

Unknown keys return 400.

Response fields

FieldTypeDescription
sourcestringalways recommend
readstringfirst field after source. models[] is the requested ranking. price[] is Value Score, not cheapest USD. cheap[] is lowest Blended price. lookup: ?q=NAME.
goalstringapplied goal.
updatedAtISO datetimefrom the models feed, else now.
notestringlive ranking. HTML is a graph view, not the ranking. do not scrape /.
filtersobjectecho of applied query keys.
countintegerlength of models[].
modelsarrayrequested ranking.
pricearrayValue Score ranking. omitted when goal=price.
cheaparraylowest Blended price above 0. omitted when goal=cheap.

models[] row

FieldTypeDescription
slugstringcanonical slug.
namestringdisplay name.
providerstringcreator name.
reasoningboolean or nullreasoning row, if listed.
openWeightsboolean or nullopen weights, if listed.
contextWindowTokensinteger or nullcontext window.
inputModalitiesstring[]text / image / video / speech.
outputModalitiesstring[]text / image / video / speech.
blendedPricenumber or nullBlended price, USD / 1M.
intelligencenumber or nullIntelligence Index.
codingnumber or nullCoding Index.
agenticnumber or nullAgentic Index.
correctnumber or nullCorrect answers rate.
incorrectnumber or nullIncorrect answers rate.
qualityValuenumber or nullQuality Score 0-100.
priceValuenumber or nullValue Score 0-100.
whystringone short sentence from actual numbers.

Example Request

curl -sS "https://models.deggo.fyi/api/recommend"
curl -sS "https://models.deggo.fyi/api/recommend?q=grok"
curl -sS "https://models.deggo.fyi/api/recommend?goal=cheap"
from urllib.request import Request, urlopen

req = Request(
    "https://models.deggo.fyi/api/recommend",
    headers={"Accept": "application/json"},
)
with urlopen(req) as response:
    print(response.read().decode())

Example Response

{
  "source": "recommend",
  "read": "models[] is the requested ranking. default goal=quality. price[] is quality per dollar, not cheapest USD. cheap[] is lowest blendedPrice above 0. lookup one model: GET /api/recommend?q=NAME. HTML is a graph view, not the ranking.",
  "goal": "quality",
  "updatedAt": "<from models feed, else ISO now>",
  "note": "live ranking. HTML is a graph view, not the ranking. do not scrape /.",
  "filters": { "goal": "quality", "limit": 10 },
  "count": 10,
  "models": [
    {
      "slug": "",
      "name": "",
      "provider": "",
      "reasoning": true,
      "openWeights": false,
      "contextWindowTokens": 0,
      "inputModalities": [],
      "outputModalities": [],
      "blendedPrice": 0,
      "intelligence": 0,
      "coding": 0,
      "agentic": 0,
      "correct": 0,
      "incorrect": 0,
      "qualityValue": 0,
      "priceValue": 0,
      "why": "short sentence from actual numbers"
    }
  ],
  "price": [],
  "cheap": []
}

Errors

StatusBodyDescription
400{ "error": "unknown query key: ..." }
{ "error": "invalid limit" }
{ "error": "query too long" }
unknown key, out of range, or query string over 512.
429{ "error": "rate limit" }Retry-After: 60. 30 / 60s per IP. 120 / 60s global.
503{ "error": "models unavailable" }catalog loader failed.
405{ "error": "method not allowed" }not GET, HEAD, or OPTIONS.

GET/api

Machine index. Fetch this first if query keys are unknown. Field use explains models[] vs price[] vs cheap[].

Example Request

curl -sS "https://models.deggo.fyi/api"

Other routes

  • /api/models full catalog the Graph uses. not a ranking. do not hammer. prefer recommend.
  • /api/benchmarks external boards
  • /api/subscriptions provider plans
  • /llms.txt crawler pointer

Limits

  • 30 / 60s per IP on /api and /api/recommend
  • 120 / 60s global
  • query string <= 512 characters
  • limit 1-10
  • no API key
  • GET / HEAD / OPTIONS only