LandLens Home
Land Lens

Welcome Back

Sign in to continue to dashboard

By continuing, you agree to our Terms, Privacy Policy & Refund Policy

Upload the deeds · get a title opinion

Legal Opinion API on your property documents

Yes. The LandLens legal opinion API takes the documents you hold on a Tamil Nadu property (sale deeds, patta, EC, parent documents) and returns a title opinion. Upload each file as base64, then create the project with the location and survey numbers: you get an itemised quote from 10 credits for up to 100 pages, more for longer files and for each survey number beyond three. Once approved, every page is read, classified and cross-checked against the land registers, and the opinion is written: verdict, risk score, the title chain, red flags and recommendations. It takes one to several hours; poll its status, answer anything it asks for, and read the finished report with legal_opinion.

POSThttps://verified.realestate/api/v1/tools/legal_opinion_project
Price
10 credits on approval
Source
Your documents, read against the registers
Coverage
Tamil Nadu property, rural and urban
Answers in
Quote at once; the opinion in one to several hours

Example

Request
curl -X POST https://verified.realestate/api/v1/tools/legal_opinion_project \
  -H "Authorization: Bearer $LANDLENS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"create","survey_numbers":["65/4B"],"lat":12.8421,"lng":80.031,"district_code":"03","taluk_code":"14","village_code":"196","village_name":"Kavanoor","rural_urban":"rural","upload_ids":["up_lcja6mbi1t"]}'
Responsereal answer
{
  "ok": true,
  "status": "proposal",
  "data": {
    "proposal": true,
    "action": "legal_opinion_project",
    "params": { "name": "Legal opinion - Survey 65, Kavanoor", "survey_numbers": [{ "number": "65", "subdivision": "4B", "isPrimary": true }], "...": "..." },
    "quote": {
      "credits": 10,
      "lines": ["10 credits for the opinion (up to 100 pages)"],
      "pages": 1,
      "documents": 1,
      "survey_numbers": 1
    },
    "documents": [
      { "upload_id": "up_lcja6mbi1t", "file_name": "sample-sale-deed.pdf", "pages": 1, "size_kb": 1, "uploaded_at": "2026-10-22T21:38:36+05:30" }
    ],
    "registration_office": { "sro": "Tambaram Joint 1", "village": "KAVANOOR" },
    "what_happens": "On approval 10 credits are billed up front and the documents are read, classified and cross-checked against the land registers; the AI opinion then generates. Expect one to several hours. ...",
    "message": "Legal opinion on 1 document(s), 1 page(s), survey 65/4B: 10 credits."
  },
  "credits_quoted": 0,
  "credits_charged": 0,
  "next": { "tool": "approve_action", "arguments": { "action": "legal_opinion_project", "params": { "...": "..." } } }
}

A real quote from the API on a one-page test file, trimmed for length. It was not approved.

What it returns

Six free steps around one paid approval. upload and create are free; create returns the quote with status proposal; approve_action starts the opinion; status and answer follow it.

FieldWhat it holds
upload (upload)upload_id, file_name, pages and size_kb for the file kept, how many uploads are waiting and their total pages. Files wait 24 hours.
quote (create)credits, the lines that make it up, pages, documents and survey_numbers.
documents, registration_office, what_happens (create)The files the opinion will read, the sub registrar office worked out from the revenue codes, and what happens on approval.
project_id, credits_used, project_url (approve_action)The project created, what it cost, and its page in LandLens.
status (status)The processing stage and progress, whether a report is ready, what is pending (missing documents, questions) and next, the step to take now.
recorded, submitted, pending (answer)What your answer recorded, whether the opinion resumed, and anything still open.

Ways to call it

The steps, in order. Every step but the approval is free.

1. Upload each document

One file per call, base64. A file over about 900 KB goes in numbered parts: part 1 with file_name and parts, then the rest with the upload_id part 1 returned.

{"action": "upload","file_name": "sale-deed-2011.pdf","file_base64": "JVBERi0xLjQK..."}

2. Create, and get the quote

The location, the survey numbers and the revenue codes (resolve_parcel gives them). Leave out upload_ids to use every waiting file.

{"action": "create","survey_numbers": ["65/4B"],"lat": 12.8421,"lng": 80.031,"district_code": "03","taluk_code": "14","village_code": "196"}

3. Approve

Send the next block to approve_action unchanged. This is where the opinion is charged.

{"action": "legal_opinion_project","params": {"...": "..."}}

4. Follow it

Poll status. If it asks for a document, upload it and attach it with answer; answer its questions the same way, then submit_all.

{"action": "status","project_id": 101}

Inputs

The JSON body of the POST is the arguments. Only action is required by the schema; each step takes the inputs shown in its row above.

ArgumentTypeWhat to send
actionrequired string: upload, uploads, remove, create, status, answer "upload", "uploads" (list waiting files), "remove", "create" (the quote), "status" or "answer".
file_name string upload: the file name with its extension, e.g. sale-deed-2019.pdf
file_base64 string upload: the file, base64 encoded, at most about 900 KB per call. Bigger files go in parts.
part integer upload: this part number, 1-based, when a file is sent in parts
parts integer upload: how many parts the file is sent in (omit for a single-call upload)
upload_id string remove: the upload_id to drop; upload parts 2..N: the upload_id part 1 returned
survey_numbers array create: the survey numbers, e.g. ["65/4B"] or [{"number": "65", "subdivision": "4B"}].
lat number
lng number
district_code string create: revenue codes from the free parcel lookup; they let the register checks run without guessing
taluk_code string
village_code string
rural_urban string: rural, urban
upload_ids array create: which waiting files to use. Leave out to use them all.
project_id integer status and answer: the project from the approval, or from legal_opinion list.
document_actions object answer: keyed by the missing document id from status; each {action: uploaded|not_available|explained|identifier_provided, upload_id?, value?}
question_answers object answer: keyed by the question id from status; the answer text
submit_all boolean answer: true to hand the answers to the pipeline and continue
attach_upload_ids array answer: pending uploads to add to the project as further documents when they answer no particular request
district_name string
firka_ward_number string
is_merged_upload boolean upload: true when one file holds several documents scanned together
name string create: a name for the project (optional)
questionnaire object create: what the workspace asks: dealer_name, dealer_relationship, property_type, cersai_property_type, area_value, area_unit, is_vacant, concerns
sro_code string create: the sub-registrar office code from the free SRO lookup or the EC in hand; used when the revenue codes do not map to an office, common in Chennai
sro_name string
survey_numbers_uncertain boolean
taluk_details_uncertain boolean
taluk_name string
urban_block_number string
village_name string

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/legal_opinion_project \
  -H "Authorization: Bearer $LANDLENS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"create","survey_numbers":["65/4B"],"lat":12.8421,"lng":80.031,"district_code":"03","taluk_code":"14","village_code":"196","village_name":"Kavanoor","rural_urban":"rural","upload_ids":["up_lcja6mbi1t"]}'

Responses

Every answer has the same envelope. What status can say for this call:

statusWhat it means
okupload, uploads, remove, status or answer completed; or, from approve_action, the project was created and is processing.
proposalFrom create: the quote. Nothing is charged. Approve it by sending next.arguments to approve_action within 30 minutes, unchanged.
not_foundstatus for a project id that is not on your account.
invalid_argsA step was missing what it needs (no file, no survey numbers, a part out of order, a file over 25 MB), or the waiting files behind a quote have expired. error says which.
insufficient_creditsHTTP 402 at approval, with the credits needed, your balance and where to top up.

Where the data comes from

Register

The documents you upload, read page by page, cross-checked against the revenue records, the registration department's encumbrance index and the other registers the LandLens pipeline reads, and written into one opinion.

Coverage

Tamil Nadu property, village or town survey. PDF, JPEG, PNG, DOC and DOCX files up to 25 MB each, up to 25 files waiting for one project.

How current

The registers are read when the opinion runs, so the cross-checks are as of that day.

How we read it

The same pipeline as the LandLens workspace: documents are classified, the title chain reconstructed from them and checked against the registers, and anything missing becomes a question or a document request you answer before the opinion is finished.

Who uses it

Banks and NBFCs

Send the borrower's title documents from your loan system and get a verdict, risk score and conditions back on the file.

Law firms

Get a first reading of a bundle of deeds, with the reconstructed chain and the gaps, before the advocate's own review.

Property platforms

Offer a title opinion on the documents a seller uploads, inside your own flow.

Limits and good practice

  • One file per call, about 900 KB of file per call. Larger files go in numbered parts; each document can be up to 25 MB.
  • Waiting files are kept 24 hours. A quote whose files have expired is refused at approval; upload again and create again.
  • The opinion reads what the documents and registers show. Points it lists as needing manual verification have not been verified, and it is not a substitute for an advocate's signed opinion where one is required.
  • The opinion can pause and ask for a missing document or an answer. Poll status and reply with answer, or it waits.

Pricing

10 credits on approval

An opinion costs from 10 credits for up to 100 pages, with more for each further 50 pages and for each survey number beyond three, all shown in the quote. It is charged once, at approval; every other step is free. Credits come from the same LandLens wallet as the chat and the minis. How billing works.

Calling at volume?

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.

WhatsApp 99961 29996

Questions

Is there an API for a property legal opinion in India?

Yes, for Tamil Nadu property. Upload the documents to LandLens over the API, approve the quote, and read the finished title opinion as JSON: verdict, risk score, title chain, red flags and recommendations.

How much does it cost?

From 10 credits for up to 100 pages and three survey numbers. Longer files and more survey numbers add to it, and the quote shows the exact total before you approve.

How long does it take?

One to several hours after approval. Poll status for the stage and progress.

How do I send a large PDF?

In parts: part 1 with file_name and parts, then each further part with the upload_id part 1 returned, each at most about 900 KB of file.

How do I read the finished opinion?

With legal_opinion, action read and the project_id.

Updated 22 Oct 2026 · OpenAPI description