Every read is the one GET below. A wall is not an error. The answer is 200 with content null and wall set: kind says why, hint says what to do next. Do not retry a wall.
curl https://getjson.de/https://x.com/jack/status/20
When: The page answers 401, or a Google document is not shared with Anyone with the link. What getJSON answers: getJSON reads public pages only. Send the page as a PDF or text file instead.
curl https://getjson.de/https://httpbin.org/status/401
{
"source": {
"url": "https://httpbin.org/status/401",
"finalUrl": "https://httpbin.org/status/401",
"kind": "page",
"platform": "web",
"provider": "article-readability",
"fetchedAt": "2026-10-27T21:24:18.614Z",
"cached": false
},
"content": null,
"meta": null,
"wall": {
"kind": "login",
"message": "The page needs a login (HTTP 401).",
"hint": "getJSON reads public pages only. Save the page as a PDF or text file and send the file instead."
},
"result": null
}Recorded from https://getjson.de on 2026-10-27 with no key. Long text is cut and ends in " …".
When: The page answers 403, or a Cloudflare challenge (cf-mitigated: challenge). What getJSON answers: getJSON reads with a plain request and does not get past bot checks. Send the page as a PDF or text file instead.
curl https://getjson.de/https://www.reddit.com/r/programming/top.json
{
"source": {
"url": "https://www.reddit.com/r/programming/top.json",
"finalUrl": "https://www.reddit.com/r/programming/top.json",
"kind": "page",
"platform": "web",
"provider": "article-readability",
"fetchedAt": "2026-10-27T21:24:18.856Z",
"cached": false
},
"content": null,
"meta": null,
"wall": {
"kind": "bot_protection",
"message": "The site refused the read (HTTP 403).",
"hint": "getJSON reads with a plain request and does not get past bot checks. Save the page as a PDF or text file and send the file instead."
},
"result": null
}Recorded from https://getjson.de on 2026-10-27 with no key. Long text is cut and ends in " …".
When: A page with no text at all (a JavaScript shell), a scanned PDF or an image. What getJSON answers: For a page, the head metadata stays in meta. For a file, add a schema (budget mode, also without a key), or set model=ocr with a claimed key or an account.
curl https://getjson.de/https://www.reddit.com/r/programming/
{
"source": {
"url": "https://www.reddit.com/r/programming/",
"finalUrl": "https://www.reddit.com/r/programming/",
"kind": "page",
"platform": "web",
"provider": "article-readability",
"fetchedAt": "2026-10-27T21:24:18.987Z",
"cached": false
},
"content": null,
"meta": {
"title": "Reddit",
"description": null,
"siteName": null,
"canonicalUrl": null,
"lang": "en",
"image": null
},
"wall": {
"kind": "no_text",
"message": "The page has no readable text: no article, no description and no body text.",
"hint": "The page may build its text with JavaScript, which getJSON does not run. The title and the other head metadata are in meta."
},
"result": null
}Recorded from https://getjson.de on 2026-10-27 with no key. Long text is cut and ends in " …". meta shows 6 of its fields.
When: An image behind a link. What getJSON answers: Add a schema (budget mode, also without a key), or set model=ocr with a claimed key or an account. A trial key runs the budget mode only.
curl https://getjson.de/https://www.w3.org/Icons/w3c_home.png
{
"source": {
"url": "https://www.w3.org/Icons/w3c_home.png",
"finalUrl": "https://www.w3.org/assets/logos/w3c-2025-transitional/w3c-72x48.png",
"kind": "file",
"platform": "file",
"provider": "file",
"fetchedAt": "2026-10-27T21:24:36.459Z",
"cached": false
},
"content": null,
"meta": null,
"wall": {
"kind": "no_text",
"message": "The file has no text layer (a scan or an image).",
"hint": "Add a schema, or set model to \"ocr\" (a trial key runs \"budget\" only), to read it with a model. This costs credits."
},
"result": null
}Recorded from https://getjson.de on 2026-10-27 with no key. Long text is cut and ends in " …".
When: A GitHub file that is not text. What getJSON answers: Download the file and send it to POST /v1/extract with a key.
curl https://getjson.de/https://github.com/github/explore/blob/main/topics/javascript/javascript.png
{
"source": {
"url": "https://github.com/github/explore/blob/main/topics/javascript/javascript.png",
"finalUrl": "https://github.com/github/explore/blob/main/topics/javascript/javascript.png",
"kind": "file",
"platform": "github",
"provider": "github",
"fetchedAt": "2026-10-27T21:24:19.252Z",
"cached": false
},
"content": null,
"meta": null,
"wall": {
"kind": "unsupported",
"message": "The file is not a text file.",
"hint": "Download the file and send it as multipart file to POST /v1/extract to extract it with a model."
},
"result": null
}Recorded from https://getjson.de on 2026-10-27 with no key. Long text is cut and ends in " …".
When: A file over 5 MB without a key or with a trial key that is not claimed yet, or over 50 MB with a claimed key or an account. What getJSON answers: Files up to 50 MB need a claimed key or a full account.
curl https://getjson.de/https://upload.wikimedia.org/wikipedia/commons/3/3f/Fronalpstock_big.jpg
{
"source": {
"url": "https://upload.wikimedia.org/wikipedia/commons/3/3f/Fronalpstock_big.jpg",
"finalUrl": "https://upload.wikimedia.org/wikipedia/commons/3/3f/Fronalpstock_big.jpg",
"kind": "file",
"platform": "file",
"provider": "file",
"fetchedAt": "2026-10-27T21:24:36.076Z",
"cached": false
},
"content": null,
"meta": null,
"wall": {
"kind": "too_large",
"message": "The file is larger than 5 MB.",
"hint": "Files up to 50 MB need a claimed key or a full account."
},
"result": null
}Recorded from https://getjson.de on 2026-10-27 with no key. Long text is cut and ends in " …".
The envelope type also names the kinds paywall, not_found and not_html. No provider sets them today.
getJSON reads any content a user or an agent points at, a web page or a file, and returns JSON in your schema, validated. Try and use it without an account.