Skip to content
NYPTID Info

Developers

Every article, every source, every verdict — as JSON.

NYPTID Info publishes its whole working: the text, the numbered sources and the claim ledger showing what two independent models concluded about each sentence. The read API gives you all of it, free, with no key.

Base URL
info.nyptid.com/api/v1
Auth
None
Format
JSON, UTF-8
CORS
Any origin

Endpoints

All endpoints are GET. The index at /api/v1 lists them in machine-readable form.

GET/api/v1/articles/{slug}

One published article in full: lead, infobox, sections, numbered sources, Scripture passages, and the claim ledger with each checking model's verdict. Slugs are Wikipedia-style: spaces become underscores.

slug
Path segment, URL-encoded. Example: Solar_panel.
Request
curl https://info.nyptid.com/api/v1/articles/Solar_panel
Response (trimmed)
{
  "slug": "Solar_panel",
  "title": "Solar panel",
  "short_description": "Device that converts sunlight into electricity",
  "lead": "A solar panel is an assembly of photovoltaic cells… [1]",
  "sections": [{ "heading": "History", "paragraphs": [{ "text": "…" }] }],
  "sources": [{ "n": 1, "title": "…", "url": "https://…", "origin": "web", "excerpt": "…" }],
  "ledger": [{
    "claim": "…",
    "status": "verified",
    "sources": [1, 3],
    "verdicts": { "model-a": "supported", "model-b": "supported" },
    "note": ""
  }],
  "stats": { "claimsChecked": 48, "verified": 45, "disputed": 2, "removed": 1, "sources": 19 },
  "version": 3,
  "updated_at": "2026-09-28T14:02:11Z",
  "url": "https://info.nyptid.com/wiki/Solar_panel",
  "license": { "name": "CC BY-SA 4.0", "attribution": "NYPTID Info, info.nyptid.com" }
}

GET/api/v1/articles

Every published article's slug, URL and last update, oldest first, so pages stay stable while new articles append at the end. Built for bulk export and incremental sync.

offset
Rows to skip. Default 0.
limit
Rows to return, 1 to 1000. Default 100.
Request
curl "https://info.nyptid.com/api/v1/articles?offset=0&limit=1000"
Response (trimmed)
{
  "total": 18422,
  "offset": 0,
  "limit": 1000,
  "next_offset": 1000,
  "articles": [
    { "slug": "Solar_panel", "url": "https://info.nyptid.com/wiki/Solar_panel", "updated_at": "2026-09-28T14:02:11Z" }
  ]
}

GET/api/v1/search

Full-text search over published articles. Returns summaries with their statistics; fetch an article for its body.

q
Required. Plain words, quoted phrases and -exclusions all work.
limit
1 to 50. Default 20.
Request
curl "https://info.nyptid.com/api/v1/search?q=photovoltaic+efficiency"
Response (trimmed)
{
  "query": "photovoltaic efficiency",
  "results": [{
    "slug": "Solar_panel",
    "title": "Solar panel",
    "short_description": "Device that converts sunlight into electricity",
    "word_count": 3120,
    "stats": { "claimsChecked": 48, "verified": 45, "disputed": 2, "removed": 1, "sources": 19 },
    "updated_at": "2026-09-28T14:02:11Z",
    "url": "https://info.nyptid.com/wiki/Solar_panel"
  }]
}

Bulk export

Page through /articles with limit=1000 until next_offset is null, then fetch each article. Keep the updated_at you saw: on the next sync, refetch only the articles whose timestamp moved. Every article also carries a version that increments on each rewrite.

Shell
# Mirror the encyclopedia, then refetch only what changed.
offset=0
while [ "$offset" != "null" ]; do
  page=$(curl -s "https://info.nyptid.com/api/v1/articles?offset=$offset&limit=1000")
  echo "$page" | jq -r '.articles[] | "\(.slug)\t\(.updated_at)"' >> index.tsv
  offset=$(echo "$page" | jq '.next_offset')
done

Licence

Article text is published under CC BY-SA 4.0. Use it for anything, commercial use included, as long as you credit it and share derived text under the same licence. Credit it as:

NYPTID Info, info.nyptid.com

Where you show an article, link to its url. Cited sources keep their own licences; the API gives you their links, not their contents.

Limits and caching

There is no key and no enforced per-client rate limit today. Responses are cached at the edge for five minutes and may be served stale for up to a day while they refresh, so repeated requests are cheap for everyone.

Please keep to a few requests per second and sync incrementally rather than re-downloading everything. If abuse forces a limit, it will be documented here first and returned as HTTP 429.

Errors

Errors are JSON with a single error string, and are never cached.

  • 400

    A missing query or a malformed slug.

  • 404

    No published article has that slug. It may not be written yet.

  • 503

    The database is briefly unreachable. Retry with backoff.

Questions, or building something on top of NYPTID Info? Read how articles are made and the live accuracy figures first; they explain every field in the ledger.