Reproducible reads from the public Tvijo Wiki API
Read a public article, check its body revision, and preserve the information needed to cite and revisit it.
π― For Readers and developers building source-linked research or read-only workflows.
- Retrieve a public article and record its source, language, body hash, observation time and license.
- Distinguish a stale body revision from HTTP cache validation.
- Check a UTF-8 body hash and handle a stale-revision response.
The public Tvijo Wiki API lets you read published articles without a login or API key. To make a reading reproducible, keep the article URL, language, body hash, observation time and license together. A title alone is not enough: the text behind it can change.
Find and read a page
The API documentation describes the read-only interface. Fetch an English article at /api/wiki/pages/<slug> or its Russian edition at /api/wiki/pages/ru/<slug>. For discovery, use /api/wiki/pages?lang=en&limit=20&offset=0 and /api/wiki/sections. Search with /api/wiki/search?q=<urlencoded>&lang=ru; URL-encode the query. A search result or snippet is a starting point, so read the full article before relying on a passage. There is no public /context endpoint in this contract.
The response includes content_md, url, lang, sha256 and a license block. The hash is calculated from the UTF-8 bytes of the returned Markdown body. It identifies that body, not its truth, rights or the entire response. The updated field is a publication timestamp; it is not guaranteed to be the time of the latest body modification.
Check a held revision
Request the same page with ?sha256=<held> to ask whether its current body matches your held hash. A match returns 200. A different body returns 409 with error set to stale_revision and current_sha256; fetch the new body and review any answer based on the old one. Retain the old revision label rather than silently replacing it.
HTTP caching is a separate mechanism. ETag identifies an HTTP representation, and sending it in If-None-Match can return 304 when that representation is unchanged. Do not substitute the body sha256 for an ETag or assume the two values are interchangeable.
Exercise: check one public source
Run this small Python example with the standard library. It reads the existing source-linked answers exercise, checks the returned body hash, then asks for a deliberately stale revision:
import datetime, hashlib, json, urllib.error, urllib.request
url = 'https://tvijo.com/api/wiki/pages/source-linked-answers-practice'
headers = {'User-Agent': 'TvijoWikiExample/1.0'}
request = urllib.request.Request(url, headers=headers)
with urllib.request.urlopen(request, timeout=20) as response:
page = json.load(response)
assert hashlib.sha256(page['content_md'].encode('utf-8')).hexdigest() == page['sha256']
receipt = {key: page[key] for key in ('url', 'lang', 'sha256', 'license')}
receipt['observed_utc'] = datetime.datetime.now(datetime.timezone.utc).isoformat()
probe = urllib.request.Request(url + '?sha256=' + '0' * 64, headers=headers)
try:
with urllib.request.urlopen(probe, timeout=20):
raise AssertionError('Expected a stale-revision response')
except urllib.error.HTTPError as error:
result = json.load(error)
assert error.code == 409 and result['error'] == 'stale_revision'
receipt['stale_revision_status'] = error.code
print(json.dumps(receipt, ensure_ascii=False, indent=2))
The expected stale probe is 409 stale_revision. Keep the printed observation time and license with the other receipt fields. If the request fails or the response differs, preserve that result and investigate rather than marking the exercise successful.
The Wiki license permits reuse subject to citing and linking the source page. Keep that permission with the body you use; metadata about a third-party source does not itself grant rights to copy that source's body. For evaluating an answer, use the human-review practice and the knowledge-to-practice guide. A matching hash makes the input identifiable; a person still needs to check whether the answer represents it faithfully.
Search currently matches substrings; a paraphrase can miss an existing article. English and Russian are supported, and missing translated fields may fall back to English. Check the returned text as well as the requested language.
Sources
Source links and observation dates are recorded below. Review status is stated for each material.
π Article connections
Open the full knowledge graph βPublished article links. Select a node to open its article at the heading.
Article links Β· keyboard / text view
Linked articles
Next steps
Related reading
Wiki discoveries: a readerβs map for 30 October 2026
Navigate the dayβs catalog, MCP guides, source practice, API and bounded workflow observations.
Adoption and evidenceAnswers with sources: practice on one small wiki entry
Separate supported facts from missing information, preserve a source revision and give a reviewer a result they can check.
AI and process foundationData platform process and provenance across products
Plan traceable records across Tvijo, Hotido, FinEdg, and BibaMoney using synthetic contracts, explicit rights, and reviewable evidence.
AI and process foundationSpec-driven development with existing task packets
Map Spec Kit and optional OpenSpec authoring to one packet authority, observable acceptance, and preserved evidence.
π¬ Comments