Skip to content

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.