Developers/SDKs & APIs

Trigger anything. Query everything. Programmatically.

A small, stable REST API. First-party clients in TypeScript and Python. Webhooks for run lifecycle events. Bring Nexus into your existing dev pipeline without leaving your stack.

REST API

15 endpoints. That's the whole surface.

We resisted shipping a Roman aqueduct of CRUD. Most teams need to fire a workflow, watch a run, and list runs. Everything else is convenience.

POST/v1/workflows/{slug}/runsTrigger a workflow with input. Returns a run id.
GET/v1/runs/{id}Run summary: status, started_at, ended_at, output, error.
GET/v1/runs/{id}/eventsStep-by-step execution log. Supports SSE for live tailing.
GET/v1/runs?workflow=&status=&since=List runs with filters and cursor pagination.
POST/v1/runs/{id}/replayReplay from a node id with new inputs. Returns new run id.
POST/v1/runs/{id}/cancelCancel an in-flight run. Idempotent.
GET/v1/workflowsList published workflows in your workspace.
GET/v1/workflows/{slug}Workflow metadata: schemas, version, MCP tools, owners.
GET/v1/workflows/{slug}/versionsAll published versions with config diff.
POST/v1/workflows/{slug}/configUpdate business-rule config without a redeploy.
GET/v1/agentsList published agents in your workspace.
GET/v1/connectorsList configured MCP servers and their tools.
POST/v1/connectorsRegister a new MCP server URL with auth.
GET/v1/forms/{token}Render-ready form definition for a paused human node.
POST/v1/forms/{token}Submit a form response. Resumes the run.
First-party clients

TypeScript and Python. Auto-generated. Always in sync.

TypeScript

@nexus/sdk

Promise-first, fully typed. Streaming responses for run events. Works in Node, Edge, and Bun.

npm i @nexus/sdk
Python

nexus-sdk

Sync & async. Pydantic models for every payload. Async iterator for streaming events.

pip install nexus-sdk
CLI

nexus

For local dev and CI. Trigger runs, tail events, manage workspaces. Same auth as the SDKs.

brew install santeon/tap/nexus
// TypeScript
import { Nexus } from "@nexus/sdk";

const nx = new Nexus({ apiKey: process.env.NEXUS_API_KEY! });

const run = await nx.workflows.trigger("customer-onboarding", {
  email: "a@example.com",
  plan:  "enterprise",
});

for await (const ev of nx.runs.stream(run.id)) {
  if (ev.type === "StepCompleted") console.log(ev.node, ev.output);
  if (ev.type === "RunDone") break;
}
Webhooks

Push, don't poll.

Subscribe to run lifecycle events at the workspace or per-workflow level. Signed payloads. Automatic retries with exponential backoff. Replayable from the dashboard.

EVTrun.startedFired immediately on trigger. Includes run id and trigger payload.
EVTrun.pausedFired when a human node is reached. Includes form token.
EVTrun.resumedFired on form submission or external webhook resume.
EVTrun.completedFired on success. Includes final output.
EVTrun.failedFired on terminal failure. Includes error and last node.
Get an API key

From workspace settings — or self-hosted, on first run.

API keys are scoped (workflow, run, admin). Rotate from the UI or via the CLI.