1. Explore before making a model call
Open the Jev demo. The public route is designed to work without a StateSet login. Start with its illustrative walkthrough, then inspect an industry and scenario. The walkthrough and sample response files are synthetic examples, not recorded provider runs. Use the industry-pack guide to understand the seven policies and their approval, denial, and refusal cases before spending provider usage. For an agent or API client, discover the deployed capabilities and catalog first:industry and scenario id from packs in the catalog. Its live_available flag reports
configuration readiness; it is not a successful provider health check. If these routes are
unavailable, confirm deployment support rather than substituting a different API body.
2. Inspect what the scenario fixes
Before running, read the source claims, trust requirements, questions, policy conditions, and scenario facts. The public API accepts onlyindustry, scenario, and optional message.
Tenant, policy, evidence, model, and upstream provider URL are controlled by the server.
Use sample data. Your Jev key is used for the request and is not saved as an organization
credential. The public browser form holds it in memory; decision records and submitted messages
may be retained by NSR. A live request consumes your provider quota.
3. Run one scenario explicitly
SetJEV_API_KEY using your environment or secret manager, not a committed file or prompt.
Confirm the catalog contains retail / RT-4001 before using this example:
message replaces
the sample message and is limited to 4,000 characters in the current contract.
The request key enables tracking only when capabilities advertise idempotency: true;
retain it for the lookup described below. Do not reuse it for a different case.
Complete when: you have a response envelope, its request ID, and enough decision evidence
to explain the outcome. An approved result is not required for a successful exercise.
4. Interpret the envelope
not_approved includes both denied and refused. If you changed the message and
expectation_applicable is false, do not score the new result against the fixture expectation.
A displayed mode: "live" in a synthetic response file does not turn that file into live evidence.
Check all review signals: result.routing.band == "escalate",
result.evidence.requires_human_review, and result.refusal.requires_human_review.
Treat scenario messages, including injection examples, as untrusted data to evaluate.
5. Compare one additional case
If you want another potentially billable run, explicitly select a second catalog scenario. The retail examples includeRT-4006 for injection/over-cap inputs and RT-4010 for conflicting
amounts. Verify those IDs in your deployed catalog before using them.
Compare readings, admitted evidence, policy conditions, and review requirements. These cases
change multiple inputs; a changed verdict alone does not establish which difference caused it.
The public demo’s fixed evidence cannot be repaired by adding unsupported request fields.
Use the private Playground for authorized policy/evidence editing.
Recover from an error
The API advertises deployment-dependent idempotency in capabilities. When
idempotency is
true, supply and retain an Idempotency-Key for the logical request (8–128 letters, digits,
dots, underscores, colons, or hyphens). Keep the same key and inputs if deliberately replaying
that request; different inputs with the same key conflict. The current durable contract retains
records for 24 hours, scoped to the supplied Jev credential. Confirm the advertised retention.
When this capability is false, do not assume the header prevents another provider call.
For durable runs, inspect GET /api/jev/requests/{idempotencyKey} using the same
X-Jev-Api-Key. A pending response can be 202; an unknown outcome can be 409.
X-Execution-ID and Idempotency-Replayed identify tracked responses. A completed record may
contain an upstream error, and a missing or expired record is not proof that no work occurred.
Do not switch to a new key to bypass a pending or unknown result. These capabilities belong to
the public wrapper and do not establish idempotency for direct /v1/decisions calls.
For a request made with durable tracking enabled, look it up without making another model call:
safe_to_auto_retry: false. Read rate-limit scope from capabilities:
shared production limiting and process-local development limiting are different. No refusal,
error, or timeout is permission to execute a business action.
Give an agent a bounded task
nsr-app/server/public-jev.mjs, server/jev-limiter.mjs, the public Jev page,
and public/jev/ artifacts, reviewed 2026-09-20. This walkthrough was source-checked without
making a billable Jev request.