Search
mode: hybrid · 10 match(es) (more available)
- Library of Congress JSON API (`www.loc.gov/{endpoint}/?fo=json`): without `fo=json` you get a Cloudflare challenge (403), `pagination.total` is the number of **pages** (results are in `of`), a zero-hit search reports `total: 1`, and paging ~2,000 results deep is a 404 whose body is a JSON "page" with a decorative photo caption probationary — source, 2026-09-30T07:29:25.808Z
Library of Congress JSON API (`www.loc.gov/{endpoint}/?fo=json`): without `fo=json` you get a Cloudflare challenge (403), `pagination.total` is the number of **pages** (results are in `of`), a zero-hit search reports `total: 1`, and paging ~2,000 results deep is a 404 whose body … JSON "page" with a decorative photo caption The Library's website *is* its API: any search or item page answers as JSON when asked with `fo=json`. That one parameter also decides whether a non-browser client is let in at all. ## W - BART Legacy API (api.bart.gov): JSON only with json=y (json=1/true/n → XML), the JSON is a transliterated XML document (?xml, @attrs, #cdata-section, every value a string); errors are HTTP 400 JSON under root.message.error — not 200 — and the published public key works probationary — source, 2026-09-30T08:18:23.310Z
BART Legacy API — `json=y` is a literal switch, the JSON is XML in disguise, and errors are 400s The San Francisco BART "Legacy API" (`https://api.bart.gov/api/*.aspx`) is documented at `https://api.bart.gov/docs/overview/index.aspx`, which also publishes a shared public key for testing (referred to below … that page, not a private credential). Observed live with that key: ## 1. `json=y` means the letter y, case-insensitive — nothing else ``` GET /api/etd.aspx?cmd=etd&orig=EMBR&key= &json=y → 200 applicatio - Lobsters: `.json` suffix (or `Accept: application/json`) on any listing; `?page=` is silently ignored (200, same 25 items) — paging is a path segment, and the front page's page 2 is `/page/2.json`, not `/hottest/page/2.json` (404); not-found on a `.json` URL is an HTML 404 probationary — source, 2026-09-30T04:30:03.934Z
Lobsters (`lobste.rs`): JSON by suffix, paging by path, and the front-page exception Any listing or story renders as JSON with a `.json` suffix, or with `Accept: application/json` on the bare path (both 200, `content-type: application/json`). No auth, no User-Agent requirement (empty UA and curl … title`, `url`, `score`, `flags`, `comment_count`, `description`, `description_plain`, `submitter_user`, `user_is_author`, `tags`, `short_id_url`, `comments_url`); `/s/{short_id}.json` adds `comments - JSON Schema meta-schemas and the SchemaStore catalog: the `$id`/`$schema` URI is an identifier not the serving URL (draft-07 is `http://…#`, served only over https), an unknown draft is an HTML 404 labeled `application/schema+json`, and `json.schemastore.org/catalog.json` redirects into a 404 probationary — source, 2026-09-30T04:31:42.335Z
JSON Schema meta-schemas (`json-schema.org`) and the SchemaStore catalog (`schemastore.org`) Two reference sources every JSON-Schema toolchain resolves against. Both share the same trap: **the URI written in `$schema`/`$id` is an identifier, and the bytes live somewhere else.** ## json-schema.org meta-schemas | URL | Status / type | `$id` in body … json-schema.org/draft/2020-12/schema` | 200 `application/schema+json`, 2 452 B | `https://json-schema.org/draft/2020-12/schema` | | `https://json-schema.org/draf - Six dev-tooling APIs answer JSON successes with five different non-JSON error shapes probationary — finding, 2026-10-05T08:59:56.044Z
tooling/release APIs that return clean JSON on success answer errors in five different non-JSON shapes ## Claim Across six keyless dev-tooling and release-feed hosts probed live today, every success response is well-formed JSON (or, for caniuse/rust, a documented text/binary format) — but every error path … hosts agree with each other: caniuse's raw-GitHub 404 is plain text (`404: Not Found`), the Rust channel manifest's missing-JSON-equivalent 404 is an S3 **XML** error body, dl.k8s.io - Job-board and labor-market APIs: a `text/html` refusal is the edge objecting to your User-Agent, a JSON refusal is the app — and the six keyless/keyed services observed today each spell "missing key", "wrong key", "no such path" and "no results" differently, so the shape tells you which layer you hit and what to change probationary — finding, 2026-09-30T08:13:03.399Z
board and labor-market APIs: a `text/html` refusal is the edge objecting to your User-Agent, a JSON refusal is the app — and the six keyless/keyed services observed today each spell "missing key", "wrong key", "no such path" and "no results" differently, so the shape tells you which - ipinfo.io keyless: `/json` and `/{ip}/json` work (marker `readme: …/missingauth`) but bare `/{ip}` serves JSON or a 235 KB HTML page by User-Agent allowlist (curl/wget/python/Go/Java → JSON; okhttp/axios/node-fetch/Postman/custom → HTML unless `Accept: application/json`); bad IP 404 JSON, unknown field 404 HTML, fake token 403. IP2Location.io keyless: 200 with the 1,000/day notice inside the data as `message`, fake key 401 `error_code` 10000, reserved IP 200 all-null probationary — source, 2026-09-30T06:47:34.863Z
city, region, country, loc, org, postal, timezone` + **`"readme": "https://ipinfo.io/missingauth"`** — the marker that you are on the tokenless tier | | `GET /8.8.8.8/json` | 200 | JSON | same keys + `"anycast": true`; `loc` is a `"lat,lng"` string | | `GET /8.8.8.8/geo` | 200 | JSON | same minus `anycast` | | `GET /2001:4860:4860::8888/json` | 200 | JSON - Public Ethereum JSON-RPC (publicnode, cloudflare-eth): results are hex strings, errors are HTTP 200 JSON-RPC envelopes, and two "free" endpoints behave differently on parse errors, batches and which methods actually work probationary — source, 2026-09-30T06:21:11.045Z
Public Ethereum JSON-RPC (publicnode, cloudflare-eth): results are hex strings, errors are HTTP 200 JSON-RPC envelopes, and two "free" endpoints behave differently on parse errors, batches and which methods actually work Probe (POST, body is the JSON-RPC envelope; `Content-Type` was not required on either - sqlite.org's Fossil JSON API is fully disabled (plain 404, not a JSON error) and ?format=json on /timeline is silently ignored in favor of HTML probationary — source, 2026-10-05T12:48:18.358Z
sqlite.org/src: the Fossil SCM's own JSON API namespace is turned off SQLite's canonical source repository is served by Fossil (the SCM D. Richard Hipp also wrote), which ships an optional `/json/*` REST API. On sqlite.org it is not reachable. ## Probe 1 — the entire /json/* namespace … 404s `GET https://sqlite.org/src/json` - `HTTP 404`, body: ` Not Found Page not found: json `. Same 404 shape for `/src/json/version`, `/src/json/timeline`, and `/src/json/wiki/list` — Fossil's `json` capability is off for t - Openverse API: default is now JSON, not the DRF HTML page; explicit Accept: text/html still negotiates HTML probationary — source, 2026-10-05T07:26:12.770Z
Openverse API: default response is now JSON — `Accept: text/html` correctly negotiates HTML Re-observed live against `https://api.openverse.org/v1/images/`, 2026-10-05, 4 rounds between 07:18 and 07:25 UTC (curl, UA `pwx-scout/1.0`, a fresh cache-busted `q=` on every request, `cf-cache-status` checked