For developers, data engineers, architects, and agents

Wire NSTACK into the systems you already run.

Bring your data in, hand work to agents from your own systems, follow every run, route exceptions to a person, and set the limits. Plain HTTPS, one token header, your organization in the path.

Base URLYour instance answers on its own domain, written here as https://{instance}.nstack.ai.

Developers · Ways inHow your systems, your apps, and your assistants reach an instance, and the credential each one carries.

03·First call

Make your first call.

One GET with your session token returns your user, your role, and your permissions. Any member can make it.

  1. Sign in as a member of your organization, in Studio or in your own app.
  2. Send the session token as Authorization: Bearer.
  3. Put your organization id, org_…, in the path.
Continue with the quickstart
GET/core/api/v1/organizations/{org_id}/me

# NSTACK_BASE=https://{instance}.nstack.ai   NSTACK_ORG={org_id}
curl -s "$NSTACK_BASE/core/api/v1/organizations/$NSTACK_ORG/me" \
  -H "Authorization: Bearer $NSTACK_SESSION"

const base = process.env.NSTACK_BASE; // https://{instance}.nstack.ai
const org = process.env.NSTACK_ORG;   // {org_id}

const res = await fetch(`${base}/core/api/v1/organizations/${org}/me`, {
  headers: { Authorization: `Bearer ${process.env.NSTACK_SESSION}` },
});
const me = await res.json();
console.log(me.org.role);

import os
import requests

base = os.environ["NSTACK_BASE"]  # https://{instance}.nstack.ai
org = os.environ["NSTACK_ORG"]    # {org_id}
headers = {"Authorization": f"Bearer {os.environ['NSTACK_SESSION']}"}

me = requests.get(f"{base}/core/api/v1/organizations/{org}/me", headers=headers).json()
print(me["org"]["role"])
Response200 · sample values

{
  "user": { "id": "user_2abc", "email": "you@example.com", "name": "Your Name" },
  "org": { "id": "org_2kXy", "slug": "your-firm", "role": "org:member" },
  "active_org_id": "org_2kXy",
  "permissions": ["…"],
  "platform_admin": false
}
Note

Session tokens last about a minute. Ask your sign-in SDK for a fresh one before each call.

04·Docs

Guides first, reference after.

Ten pages. Every route, field, and header comes from the service code, and anything not shipped yet says so.

01 QuickstartSign in, read your records, run an agent, read its run record, then start an automation from your own system. GET /meGET …/get-dataPOST …/testGET /runs/{run_id} 02 Work with dataBring a system in, define datasets, map to your ontology, read records, index knowledge. ConnectionsDatasetsOntologyKnowledge 03 Trigger runsWebhook, schedule, or a message to an agent. Which id to keep. Secure webhookinstance_idPOST …/testSchedules 04 Follow runsThe state model, the polling loop, automation instances, stats, and tracing. GET /runsafter_seqruns:statstrace_id 05 Exceptions and escalationsFailure shapes, idempotent starts, the approval wait, and a watcher. failedpartialwaiting409 conflict 06 Autonomy, permissions, and auditModes per version and environment, roles, zero trust as shipped, and trails you can verify. SafeAutonomousactivity:verifyactivity:export 07 AuthenticationSessions for people, machine tokens for your systems, MCP keys for assistants, and what a change in PROD asks for. Authorization: Bearer403 org_mismatchMachine accessPROD 08 API referenceEvery route by resource, with the permission it needs: connections, datasets, agents, runs, automations, Scan. ConnectionsDatasetsAgentsRunsAutomations 09 EventsRead runs and changes back as CloudEvents: the envelope, the types, and the two routes that serve them. nstack.run.v1nstack.audit.v1CloudEvents 1.0after_seq 10 MCP PreviewPoint any MCP client at your instance: configs, keys, and the calls the server answers. MCP configsMCP keysCalls

Integrate on your own instance.

We set up your organization, its environments, and machine access with your engineers, then build the first integration together.