Skip to main content
Outcome: one inspected decision with model readings, evidence handling, and policy results. The public demo does not execute refunds, payments, or other business actions.

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:
Read accepted inputs, model alias, limits, and rate-limit scope from capabilities. Choose an 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 only industry, 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

Set JEV_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:
This sends one request with no retry flag. In the browser, explicitly submit the selected scenario; selecting a comparison should not itself launch a run. Optional 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 include RT-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:
There are no automatic retries. Errors provide a code, recovery guidance, and 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

The deployment also provides agent instructions, OpenAPI, and downloadable Node.js and Python starters. Compare their contracts with the current capabilities response before integrating. Source basis: 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.
Last modified on September 20, 2026