REST API
The Inth API is the machine-facing control plane for Inth. Use it to provision and manage projects, inspect organizations, and manage API keys — everything the dashboard does for humans, over JSON for programs. Consent is one of the products available inside an Inth project.
- Base URL —
https://api.inth.com - OpenAPI spec —
https://api.inth.com/openapi.json - MCP endpoint —
https://api.inth.com/mcp - Status —
GET /health
Authentication
The API uses organization API keys — service credentials owned by an organization, not by an individual user. Pass the key as a bearer token:
How keys work:
- Create keys in the dashboard under Organization settings → API Keys, or with the create key endpoint using a signed-in user's credentials. The
inth_...secret is shown once at creation. - Keys act as the organization. Every request runs with organization-wide access; there are no per-key scopes yet. Treat a key like a deploy credential, not a user session.
- Keys cannot manage keys. Creating, rolling, and deleting keys always requires a user principal, so a leaked key cannot mint successors that outlive its revocation.
- Rotate with roll. Rolling issues a new secret for the same key identity and revokes the old secret immediately.
- Plan requirements. API access requires the Starter plan or higher — see rate limits for per-plan limits, plan-gating behavior, and key caps.
The MCP endpoint is the exception: it uses user-delegated OAuth instead of API keys, so agents act as the signed-in user. Point an MCP client at https://api.inth.com/mcp and it discovers the authorization server through the protected resource metadata.
Responses
Every endpoint wraps its result in a stable envelope:
List endpoints return data as an array plus a pagination object. Pass pagination.nextCursor back as the cursor query parameter to fetch the next page:
Errors use the same envelope with success: false and a machine-readable error.code (for example UNAUTHORIZED, PLAN_REQUIRED, RATE_LIMITED, NOT_FOUND); validation failures add an error.details array with per-field issues:
Every response carries an X-Request-Id header — include it when reporting an issue.
Stability
Within v1, changes are additive: new fields, new endpoints, and new enum values may appear at any time, and clients should ignore fields they do not recognize. Breaking changes ship under a new version prefix.
Resource IDs are prefixed strings — prj_ projects, org_ organizations, ins_ consent instances, key_ API keys. Treat them as opaque; the prefix only tells you what kind of resource an ID refers to.
Endpoints
System
- Health check —
GET /health
Auth
- Start CLI device authorization —
POST /v1/auth/device/code - Poll for a CLI device token —
POST /v1/auth/device/token - List API keys —
GET /v1/auth/keys - Delete API key —
DELETE /v1/auth/keys/{keyId} - Roll API key —
POST /v1/auth/keys/{keyId}/roll - Get authenticated principal —
GET /v1/me
Organizations
- List organizations —
GET /v1/organizations
Projects
- List projects —
GET /v1/projects - Create project —
POST /v1/projects - Get project —
GET /v1/projects/{projectId} - Delete project —
DELETE /v1/projects/{projectId} - Update project —
PATCH /v1/projects/{projectId} - Get project consent settings —
GET /v1/projects/{projectId}/consent - Update project consent settings —
PATCH /v1/projects/{projectId}/consent - List provisioning regions —
GET /v1/regions