Patta Verification API: check a patta or TSLR certificate against the register
Yes. certificate_verify takes what is printed on a Tamil Nadu land certificate (the code under the QR on a patta, chitta, A-register or TSLR extract, the full link a QR scanner opened, or the printed reference number) and returns what the revenue register holds for it: the place, survey and sub-division, tenure, land class, extent, assessment, holder, and who signed the extract and until when it is valid. A QR code is decrypted, which only the register can produce, so it checks the paper; a reference number only looks up the parcel it names. It costs 1 credit per certificate read back, and nothing otherwise.
https://verified.realestate/api/v1/tools/certificate_verify- Price
- 1 credit per answer
- Source
- Revenue department register
- Coverage
- Village and town certificates
- Answers in
- Usually 1 to 20 seconds
Example
curl -X POST https://verified.realestate/api/v1/tools/certificate_verify \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"code":"URB/02/01/004/001/0018/1017/114"}'
{
"ok": true,
"status": "ok",
"data": {
"found": true,
"status": "verified",
"check": "reference",
"reference": "URB/02/01/004/001/0018/1017/114",
"parcel": {
"district": "02", "taluk": "01", "town": "004", "ward": "001",
"block": "0018", "survey_no": "1017", "subdiv_no": "114"
},
"record": {
"location": [
{ "label": "District", "en": "Chennai", "ta": "சென்னை" },
{ "label": "Taluk", "en": "Tondiarpet", "ta": "தண்டையார்பேட்டை" },
{ "label": "Town", "en": "Tondiarpet (Part 4)", "ta": "தண்டையார்பேட்டை பகுதி 4" },
{ "label": "Ward", "en": "001", "ta": "001" },
{ "label": "Block", "en": "0018", "ta": "0018" }
],
"parcel": { "survey_no": "1017", "sub_div_no": "114", "old_survey_no": null },
"classification": {
"tenure": { "ta": "ரயத்துவாரி", "en": "Ryotwari" },
"utilisation": "வீடு"
},
"extent": { "hectare": "0", "are": "2", "sq_metre": "73.0", "total_sqm": "273", "total_sqft": "2,939" },
"assessment": { "government": "0.25", "municipal": null },
"signature": { "designation": "Tahsildar", "place": "Tondiarpet taluk", "signed_on": "14-07-2016", "valid_until": "18-11-2024" },
"family": "urban"
},
"caveat": "Compare the register extract above against what is printed on the paper. A mismatch in owner, extent or classification matters more than the check itself."
},
"credits_charged": 1
}
A real answer from the API (22 Oct 2026), trimmed: the holder's name, the street and door number and the signing officer's name are left out (the holder is a private individual), with some classification fields and the proves line.
What it returns
status verified with the register's record, or one of the non-answers below. check says which kind of check ran.
| Field | What it holds |
|---|---|
status | verified, not_found, rural_reference, unreadable or unreachable. |
check | barcode (the QR payload decrypted: the paper came from the register) or reference (the parcel the printed reference names was looked up: the entry is confirmed, not the paper). |
proves | What this check establishes, in words you can show. |
record.location | District, taluk, town or village, ward and block, each in English and Tamil. |
record.parcel | survey_no, sub_div_no, old_survey_no, street and door_no. |
record.classification | tenure, land_class, soil, irrigation, taram and utilisation. |
record.extent | hectare, are, sq_metre, and the total in square metres and square feet. |
record.assessment, record.signature | The assessment, and who signed the extract, their designation, when, and the validity date. |
record.holder, record.remarks | The holder as the register writes it, and the register's remarks. |
reference, parcel, barcode | What was looked up. |
cached | true when the answer came from a recent read of the same certificate. |
message, caveat | On a non-answer, what it means. not_found is not proof of forgery. |
Inputs
The JSON body of the POST is the arguments. One string, as printed or scanned.
| Argument | Type | What to send |
|---|---|---|
coderequired |
string | The long code under the QR, the full link a QR scanner opened, or the reference number printed on the certificate (e.g. URB/02/01/004/001/0018/1017/114). |
Code
Set LANDLENS_KEY to your key. In an AI app, connect https://verified.realestate/mcp once and ask in plain words instead. In Postman, download this API's collection, import it (File, Import) and set apiKey.
curl -X POST https://verified.realestate/api/v1/tools/certificate_verify \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"code":"URB/02/01/004/001/0018/1017/114"}'
import os, requests
r = requests.post(
"https://verified.realestate/api/v1/tools/certificate_verify",
headers={"Authorization": f"Bearer {os.environ['LANDLENS_KEY']}"},
json={
"code": "URB/02/01/004/001/0018/1017/114"
},
timeout=180,
)
body = r.json()
print(body["status"], body["credits_charged"], body["data"])
const res = await fetch("https://verified.realestate/api/v1/tools/certificate_verify", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LANDLENS_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"code": "URB/02/01/004/001/0018/1017/114"
}),
});
const body = await res.json();
console.log(body.status, body.credits_charged, body.data);
Is this TSLR genuine? The reference printed on it is URB/02/01/004/001/0018/1017/114.
Your AI says the price, reads the certificate back from the register, and tells you what the check does and does not prove.
Responses
Every answer has the same envelope. What status can say for this call:
| status | What it means |
|---|---|
ok | status verified: the register returned a record. Charged 1 credit. |
not_found | status not_found (the register returned nothing, which is not proof of forgery), rural_reference, unreadable or unreachable. Nothing is charged. |
invalid_args | code is missing. |
Where the data comes from
The Tamil Nadu revenue department's land register that issues patta, chitta, A-register and Town Survey Land Register (TSLR) extracts, and its decoder for the encrypted payload printed under each extract's QR code.
QR codes on village and town certificates. Town (urban) reference numbers can be looked up; a village (rural) reference number names the application, not the land, so nothing can be looked up from it.
Live. Each certificate is read from the register when you ask. A certificate read in the last 12 hours may be served from our cache, and cached says so.
A QR payload is sent to the register's decoder and comes back as the extract it was printed from. A town reference number is split into district, taluk, town, ward, block, survey and sub-division, and that parcel is read from the town survey register.
Who uses it
Law firms
Read a patta or TSLR the vendor handed over back from the register, and compare it field by field.
Lenders
Check the patta in a loan file by its QR code before disbursal.
Property platforms
Let a seller upload a patta and verify its QR code before the listing goes live.
Limits and good practice
- Never call a certificate fake or genuine on this alone. For an authenticity comparison against the official record, order a certified copy.
- not_found is not proof of forgery: a re-keyed or newer barcode series reads the same way. Confirm with the issuing taluk office.
- A reference number check confirms the register entry, not that the paper came from the register.
- A village (rural) certificate reference names the application, not the land, so nothing can be looked up from it. Use the QR code or the patta number.
Pricing
Each certificate read back costs 1 credit; every non-answer is free. Credits come from the same LandLens wallet as the chat and the minis. How billing works.
For thousands of calls a month, a portfolio sweep or a platform built on these registers, we quote a customised bulk price, with invoicing to match.
Questions
Is there an API to verify a Tamil Nadu patta?
Yes, this one. Send the code under the patta's QR, the scanned link, or the printed reference number, and the register's record comes back.
How much does it cost?
1 credit per certificate read back. Nothing when the register returns nothing or the code cannot be read.
Does a verified answer prove the patta is genuine?
A verified QR code shows the paper came out of the register. Compare its printed fields with the record returned: a mismatch in holder, extent or classification is what matters.
Why can my village patta reference not be checked?
A rural certificate reference records the application (year, serial, district), not the land. Use the QR code, or look up the patta number with fetch_land_record.
Updated 22 Oct 2026 · OpenAPI description