Verify My Land API, the full land verification report
Yes. The LandLens Verify My Land API orders the full land verification report on a Tamil Nadu parcel: the recorded ownership, the encumbrance certificate, the FMB sketch, terrain, property tax and 24 regulatory and environmental zone checks (water bodies, flood, coastal zone, airport height, road widening, reserve forest and the rest), saved as one report on your account. Send the parcel's location; the first call returns a quote of 6 credits for one survey, more for each survey added to the same report. Once approved the checks run in the background, and the report and its verdicts are read back with the same tool.
https://verified.realestate/api/v1/tools/vml- Price
- Free to read, quoted to create
- Source
- Registers, maps and zone layers
- Coverage
- Tamil Nadu parcels
- Answers in
- Quote at once; the checks run in the background
Example
curl -X POST https://verified.realestate/api/v1/tools/vml \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"action":"create","lat":12.8421,"lng":80.031}'
{
"ok": true,
"status": "proposal",
"data": {
"proposal": true,
"action": "vml_create",
"label": "Run the full 33+ check land verification",
"params": { "lat": 12.8421, "lng": 80.031 },
"cost": 6,
"source": "Verify My Land",
"note": "Ownership, EC, FMB, terrain, taxes and 24 regulatory zone checks, saved as a full report in Verify My Land. The checks run in the background and the verdicts post into this chat."
},
"credits_quoted": 0,
"credits_charged": 0,
"credits_waived": 0,
"next": { "tool": "approve_action", "arguments": { "action": "vml_create", "params": { "lat": 12.8421, "lng": 80.031 } } }
}
A real quote from the API, with balance_after and request_id left out. It was not approved.
What it returns
Three actions. create returns a quote (status proposal); list and read are free and return your reports.
| Field | What it holds |
|---|---|
proposal, label, params, cost (create) | The quote: what will be verified and its price. Approve params unchanged. |
queued, job_id, status_url, message (approve_action) | The report is running, billed when it starts. Follow it with job_status (the answer's poll block) or open status_url; read the verdicts afterwards with action read. |
verifications[] (list) | Up to eight reports, newest first: survey, village, district, status, checks done of the total, date and detail_url. |
verdicts[] (read) | One entry per check: check (its name, such as water_body or flood), status, detail and distance_m where it applies. |
verification_id, survey, village, district, status, checks, report_link (read) | Which report this is, how far it has run, and the path of the full report. |
Ways to call it
Pick the action by what you need.
Order a report
The parcel's point. Resolve it first with resolve_parcel so the point sits inside the survey.
{"action": "create","lat": 12.8421,"lng": 80.031}
Several surveys, one report
A list of surveys. The first carries lat and lng; each carries its own revenue codes.
{"action": "create","surveys": [{"survey_number": "65","sub_division": "4B","lat": 12.8421,"lng": 80.031,"district_code": "03","taluk_code": "14","village_code": "196"},{"survey_number": "66","district_code": "03","taluk_code": "14","village_code": "196"}]}
List your reports
Newest first, free.
{"action": "list"}
Read one report
Its verdicts, free. The id is the last number of a listed detail_url; leave it out for the newest.
{"action": "read","verification_id": 990033}
Inputs
The JSON body of the POST is the arguments.
| Argument | Type | What to send |
|---|---|---|
actionrequired |
string: list, create, read | "create" (a quote), "list" or "read". |
lat |
number | create: latitude of the parcel. |
lng |
number | create: longitude of the parcel. |
surveys |
array | create: several parcels for one combined report. The first must carry lat and lng. |
verification_id |
integer | read: which report. Leave out for the most recent. |
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/vml \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"action":"create","lat":12.8421,"lng":80.031}'
import os, requests
r = requests.post(
"https://verified.realestate/api/v1/tools/vml",
headers={"Authorization": f"Bearer {os.environ['LANDLENS_KEY']}"},
json={
"action": "create",
"lat": 12.8421,
"lng": 80.031
},
timeout=30,
)
body = r.json()
print(body["status"], body["credits_charged"], body["data"])
const res = await fetch("https://verified.realestate/api/v1/tools/vml", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LANDLENS_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"action": "create",
"lat": 12.8421,
"lng": 80.031
}),
});
const body = await res.json();
console.log(body.status, body.credits_charged, body.data);
Run a full land verification on survey 65/4B in Kavanoor village, Kancheepuram district, and tell me if anything is a risk.
Your AI resolves the parcel, shows the quote, and orders the report only after you say yes; then it reads you the verdicts.
Responses
Every answer has the same envelope. What status can say for this call:
| status | What it means |
|---|---|
proposal | From create: the quote. Nothing is charged. Approve it by sending next.arguments to approve_action within 30 minutes, unchanged. |
ok | From list or read: your reports. From approve_action: the report is queued (or one for the same parcel is already running, and nothing more is billed). |
not_found | create without a location, or list and read with no report on your account. |
insufficient_credits | HTTP 402 at approval, with the credits needed, your balance and where to top up. |
Where the data comes from
The revenue records for ownership, the registration department's encumbrance index, the state cadastral layer (FMB), terrain data, local body tax records, and the planning, environmental and infrastructure layers LandLens holds for each zone check.
Any parcel in Tamil Nadu. Up to 31 surveys in one combined report: the first survey and 30 more.
The live registers (encumbrance, revenue records) are read when the report runs; the zone layers are as of their last refresh, shown on the LandLens data freshness page.
Each check runs on the parcel's located point and boundary and returns a verdict (safe, warning, found) with a distance where it applies. The report is saved to Verify My Land on your account.
Who uses it
Banks and NBFCs
Run one standard verification on every property at login and keep the report link on the file.
Land aggregators
Verify every survey in a deal in one combined report before the term sheet.
Buyers and brokers
Check a plot for water bodies, flood, road widening and the rest before the advance.
Limits and good practice
- The approval answer carries a job_id and a status_url to follow the run, not the report id. When the job is done, find the report with action list (newest first) and read it with action read.
- Resolve the parcel first. A point that falls outside the survey you mean verifies the parcel under the point.
- Up to 31 surveys in one report. A longer list is cut, and the quote names what was left out.
- A verdict is as good as the layer behind it. Read the detail and distance, and the zone layers' freshness, before relying on a "safe".
Pricing
A report costs 6 credits for one survey, with a smaller charge for each further survey in the same report, all shown in the quote. Listing and reading reports 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 for land verification in Tamil Nadu?
Yes. LandLens orders its Verify My Land report on a parcel, after you approve a quote, and returns the verdicts of every check as JSON.
What does it check?
Ownership, the encumbrance certificate, the FMB sketch, terrain, taxes and 24 regulatory and environmental zones, such as water bodies, flood, coastal zone, airport height, road widening and reserve forest.
How much does it cost?
6 credits for one survey, with a smaller charge for each survey added to the same report. Reading reports is free.
How do I get the results?
After approval the report runs in the background. Poll job_status with the job_id the approval returns, or open its status_url, which needs no key. When it is done, call vml with action list to find the report, then action read for its verdicts.
Can I verify several surveys at once?
Yes, up to 31 in one combined report. Pass them in surveys, the first with its lat and lng.
Updated 22 Oct 2026 · OpenAPI description