- A seat in your organization’s Nexio portal with the admin or developer role (both can manage API keys and environments).
- At least one engine in your organization. Nexio sets up the first engine with you. The example below uses
vendor-review, a fictional engine that a fictional company, Harbor Group, uses to check a supplier against its vendor requirements. Your engine’s slug and input fields will differ. curl, Python 3 withrequests, or Node.js 20 or later.
1
Create a sandbox environment
In the portal, open Settings, then Environments, and create an environment with the slug
dev. A slug is 1 to 16 characters: lowercase letters, digits and underscores. See Environments for the rules.Every organization already has one live environment. Build against a sandbox first.2
Create an API key
Open Settings, then API keys, choose Create API Key, enter a name, and pick the
dev environment. The portal shows the key once. It looks like nx_dev_ followed by 64 hexadecimal characters.Store it in an environment variable. Never put it in browser code: the API is server to server only.A sandbox key covers everything in this guide: engines, runs, conversations and webhooks. Records (
/api/v1/records) and graph (/api/v1/graph) refuse it with 403 scoped_key_required. For those, use your organization’s live key or a scoped key issued by Nexio. See Authentication and access.3
List your engines
200:slug of the engine you want to call. To see the fields it accepts, open the engine in the portal and choose Contract, or read request_schema from GET /api/v1/engines/{slug}/config.4
Submit a run
Send the engine’s input under Response
input. The Idempotency-Key header makes the call safe to retry: sending the same key with the same body returns the same run instead of creating a second one.202:5
Poll until the run finishes
Poll While the run is in progress,
GET /api/v1/runs/{run_id} with a growing delay. A run is finished when status is one of the four terminal values: completed, degraded, failed or cancelled. See Runs for the full state model.status is queued or processing and there is no output.6
Read the result
A completed run carries the engine’s The fields inside
output. Response 200:output depend on the engine type and its configuration. The envelope around it (run_id, status, versions, timings) has the same shape for every engine, and optional fields are left out when they have no value. environment reads test for every sandbox key and live for the live environment. See Engine types.Common errors
The full list is in the error reference.
What to build next
Receive webhooks
Stop polling and get a signed event when a run finishes.
Runs
Statuses, degraded results, cancellation and idempotency in detail.
Authentication and access
Move from a sandbox key to live, and learn what each key can call.
Limits
Rate limits, request size bounds and the monthly run cap.