Sandbox

Sandbox — analysis with pre-canned responses

Sandbox endpoint: same signature as /api/v1/analyze but returns realistic pre-canned responses. Consumes NO credits, calls NO LLM. Designed so partner devs can integrate their client without spending balance during development/CI.

Rate limit: 60 rpm — 30 rpm for sandbox_unbilled keys. Sandbox is SG-only (test jurisdiction): 2 samples available, in English and with pre-verified citations: contract_sg, employment_sg. jurisdiction accepts only SG (or omitted) — any other value returns 400 VALIDATION_ERROR.

Unbilled sandbox (per-key): by default this endpoint requires an account with balance > 0. Keys flagged by the operator with sandbox_unbilled may use it WITHOUT balance, at a reduced limit of 30 requests/minute. The flag is operator-only (granted by the Nexus operator; not self-settable via the API).

post/api/v1/sandbox/analyze

Request

  • Base URL: https://legal.nexusquantum.legal
  • URL: https://legal.nexusquantum.legal/api/v1/sandbox/analyze
  • Auth: HTTP bearer

Request body

sample'contract_sg' | 'employment_sg'

Which canned response to return. Default: contract_sg.

textstring

Ignored (sandbox).

jurisdictionstring

SG only (or omitted) — otherwise 400 VALIDATION_ERROR. The sandbox is a single test jurisdiction; for other jurisdictions use POST /api/v1/analyze (billed).

legalBranchstring

Overrides the sample's legal branch.

language'es' | 'en'

Ignored (sandbox): canned responses are in English, the language of the SG test jurisdiction (language follows the jurisdiction).

Response

Canned response. Headers X-Sandbox: true and X-Processing-Ms.

skill'standard' | 'agil' | 'auditoria' required

WHICH ANALYSIS CORE RAN. mode and skill are two different questions that share a name on the way IN: mode is the BILLING axis (does Node B audit? standard vs deep), skill is which Node A core was loaded. Sending mode: "auditoria" bills as deep AND loads the forensic-audit core, so the response comes back with mode: "deep" and skill: "auditoria" — and the report header says MODE: auditoria. Until 2026-08-18 only the billing axis came back, so that header looked like it contradicted the JSON. It never did.

analysisstring required

Legal analysis generated by Node A (Claude Opus 4.7).

jurisdictionstring required

ISO code of the processed jurisdiction.

legalBranchstring required

Legal branch applied.

modelstring required

Label of the engine that ANSWERED, not a stable model identifier. It is the chain's own label — 'DeepSeek V4-Pro', 'Opus 4.8 · OpenRouter' — or, when the firm brings its own engine, that engine's model id. In mode=deep it is composed as '<analyst>+<auditor>'. unknown means nobody could be named: the value is never guessed. Under partner or neutral branding it is replaced by a neutral label. Do NOT key logic on this string: which engine answers is a deployment decision and the chain falls back on its own.

processingMsnumber required

Total analysis latency in milliseconds.

mode'standard' | 'deep' required

Canonical mode applied (aliases normalized).

creditsChargedinteger

Credits charged for this analysis (1 standard / 2 deep).

sandboxboolean
samplestring
available_samplesstring[]
notesstring

Example response

{
  "model": "DeepSeek V4-Pro+deepseek-v4-pro",
  "audit": {
    "auditor": "deepseek-v4-pro",
    "audited": true
  },
  "sandbox": true,
  "sample": "contract_sg"
}

Changes

No recorded changes to this operation across all 1 revision of this API.