ANCIENT WISDOM. YOUR NEXT CHAPTER.

Old words.
Fresh perspective.

சாணக்கிய நீதி

Tamil verses. Simple English meanings. A little perspective for everyday life — and an API to build something with it.

A modern Chanakya character wearing a saffron shawl, black hoodie and sunglasses on temple steps
TIMELESS IDEAS / TODAY'S LANGUAGEA new lens on an old text.
319Read verses one by one →17Choose a chapter →
தமிழ் + ENtwo ways to understand
One APIread, search, build
READ AT YOUR PACE

One verse at a time.

319 verses in 17 chapters.
Pick a chapter, tap a number, or press Next.

  1. 1 Choose a chapter
  2. 2 Pick a verse
  3. 3 Read Tamil + English
Chapter 11 / 17 · Verse 17210 of 319
210 of 319
CHAPTER 11 · VERSE 17

தேவத்ரவ்யம் குருத்ரவ்யம் பரதாராபிமர்சனம் |

நிர்வாஹ: ஸர்வபூதேஷு விப்ர: சாண்டால உச்யதே ||

பொருள்

குருவுக்கும் தெய்வத்திற்கும் உரிய பொருள்களைத் திருடுகிறவனும் மற்றவன் மனைவியுடன் உறவு கொள்பவனும், யாரிடமிருந்தும் யாசகம் பெறத் தயங்காது வாழ்பவனும், ஆகிய பிராமணன் தாழ்த்தப்பட்டவனாகக் கருதப்படுவான்.

IN PLAIN ENGLISH

The verse condemns theft and betrayal through an old social ranking. Respect trust and boundaries without treating poverty or asking for help as shameful.

FOR DEVELOPERS / LIVE API

Try the API.

Building an app? Test a request here.
For everyday reading, use the reader above.

API key, if your server requires one

Loading today's verse…

YOUR FIRST ENDPOINT

Loading the verse…

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
  1. Open the URL in a browser, or call it with fetch().
  2. Parse the JSON and read payload.data.
  3. 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 fieldHow to use it
idString identifier. Keep the dot: "10.15".
chapter / verseInteger chapter and verse numbers.
text.lines_taOrdered Tamil-script verse lines. Render each as a separate paragraph.
text.transliteration_taThe verse in Tamil script as one clean line.
text.meaning_taTamil explanation.
text.english_meaningA short, modern English explanation of the idea, with context when needed. It is an interpretation, not a word-for-word translation.
topicsTopic IDs for discovery. Some verses may have no tags.
metaAPI 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.

Endpoint & purposeParametersJSON shapeExample
/api/v1API overview and countsNonedata object
/api/v1/verses/{id}Get one verseformat, include_rawdata verse
/api/v1/versesBrowse and search Tamil or EnglishFilters, q, match, page, limit, include_rawdata.results[] and data.pagination
/api/v1/verses/{id}/relatedOther verses sharing topicslimit (default 5, max 20)data.results[] with verse and shared_topics
/api/v1/dailyOne daily verse, Asia/KolkataFilters, date, format, include_rawdata.date, data.timezone, data.verse
/api/v1/randomUnique random selectionFilters, count, include_rawdata[], even for one verse
/api/v1/chaptersChapter counts and available verse numbersNonedata[] chapters
/api/v1/chapters/{chapter}Browse one chapter (1–17)page, limit, include_rawdata.chapter, data.results[], data.pagination
/api/v1/topicsDiscover valid topic IDs and countsNonedata[] topics
/api/v1/batchGet several IDs in the requested orderids (required), include_rawdata[] verses
/api/v1/exportDownload all or filtered versesFilters, format=json|ndjson, include_raw{ dataset_version, records[] } or one JSON record per line; no data/meta envelope
/api/v1/qualityCollection integrity and review countsNonedata summary
/healthService statusNonedata.status and countsOpen ↗

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.

ParameterAllowed values & defaultBehavior
chapter1–17; omitted = allRestrict results to one chapter.
topicA valid ID from /api/v1/topics; omitted = allExact topic match, e.g. resilience or money.
reviewreviewed or unreviewed; omitted = bothOptional editorial-status filter. A filter can return no results.
q1–200 characters; omitted = no searchSearch Tamil text, English explanations and topic keywords. Words separated by spaces or commas.
matchall (default) or anyRequire all query words or at least one. Takes effect when q is provided.
page1–1,000,000; default 1Browse/chapter page. A page past the end returns an empty array.
limitBrowse/chapter: 1–100, default 20. Related: 1–20, default 5.Maximum records returned for that request.
countRandom: 1–20; default 1Unique records within a request. Fewer candidates than requested returns 404.
dateA real YYYY-MM-DD; default today in Asia/KolkataDaily selection stays the same for the same date, filters and content version.
idsBatch: 1–50 comma-separated IDs; requiredPreserves order and duplicates. One invalid or missing ID fails the whole request.
formatSingle/daily: json (default) or text. Export: json (default) or ndjson.Text includes Tamil lines and both meanings. NDJSON contains one verse per line.
include_rawtrue 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.

/api/v1/verses?chapter=1&topic=money&page=1&limit=5
/api/v1/verses?q=learning%20patience&match=any&limit=5
/api/v1/daily?date=2026-10-08&topic=resilience
/api/v1/random?chapter=10&count=2

Copy-and-run examples

cURL — get a verse

curl '/api/v1/verses/10.15'

JavaScript — render Tamil and English

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": "…"
  }
}
StatusWhat it means / what to do
200Successful request.
204Successful OPTIONS preflight; no response body.
304Your ETag still matches; reuse your saved body.
400Invalid ID, parameter, query or date. Read error.message.
401A key is enabled. Send x-api-key with the configured value.
404Route/verse unavailable, no daily candidates, or insufficient random candidates.
405Only GET, HEAD and OPTIONS are supported. Writes are unavailable.
414The request URL is longer than 4,096 characters. Shorten it.
500Unexpected 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.

YOUR IDEA, NEXT.

Build something
worth sharing.

Make your first request ↗