BINADocs
justbina.com
Esc
  • Try “quote gate”, “bulletin”, or “CLEARY_LLM_MODEL”.
API referenceReference · Information-oriented

Documents and recitals

Read a document's metadata, its complete stored text and numbered recitals; fetch its PDF; correct its type.

A document ID looks like rdoc_at40861_20260720. Find IDs through GET /v1/radar/documents or a case report's documents.

#GET/v1/radar/documents/:id

Document metadata plus links: textPath, recitalsPath, extractionsPath.

Errors: 404 — no radar document with that ID.

#GET/v1/radar/documents/:id/text

The complete stored decision text. Never truncated.

Response 200: { documentId, sourceUrl, textSha256, fullTextSha256, text, sample }.

Errors: 404 when no full text has been stored for the document.

#GET/v1/radar/documents/:id/recitals

All parsed numbered recitals.

QueryDescription
qOptional verbatim search. Uses the same folding as the quote gate, so a pasted passage finds its recital across wrapped lines and footnote calls.

Response 200: { documentId, sourceUrl, textSha256, sample, recitals, query }.

#GET/v1/radar/documents/:id/recitals/:n

One recital: { number, text, … } with the document's textSha256.

Errors: 404 when the recital number does not exist.

#POST/v1/radar/documents/:id/text

Retrieve the document's published PDF and parse its recitals.

Body fieldTypeDescription
refreshbooleantrue checks a previously fetched source again.

Errors: 409 when offline. Not available in the hosted workspace (501).

#POST/v1/radar/documents/:id/doctype

Counsel corrects a mislabelled upstream document type. Recorded as radar.doctype.corrected.

Body fieldRequiredDescription
docTypeyesA type from the level table.
reasonyesWhy the upstream label is wrong. Max 500 characters.
byyesWho corrected it. Max 120 characters.
json
{ "docType": "statement_of_objections", "reason": "The case portal lists the SO as Initiation of Proceedings.", "by": "Ariel" }

Response 200: the document with its new type and level.

#GET/v1/radar/documents/:id/claimant-research

Saved external research for the document's party candidates. Opening it also queues research and presence checks.

#POST/v1/radar/documents/:id/claimant-research

Run external research for one extracted party candidate: exact legal-name matches in the French SIRENE / Annuaire des Entreprises registry and GLEIF LEI records, then an online search for source-linked public leads.

Body fieldRequiredDescription
candidateIdyesAn extraction party candidate, rextr_….
requestedByyesWho asked. Max 120 characters.

Results persist as radar.claimant.research.completed. Leads stay pending and never change party status, signals, standing, harm or damages. Duplicate requests return the saved research. Needs OPENROUTER_API_KEY.

Errors: 400 invalid body, 404 unknown candidate for this decision, 409 offline.

#POST/v1/radar/documents/:id/population-estimates

Record an affected-population estimate from official French registers.

Body fieldDescription
scopebusinesses (SIRENE, by NAF/APE code, department or commune), residents (INSEE, per commune or summed over a department) or securities (answered not_connected).
labelWhat the estimate counts.
filtersNAF/APE code, department or commune, by scope.
estimatedByOptional; defaults to BINA method.

Each estimate stores its formula, inputs, query URL and raw response hash, and is labelled an estimate — an upper bound, never a claimant finding.

BINA · private enforcement radar. Nothing in these docs is legal advice; BINA does not make legal decisions.