DevelopersDocsAPI reference

API family

Reports API

Order a litigation check or a due-diligence report on a person or company, get a webhook when it is done, and download a PDF with a verify QR.

A report searches the public court records for a person or a company and gathers what it finds into one document. Reports run in the background: you order one, and read it when it is ready. All calls need the scope reports:write. Prices are in credits (1 credit is ₹1 before GST); see pricing.

A report is public court records only. It is not a police verification, and it does not say a person is or is not honest. A name match is a lead, not proof.

You are charged when the report completes. A report that finishes and finds no case is still charged, because the search was done. A report that fails is free. In test mode a report runs on sandbox parties only and costs nothing.

#Order a report

answersthensendsdownloadit failedPOST /reportslitigation_check or due_diligence202 reportstatus: queuedrunningreport.completedevent on your webhookGET /reports/{id}/pdfwith a verify QRreport.failedfree
A report, start to PDF

POST /reports · litigation check ₹79, then ₹59 from 1,000 a month, ₹45 from 10,000 a month · due diligence ₹299, then ₹249 from 500 a month

Field Meaning
type litigation_check or due_diligence. Required.
subject.kind person or company. Required.
subject.name The person's or company's name, at least 3 letters. Required.
subject.father_name A person's father's name. Strongly narrows matches; send it when you have it.
subject.cin A company's 21-character Corporate Identity Number. A CIN found in a record confirms the match.
subject.state, subject.district Where to look first. A record that names them scores higher.
subject.entities due_diligence only, at most 25. Group entities, promoters and directors, each checked like the subject. See due diligence.

The call answers 202 at once with status: queued. A live report on a real person needs a paid account, because a name search does; see errors. Every name searched is logged, and cases in protected categories are masked. An account may have 100 reports queued or running at a time; more gives 429 too_many_reports.

curl -X POST https://adv.heliosynctech.com/api/v1/reports \
  -H "Authorization: Bearer $AOS_KEY" -H "Content-Type: application/json" \
  -H "Idempotency-Key: c4a8e6d2-1b3f-4d5a-9e7c-0a2b4d6f8e66" \
  -d '{
    "type": "litigation_check",
    "subject": { "kind": "company", "name": "Sandbox Lender Finance Ltd", "state": "Delhi" }
  }'
{
  "object": "report",
  "id": "rpt_3cJ8vNd5Qw2TzXa7Uf4LbYh9",
  "type": "litigation_check",
  "status": "queued",
  "livemode": false,
  "subject": { "kind": "company", "name": "Sandbox Lender Finance Ltd", "father_name": null, "cin": null, "state": "Delhi", "district": null },
  "created_at": "2026-12-01T10:20:00+05:30",
  "completed_at": null,
  "pdf_url": null,
  "verify_url": null,
  "note": null,
  "error": null
}

Always send an Idempotency-Key; see idempotency.

#Read a report

GET /reports/{id} · free

status goes queued, running, then completed or failed. The report.completed and report.failed events reach your webhook endpoints as soon as it ends, so you do not need to poll. A report is private to the account and mode that ordered it: another firm's report, or a test report read with a live key, is 404 report_not_found.

curl https://adv.heliosynctech.com/api/v1/reports/rpt_3cJ8vNd5Qw2TzXa7Uf4LbYh9 -H "Authorization: Bearer $AOS_KEY"
{
  "object": "report",
  "id": "rpt_3cJ8vNd5Qw2TzXa7Uf4LbYh9",
  "type": "litigation_check",
  "status": "completed",
  "livemode": false,
  "subject": { "kind": "company", "name": "Sandbox Lender Finance Ltd", "father_name": null, "cin": null, "state": "Delhi", "district": null },
  "created_at": "2026-12-01T10:20:00+05:30",
  "completed_at": "2026-12-01T10:20:04+05:30",
  "pdf_url": "https://adv.heliosynctech.com/api/v1/reports/rpt_3cJ8vNd5Qw2TzXa7Uf4LbYh9/pdf",
  "verify_url": "https://adv.heliosynctech.com/verify/K7Q2M9XD",
  "note": null,
  "error": null,
  "summary": {
    "cases_found": 5,
    "possible_matches": 0,
    "by_risk": { "protected": 0, "ibc": 0, "sarfaesi": 0, "drt": 0, "cheque_bounce": 0, "criminal": 0, "consumer": 0, "recovery": 5, "other": 0 },
    "by_confidence": { "high": 5, "medium": 0, "low": 0 },
    "forums_checked": ["sandbox_high_court"],
    "truncated": false,
    "checked_at": "2026-12-01T10:20:03+05:30"
  },
  "hits": [
    {
      "forum": "sandbox_high_court",
      "court": "Sandbox High Court, North Bench",
      "case_number": "CS(COMM) 5131/2026",
      "cnr": "SBXX010001012026",
      "case_type": "Commercial Suit",
      "parties": { "petitioner": "Sandbox Lender Finance Ltd", "respondent": "Neha Saxena" },
      "role": "petitioner",
      "status": "pending",
      "next_date": "2026-12-18",
      "decision_date": null,
      "last_listed": null,
      "risk": "recovery",
      "flags": ["recovery"],
      "protected": false,
      "source": "sandbox",
      "source_id": null,
      "match": { "confidence": "high", "score": 95, "reasons": ["exact name"], "corroborated": false },
      "entity": { "name": "Sandbox Lender Finance Ltd", "relation": "subject" }
    }
  ]
}

(The links are absolute, on the host you called. hits is shortened here: that report has five.)

#The summary

Field Meaning
cases_found Hits in all. A report with 0 here is a finished check that found nothing, and is charged.
possible_matches How many hits are low confidence.
by_risk Cases counted under the most serious flag each carries. Keys, most serious first: protected, ibc, sarfaesi, drt, cheque_bounce, criminal, consumer, recovery, other. The counts add up to cases_found.
by_confidence Hits by match confidence: high, medium, low.
forums_checked Where we looked: district_court, high_court, supreme_court, tribunal, cause_list; sandbox_high_court for a test key.
truncated True when a very common name matched more records than we read. Add a father's name, CIN, state or district and order again.
checked_at When the search ran.

#A hit

Each hit is one case that could be the subject's.

Field Meaning
forum, court, case_number, cnr, case_type Where it is and what it is. cnr and case_number can be null.
parties petitioner and respondent. Shown as [name withheld: protected category] for a protected case.
role The side the subject matched: petitioner or respondent.
status pending, disposed, listed, decided or order.
next_date, decision_date, last_listed yyyy-MM-dd or null.
risk, flags The most serious class, and every class that applies.
protected True for POCSO, sexual-offence, matrimonial and juvenile cases. Details are withheld.
source, source_id Where the record came from: court_cases, cause_list, judgment, tribunal_order or sandbox.
match How sure we are the name is the subject. See below.
entity Which name this hit is for: the subject, or an entity of a due-diligence report.

#How sure a match is

match.score is 50 to 100. A name that scores under 50 is not a hit at all. The score sets match.confidence:

Confidence Score Read it as
high 90 and above The name matches closely, such as an exact name.
medium 70 to 89 A likely match, for example initials expanded. Check it.
low 50 to 69 A lead only. Confirm it before you act.

match.reasons says why in plain words. match.corroborated is true when the father's name, the CIN, the state or the district also agrees. A father's name that differs rules a record out.

#Due diligence

A due_diligence report is run on a company, and also checks its group entities, promoters and directors. Send subject.kind: company (a person gets 400 due_diligence_needs_company) and list the others in subject.entities, up to 25:

curl -X POST https://adv.heliosynctech.com/api/v1/reports \
  -H "Authorization: Bearer $AOS_KEY" -H "Content-Type: application/json" \
  -H "Idempotency-Key: 7e1d3b5f-9a2c-4e6d-8b0f-1c3e5a7d9f12" \
  -d '{
    "type": "due_diligence",
    "subject": {
      "kind": "company", "name": "Sandbox Lender Finance Ltd", "state": "Delhi",
      "entities": [
        { "name": "Sandbox Holdings Pvt Ltd", "kind": "company", "relation": "group_entity" },
        { "name": "Aarav Sharma", "kind": "person", "relation": "director", "father_name": "Rajesh Sharma" }
      ]
    }
  }'

relation is group_entity, promoter or director. The result has the same summary and hits, each hit tagged with its entity, plus entities: the counts for each name checked, as { name, relation, kind, cases_found, possible_matches, by_risk, by_confidence }. Sending entities with a litigation check is refused.

#List reports

GET /reports · free

Your reports, newest first, with the summary but not the hits. Filter with status (queued, running, completed, failed) and type. See pagination.

#Download the PDF

GET /reports/{id}/pdf · free

The report as a PDF, with a QR code anyone can scan to confirm it is genuine and unchanged. The pdf_url of a completed report points here; fetch it with your key. Ask only after completed: before then you get 409 report_not_ready. If the PDF could not be laid out, the report still completes and is charged (the search is the product), pdf_url is null, note says so, and this call answers 404 pdf_unavailable; order the report again for a PDF.

curl https://adv.heliosynctech.com/api/v1/reports/rpt_3cJ8vNd5Qw2TzXa7Uf4LbYh9/pdf -H "Authorization: Bearer $AOS_KEY" -o report.pdf

#When a report fails

status is failed, error.message says why, nothing is charged, and a report.failed event is sent. Order it again.

#Report types

Type What it covers Price
litigation_check Cases in which the subject is a party, across the courts we read, with status and next date. ₹79, then ₹59 from 1,000 a month, ₹45 from 10,000 a month
due_diligence A litigation check on a company and up to 25 group entities, promoters and directors, with the counts for each. ₹299, then ₹249 from 500 a month

The price falls as you order more in the month; see pricing. For a worked example, see litigation check for lenders.