,

How to Wire LegalCheck into a BGV or KYB Flow

Wire LegalCheck into employment BGV, NBFC underwriting and vendor KYB: purpose strings, idempotency, min_score starting points and analyst review.

·

·

eCourtsIndia Knowledgebase

Cover image showing LegalCheck as the court-record layer between identity verification and analyst review in a BGV or KYB stack

Changelog | Currently in Beta | Last verified: 3 September 2026 | Model: eCI-1.2 | Schema: legal-check.v1 | Index floor: 28 crore+ cases across SC, High Courts, district courts, and 18 tribunal families

  • 2026-09-03: Initial publish. Partner wiring pattern for employment BGV, NBFC underwriting, and vendor KYB. No webhooks yet (poll). No batch submit yet (one subject per job).

Wire LegalCheck after offer acceptance or vendor creation, poll until completed, then attach risk.band plus match CNRs to the same PDF or ATS report your team already ships. Keep identity, UAN, and address verification on your existing BGV or KYC stack. LegalCheck is only the court layer: an async scored screen over public Indian court records (model eCI-1.2, report schema legal-check.v1). This is a reference architecture for risk engineers, not legal advice, and not an automated hire/fire or credit decision.

Portrait cover stating LegalCheck is the court layer and not a full background verification vendor, with wiring reminders
Call LegalCheck at offer acceptance or vendor creation, not at application stage by default.

Key takeaways

  • Do not replace Aadhaar, PAN, UAN, or address checks with LegalCheck. Compose them.
  • Trigger on a stable business event (offer accepted, vendor created, loan stage gate), not on every form keystroke.
  • Put a practical purpose string in config.purpose, reuse Idempotency-Key for ATS retries, poll status, honour Retry-After.
  • Persist code, client_ref_no, risk.band, and match CNRs. Do not dump full subject PII into your analytics warehouse.
  • min_score starting points below are labelled STARTING POINTS NOT POLICY. Tune with your counsel and ops team.
  • Show the candidate a calm summary. Keep full match lists and low-confidence noise internal until a human reviews.
Diagram placing LegalCheck as the Indian court and tribunal record layer between identity checks and human review before adverse action
LegalCheck replaces or powers the court-record module, not the whole background verification package.

Where LegalCheck sits in the stack

Court-record screening is one module inside employment BGV, lending KYC, or vendor KYB. Your identity and employment stack stays authoritative for “who is this person” and “where did they work”. LegalCheck answers a narrower question: given the name and corroborators you already collected, which public court matters look like plausible matches, and what risk band does model eCI-1.2 assign?

Reference architecture (boxes)

  • Your product / ATS / LOS / vendor portal
    • Candidate or vendor application
    • Consent capture + purpose text (your copy, your counsel)
    • Workflow state machine (offer accepted / vendor created / underwriting gate)
  • BGV / KYC stack (you keep owning these)
    • Identity (Aadhaar / PAN / face match as you already run)
    • UAN / employment history
    • Address / digital KYC
    • Company registry pulls for KYB (MCA / GST as you already run)
  • Court layer: LegalCheck (eCourtsIndia partner API)
    • POST /api/partner/legal-check with subject + config
    • Poll GET /api/partner/legal-check/{code}
    • GET .../report after completed (legal-check.v1)
  • Your report composer
    • Merge identity / UAN / address sections from your BGV vendor
    • Attach LegalCheck band + CNR table + eCourtsIndia case URLs
    • Route HIGH / ambiguous rows to human review

Product UI for manual checks: legalcheck.ecourtsindia.com. Partner REST docs: ecourtsindia.com/api/docs. Pricing (confirm live figures before modelling volume): ecourtsindia.com/api/pricing. Hub and deep guides: LegalCheck product hub, API cookbook, how to read a report, LegalCheck vs case search.

Consent and config.purpose (practical, not a legal opinion)

Your privacy notice and candidate consent text belong to your counsel and your DPDP programme. What LegalCheck needs from you on the wire is a short purpose label in config.purpose, plus optional client_ref_no and ticket_size for your own reconciliation. Treat purpose as operational metadata that matches the consent string you already showed the person or vendor, not as a substitute for that consent.

Practical patterns partners use (examples only):

FlowExample config.purposeExample client_ref_no
Employment BGV after offeremployment_bgv_court_checkATS-OFFER-88421
Gig / marketplace onboardinggig_worker_court_screenGIG-USER-10992
NBFC / BFSI underwriting gateloan_underwriting_court_checkLOS-APP-55102
Vendor KYB (company)vendor_kyb_court_checkVENDOR-1042
Director screen under a vendorvendor_director_court_checkVENDOR-1042-DIR-3

Pin config.model to eCI-1.2 (or whatever GET /api/partner/legal-check/models returns). Do not invent model ids. Keep purpose strings stable so your ops team can filter list results and audit who ran what.

Sequence: offer / vendor created to submit to poll to attach

  1. Gate. Wait until identity fields you will send are frozen (name as on ID, father/relative name if collected, DOB, city/state addresses). Do not fire LegalCheck on every draft edit.
  2. Submit. POST /api/partner/legal-check with Bearer token, JSON body, and Idempotency-Key derived from your ATS/LOS id (see idempotency section).
  3. Persist. Save data.code (for example LC-A1B2C3D), status_url, report_url, client_ref_no, and meta.request_id on the application row.
  4. Poll. GET /api/partner/legal-check/{code} while status is queued or running. Honour Retry-After (live checks on 3 September 2026 returned 5 seconds). Do not hammer report.
  5. Report. Only after completed, call GET .../report with your chosen verbosity and min_score. Early report calls return 409 NOT_READY.
  6. Compose. Write risk.band, risk.identity_confidence, match count, and a table of CNR / court / role / match_band into your PDF or internal report object. Link each CNR to the eCourtsIndia case URL from the match payload.
  7. Route. Auto-attach LOW clean reports to the dossier. Send MEDIUM/HIGH or noisy common-name piles to a human queue before adverse action.

Billing reminder: a newly accepted submit is charged once. Status, report, list, and models reads are free. Confirm the rupee figure on the pricing page. Cap: at most three jobs queued or running per partner (429 LEGAL_CHECK_QUEUE_FULL). Typical completion is on the order of 1-3 minutes; estimated_seconds on submit is advisory, not an SLA.

Minimal submit sketch (individual hire)

curl -X POST "https://webapi.ecourtsindia.com/api/partner/legal-check" \
  -H "Authorization: Bearer eci_live_YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: ats-offer-88421-court-v1" \
  -d '{
  "subject_type": "individual",
  "subject": {
    "name": "Candidate Name As On ID",
    "father_name": "Relative Name If Collected",
    "date_of_birth": "1990-06-15",
    "addresses": ["Bengaluru, Karnataka"],
    "aliases": ["Optional Prior Name"]
  },
  "config": {
    "model": "eCI-1.2",
    "purpose": "employment_bgv_court_check",
    "client_ref_no": "ATS-OFFER-88421"
  }
}'

Full cURL / Python / Node flows, status states, and error table: LegalCheck API cookbook. Field-level reading of bands and match confidence: How to read a LegalCheck report.

Individual hire vs company vendor (directors)

Individual (employment BGV / gig / borrower)

  • subject_type: individual
  • Required: subject.name
  • Strong corroborators: father_name, date_of_birth, city/state addresses, aliases
  • One LegalCheck job per person per screening event
  • Reuse the same identity payload your BGV stack already normalised after ID verification

Company (vendor KYB / counterparty)

  • subject_type: company
  • Required: subject.company_name
  • Optional context you already hold from registry KYB: cin, gst, pan, registered_addresses, directors, company_type
  • Those identifiers are partner-supplied context. Their presence does not mean LegalCheck independently verified an MCA filing.

Directors: separate individual jobs

For vendor KYB, most risk teams want both the company as a party and the people who control it. Recommended pattern today:

  • Job A: company subject with client_ref_no like VENDOR-1042
  • Jobs B to N: one individual submit per director (name + father/DOB/address if you have them), client_ref_no like VENDOR-1042-DIR-1
  • Respect the three in-flight cap: queue director jobs behind the company job, or stagger with a small worker pool
  • Compose one vendor dossier: company band + director bands + all CNRs

There is no batch-submit endpoint yet. Do not rotate idempotency keys to bypass the in-flight cap.

min_score starting points (STARTING POINTS NOT POLICY)

Report query parameter min_score is 0-100 (API default 40). Raising it hides lower-confidence matches from the returned list. It does not change the underlying job. These are engineering starting points for first pilots. They are not eCourtsIndia policy, not legal advice, and not a substitute for your risk matrix.

Use caseSuggested start min_scoreSuggested verbosityNotes (still STARTING POINTS NOT POLICY)
IT / corporate hire (office roles)50standard, then compact for candidate PDFCommon names still need human review. Prefer father + city before lowering the floor.
Gig / marketplace worker45compact for ops queueSpeed matters. Auto-clear only on empty/LOW with strong identity anchors.
BFSI / NBFC underwriting40 (default), review MEDIUM+standard or full for credit opsKeep a human gate. Pair with your existing bureau/fraud stack. Never auto-reject on name alone.
Vendor KYB (company)40standardCompany + director jobs. Watch NCLT/IBC-style matters carefully in your review queue.

If the band feels wrong, do not silently raise min_score forever. Open the CNR, read the order if needed via the case/order APIs, and use the report literacy guide. Feedback loop for us is at the end of this post.

Idempotency for ATS and LOS retries

Offer workflows double-fire. Webhooks retry. Recruiters click “Run BGV” twice. Treat LegalCheck submit like a payment intent.

  • Send Idempotency-Key (1-255 characters) on every submit.
  • Derive it from a stable business key, for example ats-offer-88421-court-v1 or los-app-55102-court-v1.
  • Reuse the same key with the same JSON body after timeouts. Live behaviour: replay returns the original data.code without a second charge.
  • Same key with a different body returns 409 IDEMPOTENCY_CONFLICT. Bump a version suffix (-v2) only when the subject payload deliberately changed (name correction after ID fix).
  • Store the mapping client_ref_no to code in your DB so a late retry can short-circuit to status/report without a new POST.

What to show the candidate vs keep internal

Adverse-action hygiene is your policy. The split below is an engineering default that keeps noise and over-claiming out of candidate inboxes.

SurfaceShowKeep internal
Candidate / vendor self-serveThat a court-record screen was run; date; overall status (in progress / completed / needs review); if you disclose matches, only confirmed CNRs a human already verified, with a clear “public court record, not a finding of guilt” lineRaw possible piles; internal scores; excluded candidates; engine notes; full address lists you sent; other applicants’ data
Recruiter / credit ops PDFrisk.band, identity confidence, match table (CNR, court, case type, role/side, match_band, dates), coverage/limitations/disclaimer from the report, deep links to case pagesAPI tokens; idempotency keys; full request JSON with excess PII in logs
Automated decisioningNothing that auto-rejects solely on a name hitAny rule that treats match_band=possible as proven identity

A match is a candidate to investigate, not proof of wrongdoing. Common names produce many rows. Verify identity and the underlying order before any adverse step. That principle is also spelled out in the report reading guide.

What not to ask LegalCheck to do

  • Not FIR / police verification
  • Not Aadhaar, PAN, or UAN verification
  • Not a 99% “clear” certificate you can rubber-stamp into HRIS
  • Not a replacement for exploratory party research (use case search vs LegalCheck for that routing)
  • Not an MCP tool yet (partner REST only under /api/partner/legal-check)

Production checklist

  • Separate staging and production API tokens; name them in the dashboard
  • Queue worker with concurrency at most 3 LegalCheck jobs in flight
  • Honour Retry-After; treat 409 NOT_READY as keep polling
  • On failed, keep code + meta.request_id for support; terminal processing failures are refunded once
  • Persist band + CNRs on the application; re-fetch report later with different min_score without recharging
  • Human review queue for HIGH, for MEDIUM when identity confidence is weak, and for very common names

Feedback we want from design partners

Send a redacted payload that failed matching. Strip phone numbers and full street lines if you must, but keep the name shape, father/relative name (if any), DOB year, city/state, and what you expected to find (a known CNR is ideal). We will tell you which anchor would have helped (father name, alias, city, DOB, director expansion, and so on). Prefer job code + meta.request_id over raw tokens.

FAQ

Where does LegalCheck sit relative to my BGV or KYC vendor?

Identity, UAN, and address stay with your existing BGV/KYC stack. LegalCheck is the court layer only: an async scored screen over public Indian court records that returns a legal-check.v1 report you attach to the same dossier.

When in the hiring or vendor flow should I call LegalCheck?

After a stable gate: offer accepted, vendor created, or an underwriting stage where identity fields are frozen. Submit once, poll status, then attach risk.band and match CNRs to your PDF or ATS report. Do not fire on every form keystroke.

What should I put in config.purpose?

A short operational label that matches the consent purpose you already showed the candidate or vendor, for example employment_bgv_court_check or vendor_kyb_court_check. It is partner metadata for audit and list filters, not legal advice and not a substitute for your privacy notice.

How do I screen a vendor company and its directors?

Run one company subject job for the entity, then separate individual jobs per director with related client_ref_no values. Compose one dossier. Stay within the three in-flight job cap; there is no batch submit yet.

What min_score should I use for IT hire, gig, BFSI, and vendor KYB?

Starting points only (not policy): IT hire about 50, gig about 45, BFSI about 40 with human review on MEDIUM+, vendor KYB about 40. Tune with your counsel and ops. Raising min_score filters the report list; it does not re-run the job.

How do I stop ATS retries from double-charging?

Send Idempotency-Key derived from a stable offer or application id. Reuse the same key with the same body after timeouts to get the original code without another charge. Same key with a different body returns 409 IDEMPOTENCY_CONFLICT.

What should the candidate see?

A calm status that a court-record screen ran, and only human-verified disclosures if your policy requires them. Keep raw possible matches, internal scores, and excluded candidates internal until review. A match is not proof of wrongdoing.

Is this legal advice or a clear certificate?

No. LegalCheck returns probabilistic matches over public court records plus a risk band. It is not FIR/police verification, not Aadhaar/PAN/UAN verification, and not a 99% clear certificate. Verify identity and orders before adverse action.


Soft CTA: partner sandbox

If you are wiring LegalCheck into an employment screen, NBFC underwriting gate, or vendor KYB dossier, start with a sandbox token, one individual job, and one company-plus-director set. Product: legalcheck.ecourtsindia.com. API home: ecourtsindia.com/api. Docs: ecourtsindia.com/api/docs. Pricing: ecourtsindia.com/api/pricing. Keys: dashboard settings.

Read next: LegalCheck product hub | Submit, poll, report cookbook | How to read a report | When to score vs when to search | Full partner API guide

Sources

Live partner LegalCheck surface under https://webapi.ecourtsindia.com/api/partner/legal-check, verified 3 September 2026 (model eCI-1.2, schema legal-check.v1). Product UI legalcheck.ecourtsindia.com. API docs ecourtsindia.com/api/docs. Pricing ecourtsindia.com/api/pricing. Case index described as a 28 crore+ floor across Supreme Court, High Courts, district courts, and 18 tribunal families.

Search 28 crore+ Indian court cases, free

Unified search across district, high court and Supreme Court records. Hearing alerts, AI summaries and an API for developers.