Build on the subsix.ai API
One OpenAI-compatible gateway for chat at /v1, and a platform API at /api for projects, sessions, missions and billing.
Instead of choosing a model and managing prompts, teams define the outcome. subsix.ai plans the work, assembles a specialized AI workforce, selects the right models and compute, executes the mission, verifies the result and continuously learns from the organization.
Install
Two installs, one wire format. The VS Code extension puts the agent in your editor and the SDK lets your own service call the same fabric the app does. Everything that speaks the OpenAI wire format needs no SDK at all — the gateway at /v1 takes your existing client unchanged, with the base URL and the key swapped.
npm install openai # or pip install openai
VS Code extension
The extension is the agent in your editor: it bundles the engine for your platform, so a chat runs against your repository with no server anywhere. Install it from a gallery, or from the VSIX file when the machine has no gallery.
code --install-extension subsix.subsix
subsix.ai 0.27.10 is assembled for , one package per platform because the engine inside it is native. Sizes and sha256 digests are on the download page, each read from the package file itself.
With no account the extension runs the whole agent on your own provider keys (ANTHROPIC_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY), read from ~/.subsix/.env. Signing in instead points it at the hosted server with the subsix.cloudUrl setting and one credit balance across every provider.
SDK
The SDK is a typed client for a fabric: one client class, and a transport behind an interface you never name, so the same code runs against the hosted lane, a worker on your machine over stdio, or a fabric in your own process. Cost, timing and every rate come back as a measure with its presence flag, because a zero nobody measured is not a number this product prints — the SDK returns null and the caller says unknown.
npm install @sonicore/sdk # or, for the same surface in Go: import "sonicore.ai/sonicore/sdk/go"
@sonicore/sdk: 13 methods on the client, one wire format shared with the Go SDK at sonicore.ai/sonicore/sdk/go. The method names below are read from the package’s own Method enum at build time.
AdoptMissionAccountRegisterHeartbeatOfferReportDrainFleetStateDeclarePublishFetchSubscribeimport { Fabric, ConnectTransport, headline, unknownReason } from "@sonicore/sdk";
// One client, and a transport behind it: the hosted lane here, stdio or in-process replace it.
const fabric = new Fabric(new ConnectTransport({ baseUrl: "https://subsix.ai" }));
const account = await fabric.account("mission-124");
const figure = headline(account);
// A missing measure is null, never 0: the rule this SDK was built to keep.
console.log(figure ? figure.microPerVerified + " micro$ / verified unit" : unknownReason(account));Quickstart
1. Get an API key
An organisation admin mints keys with POST /api/apikeys. The raw key is returned once; the server keeps only a hash.
curl https://subsix.ai/api/apikeys \
-H "Authorization: Bearer $SUBSIX_SESSION" \
-H "Content-Type: application/json" \
-d '{"name":"quickstart"}'
# → { "id": "key_…", "name": "quickstart", "prefix": "sk_live_…", "key": "sk_live_…" }2. Set the base URL
Point your client at https://subsix.ai/v1 for chat, and https://subsix.ai/api for the control API.
3. Make your first chat call
Any model id returned by GET /v1/models works. Streaming is supported with stream: true.
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.SUBSIX_API_KEY,
baseURL: "https://subsix.ai/v1",
});
const chat = await client.chat.completions.create({
model: "gpt-4o", // any id from GET /v1/models
messages: [{ role: "user", content: "Say hello in one word." }],
max_tokens: 16,
});
console.log(chat.choices[0].message.content);Or with curl:
curl https://subsix.ai/v1/chat/completions \
-H "Authorization: Bearer $SUBSIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4o","messages":[{"role":"user","content":"Say hello in one word."}],"max_tokens":16}'API reference
Two surfaces, one credential model. Both authenticate with Authorization: Bearer <token> — the gateway takes an API key or a sandbox token, and the platform API takes a session token.
OpenAI-compatible gateway · /v1
/v1/models/v1/chat/completionsPlatform API · /api
Projects & files
/api/projects/api/projects/api/projects/:id/api/projects/:id/api/projects/:id/sandbox-token/api/projects/:id/files/api/projects/:id/files/*path/api/projects/:id/files/*path/api/projects/:id/files/*path/api/projects/:id/files-presign/*pathSessions & missions
JSON-RPC methods on the WebSocket at /ws, not REST paths.
session.listsession.createsession.opensession.sendsession.editsession.stopsession.approvesession.deletemission.listmission.getmission.createmission.cancelmission.resetworkforce.listestimate.proposeBilling & usage
/api/billing/api/billing/checkout/api/billing/webhook/api/usage/api/usage/limitIdentity & orgs
/api/me/api/me/export/api/me/api/orgs/api/orgs/api/orgs/members/api/orgs/members/api/orgs/members/:userId/api/orgs/members/:userId/api/apikeys/api/apikeys/api/apikeys/:idAuth
/api/auth/signup/api/auth/signin/api/auth/refresh/api/auth/signout/api/auth/switch-org/api/waitlistEvents, analytics & more
/api/events/api/analytics/api/decisions/api/audit/api/healthz/api/ws/ticket/api/personal/api/hf/search/api/hf/models/:id/api/projects/:id/hf/download