VERINODE|API

Verinode Developer

Authentication

Bearer API keys, scopes, and test mode.

Every request carries a bearer key:

Authorization: Bearer vn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Keys are minted in the dashboard under Settings › Developer, not through the API, and the secret is shown exactly once. Minting requires the admin role on the operator account — the Developer pane isn't shown to other members, so there's no way to bootstrap the first key programmatically.

#Live vs test keys

vn_live_…Acts on your real data. Requires a paid membership; without one, every call returns 403 api_not_entitled.
vn_test_…Acts as a separate sandbox operator. Free on any plan, never charges Intelligence Units, never touches live data or the intelligence layer.

#The sandbox is empty, not a copy

A test key resolves to its own operator: a blank tenant, not a snapshot of your account. It starts with no jobs, no vendors, and no clients, so GET /v1/jobs on a fresh test key correctly returns { "data": [] }. Write into it to give yourself fixtures.

The isolation runs both ways: sandbox data never appears in your real dashboard, never reaches the intelligence layer, and never affects your benchmarks. GET /v1/api-keys follows the same boundary — a test key lists the sandbox's keys, not your live ones.

Test-key document extraction runs the real (and real-cost) pipeline, so it's capped at 25 documents per day; over that returns 429 sandbox_quota. Everything else on a test key is bounded only by the normal rate limits.

#Scopes

Each key carries scopes; an endpoint declares the scope it needs, and a key missing it gets 403 insufficient_scope. Scopes are chosen at mint time and can't be edited afterwards — to change them, mint a new key. Grant only what the integration calls.

readList and read your jobs, vendors, and clients; request and download exports.
ingestPush documents in for extraction, and poll their ingestions.
writeCreate records (jobs, clients) and import events.
webhooksRegister endpoints to receive events, and poll outbound events.
keysList your keys programmatically. Minting still requires the dashboard.

GET /v1/ping needs no scope — any valid key can call it, which makes it the right first call when debugging a 403.