Skip to main content
GET
Get status

Behavior

When a qualifying connection exists, this read answers an identity or scope refusal as data: a person who cannot be served gets 200 with scope.refused set to identity_unmapped, identity_needs_review, identity_suspended, identity_stale or scope_unavailable instead of a 403. Assertion, service identity and lens refusals still answer with their HTTP status. has_published: false means no qualifying connection exists. Send the person the request is for in X-Nexio-Acting-Principal and X-Nexio-Acting-Email, and the signed X-Nexio-Records-Assertion when your organization enforces it. See Authority and scope. See Preflight with the status read.

Authorizations

Authorization
string
header
required

Send the key as Authorization: Bearer <key>. Two kinds of key exist.

Organization keys are issued in the portal (Settings, then API keys), each bound to one environment, shaped nx_<environment slug>_<64 hex>. They carry no capabilities and pass every capability check, with one exception: routes under /api/v1/records, /api/v1/engines/{id}/opportunities, /api/v1/graph and /api/v1/catalog/documents accept an organization key only when its environment is live, and refuse any other with 403 scoped_key_required. Revocation takes effect within 60 seconds.

Scoped keys are issued by Nexio on request, shaped nxsk_v1_<24 hex key id>_<43 character secret>. Each is bound to one org, one environment, a set of engines and a set of capabilities. A malformed, unknown or revoked nxsk_ key fails with 401 and is never retried as an organization key. Revocation takes effect on the next request. A scoped key without a route's capability gets 403 insufficient_capability; a scoped key not bound to the engine gets 403 engine_binding_forbidden.

Key-grantable capabilities: engines:read, runs:write, runs:read, runs:defensibility:read, runs:test, catalog:read, catalog:documents:read, webhooks:manage, conversations:use, conversations:export, records:read, records:opportunities:run, actions:write, actions:read, graph:read, records:analyze.

Routes that accept organization keys only (every scoped key gets 403 insufficient_capability): environment management, engine create, update, configuration and publish, and conversation instance authoring. Each operation description names the capability a scoped key needs.

Headers

X-Nexio-Acting-Principal
string

The person the request is for, as your identity provider's stable user id. Narrows what the key reaches; never widens it. Send it on every request; under the shadow and lit postures a read without it answers 403 identity_unmapped, or 200 with scope.refused when a qualifying connection exists.

X-Nexio-Acting-Email
string

The acting person's verified sign-in email. The seat is derived from it.

X-Nexio-Records-Assertion
string

Signed assertion v1.<unix seconds>.<hex HMAC-SHA256> over acting_principal|acting_email|reserved|timestamp (each part trimmed, the email lowercased). The third field is reserved: send an empty string. The timestamp must be within 5 minutes of the server clock, either way. Checked once Nexio enables assertion verification for your organization, when it provisions the signing secret; a missing or wrong assertion then answers 403 assertion_invalid and one outside the window 403 assertion_stale.

X-Nexio-Records-Lens
string

principal:<id>: a read-only view of another person's data, honored only for a caller whose own scope is All or Platform and ignored for anyone else. For such a caller, a value that is not principal:<id>, or names nobody, answers 400 lens_target_unknown.

X-Nexio-Consumer
string

Optional client application name, for diagnostics.

X-Nexio-Consumer-Build
string

Optional client build, for diagnostics.

X-Nexio-Consumer-Vocabulary
string

Optional access vocabulary hash the client was built against, for diagnostics.

X-Nexio-Service-Identity
string

A registered service identity, for a machine caller. When sent, it is used instead of X-Nexio-Acting-Principal. A value that names no active service identity answers 403 service_identity_unknown.

Query Parameters

connection_id
string

The system-of-record connection to read. Optional when the organization has exactly one qualifying connection; required when it has several (otherwise 400 book_connection_ambiguous).

include_team
boolean

Add the person's team to entitlement. May cost one extra warehouse read. Accepts true, false, 1 or 0; any other value is 400 invalid_request. Defaults to false.

Include entitlement.related_books: counts of the person's own records and of each other owner's records the person services or shares. Accepts true, false, 1 or 0; any other value, including an empty one, is 400 invalid_request. Defaults to true.

Response

Connection and authority status.

has_published
boolean
required

False when no qualifying connection exists; every other read would answer 409 book_unavailable.

status
null
required

Always null today.

serving
object | null
required

The serving block. Null when no qualifying connection exists (has_published is false).

duration_ms
integer
required
read_modes
object

Each read surface and how it is served (query_first).

scope
object
reads
object
ams360_base_url
string

Base URL for links into the source system, when configured. Omitted when not set.

entitlement
object

The caller's access-plane entitlement. Present when the organization's posture is shadow or lit for this person; with no qualifying connection, also for a registered service identity. It carries posture, roles, surfaces, datasets, workflows, denied fields, documents, grants and record scope, plus related_books, team, policy_source and vocabulary_hash. Lists and maps are always sent, as empty values when there is nothing in them.

derived
object
Last modified on September 25, 2026