319 verses in 17 chapters. Pick a chapter, tap a number, or press Next.
1 Choose a chapter
2 Pick a verse
3 Read Tamil + English
Chapter 1 / 17 · Verse 33 of 319
CHAPTER 1 · VERSE 3
தத் அஹம் ஸம்ப்ரவக்ஷ்யாமி
லோகானாம் ஹிதகாம்யயா |
யேன விக்ஞாத மாத்ரேண
ஸர்வஞானத்வம் ப்ரபத்யதே ||
பொருள்
மனித குலத்தின் நன்மைக்காக நான் அரசியலின் ரகசியப் புதிர்களை விவரிக்கிறேன். இந்த அறிவைப் பெறுகிறவனின் அறிவு எல் லையற்றதாய் வியாபித்திருக்கும். இந்த நன்னெறிகளைக் கடைபிடித்து ஒழுகுகிறவனுக்கு வெற்றி உறுதி.
IN PLAIN ENGLISH
Understanding how people and power work can help you make better choices. Knowledge matters most when you actually use it.
FOR DEVELOPERS / LIVE API
Try the API.
Building an app? Test a request here. For everyday reading, use the reader above.
Loading today's verse…
YOUR FIRST ENDPOINT
Loading the verse…
Your response will appear here.
02 / DOCUMENTATION
From one request to your own app.
Every endpoint. Every parameter. Examples you can copy and run.
Just want to read?
Tap Read verses, choose a chapter, then tap a numbered verse. Press Next to continue one by one or Previous to go back. You never need to edit a URL or understand JSON.
START HERE
Your first request
Use GET with the full URL below. No account or key is needed on a public deployment. The ID uses chapter.verse: 10.15 means chapter 10, verse 15.
/api/v1/verses/10.15
Open the URL in a browser, or call it with fetch().
Parse the JSON and read payload.data.
Display text.lines_ta, text.meaning_ta and text.english_meaning.
Prefer a page? Open /read/10.15. Prefer plain text? Add ?format=text to a single-verse or daily endpoint. Keep the slash between your domain and /api.
Understand the response
Standard JSON responses contain data and meta. The location of the verses depends on the endpoint; use the shape column in the reference below.
{
"data": {
"id": "10.15",
"chapter": 10,
"verse": 15,
"text": {
"transliteration_ta": "…",
"meaning_ta": "…",
"lines_ta": ["…", "…"],
"english_meaning": "People can share a chapter of life and then go their separate ways, like birds leaving the same tree in the morning. Appreciate the time together; moving on is natural, even when it hurts."
},
"topics": ["resilience"]
},
"meta": {
"api_version": "1.2.0",
"dataset_version": "…",
"developed_by": "Shyam"
}
}
Verse field
How to use it
id
String identifier. Keep the dot: "10.15".
chapter / verse
Integer chapter and verse numbers.
text.lines_ta
Ordered Tamil-script verse lines. Render each as a separate paragraph.
text.transliteration_ta
The verse in Tamil script as one clean line.
text.meaning_ta
Tamil explanation.
text.english_meaning
A short, modern English explanation of the idea, with context when needed. It is an interpretation, not a word-for-word translation.
topics
Topic IDs for discovery. Some verses may have no tags.
meta
API version, content version and developer credit. Content updates can change dataset_version.
Parse JSON before displaying it. Use the line array for verse layout and textContent for safe HTML insertion.
Complete endpoint reference
Every API request below uses GET. Paths are relative to this website's domain. “Try” runs a real example in the playground.
Website routes: / is the homepage; /docs and /api/docs show this guide; /read/{id} opens a verse reader. Use the chapter index to find valid IDs; unavailable numbers return 404.
Parameters, defaults and limits
“Filters” means chapter, topic and review. Combine them on browse, daily, random and export endpoints.
Parameter
Allowed values & default
Behavior
chapter
1–17; omitted = all
Restrict results to one chapter.
topic
A valid ID from /api/v1/topics; omitted = all
Exact topic match, e.g. resilience or money.
review
reviewed or unreviewed; omitted = both
Optional editorial-status filter. A filter can return no results.
q
1–200 characters; omitted = no search
Search Tamil text, English explanations and topic keywords. Words separated by spaces or commas.
match
all (default) or any
Require all query words or at least one. Takes effect when q is provided.
page
1–1,000,000; default 1
Browse/chapter page. A page past the end returns an empty array.
Unique records within a request. Fewer candidates than requested returns 404.
date
A real YYYY-MM-DD; default today in Asia/Kolkata
Daily selection stays the same for the same date, filters and content version.
ids
Batch: 1–50 comma-separated IDs; required
Preserves order and duplicates. One invalid or missing ID fails the whole request.
format
Single/daily: json (default) or text. Export: json (default) or ndjson.
Text includes Tamil lines and both meanings. NDJSON contains one verse per line.
include_raw
true or false (default)
Adds optional raw_text to verse objects. Use the normal text fields for display.
Use only the parameters listed for an endpoint. Unsupported names, duplicate parameters and invalid values return 400. Integers must be positive whole numbers. Search is case-insensitive keyword matching, not semantic search; related verses share topic tags.
Add <div id="verse"></div> to your HTML. This example checks errors and inserts text safely.
JavaScript — search with encoded query values
Python — print a verse
Uses Python's standard library. On Windows, use a UTF-8 terminal for Tamil.
Pagination and downloads
Browse and chapter responses return page, limit, total, pages and has_next in data.pagination. Start at page 1, increment the page, and stop when has_next is false. Keep the same query and filters between pages. Zero matches give an empty results array and pages: 0.
For the whole collection, request /api/v1/export. The JSON download uses records, not data. Add filters to export a subset. For NDJSON, split the response into nonempty lines and parse each line individually.
Errors, access and caching
{
"error": {
"code": "VERSE_NOT_FOUND",
"message": "Requested verse number is unavailable.",
"request_id": "…"
}
}
Status
What it means / what to do
200
Successful request.
204
Successful OPTIONS preflight; no response body.
304
Your ETag still matches; reuse your saved body.
400
Invalid ID, parameter, query or date. Read error.message.
401
A key is enabled. Send x-api-key with the configured value.
404
Route/verse unavailable, no daily candidates, or insufficient random candidates.
405
Only GET, HEAD and OPTIONS are supported. Writes are unavailable.
414
The request URL is longer than 4,096 characters. Shorten it.
500
Unexpected server error. Retry later; share the request ID when reporting it.
Using an optional key
If the owner enables a key, all /api/v1 requests require it. The homepage, guide, image and health endpoint stay public. Keep a private key on your server.
Browser access
CORS allows any origin by default; an owner can restrict allowed origins. Use URLSearchParams to encode Tamil queries. The API does not use cookies.
Conditional requests
Most public responses have a short cache lifetime and an ETag. Save the ETag and send it as If-None-Match; a 304 has no JSON body. Random, health and key-protected responses use no-store. HEAD returns the same headers as GET without the body. The response header x-request-id helps identify a request.