Interfaces
REST API & SDK
Unified /v1 API surface with TypeScript SDK.
All endpoints live under /v1 and take Authorization: Bearer <token> (except public health, webhook, and auth endpoints). Shared Zod schemas keep contracts synchronized.
curl -X POST http://localhost:3000/v1/auth/login \
-d '{"email":"admin@example.com","password":"…"}'
curl -X POST http://localhost:3000/v1/services/1/deploys \
-H "Authorization: Bearer $TOKEN"
curl "http://localhost:3000/v1/services/1/metrics?kind=cpu&minutes=60" \
-H "Authorization: Bearer $TOKEN"TypeScript SDK
import { createClient } from "@ninedeploy/sdk";
const nd = createClient({ baseUrl: "http://localhost:3000", getToken: () => "nd_…" });
const deploys = await nd.deploys.list(1);
await nd.deploys.trigger(1);The authenticated GET /v1/openapi.json endpoint describes every API operation in OpenAPI 3.1, with an ETag. New SDK namespaces include terminals, traffic, accessGrants, access, api.get, githubApps and services.github, alongside database imports and secret-provider management.
The canonical guides live in the repository's docs folder.