---
title: "Create Organization"
method: POST
path: "/api/v1/organizations"
tags: ["organization"]
---

# Create Organization

`POST /api/v1/organizations`

## Request

- Base URL: `https://ndi-api.nace.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://ndi-api.nace.ai/api/v1/organizations`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/nace/apis/ndi-service/docs/api/v1/organizations/post.ts> (a function with typed inputs; its response is checked against the schema)

Create an organization with the caller as its owner.

No API key is minted: creating a tenant and handing out a credential are
separate decisions, and a key nobody asked for is a key nobody rotates.

## Request body

- CreateOrganizationRequest: Create an organization owned by the signed-in user. No API key is minted.
  - `display_name` string, required: What to call it, e.g. 'Acme Audit' or 'Yera Personal'.

## Response `201`

Successful Response

- OrganizationInfo: One organization the signed-in user belongs to, with their role in it.
  - `organization_id` string, uuid, required
  - `name` string, required: Storage-safe slug, derived server-side. Stable; not shown to users.
  - `display_name` string, required: The name a human gave the organization.
  - `role` 'owner' | 'admin' | 'member', required: The signed-in user's role here. It may differ per organization.
  - `rate_limit_rpm` integer, required
  - `included_credits` integer, nullable: Lifetime credit allowance; null means unlimited.
  - `joined_at` string, date-time, required
  - `created_at` string, date-time, required
  - `default_workspace_id` string, uuid, nullable: The signed-in user's Perception Playground in this organization — where the console's perception tools upload by default. Null when it has not been provisioned yet, which the console handles by falling back to workspace-free uploads.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `402`: The free organization allowance is used up.
- `403`: This installation seeds its organizations with ndi-cli.
- `404`: No console account yet — call POST /console/session first.
- `409`: Conflict
- `413`: Request Entity Too Large
- `422`: Unprocessable Entity
- `500`: Internal Server Error
- `503`: Service Unavailable

---

[API](https://skmtc.dev/nace/apis/ndi-service.md) - [All operations](https://skmtc.dev/nace/apis/ndi-service/llms.txt) - [OpenAPI document](https://skmtc.dev/nace/apis/ndi-service/revisions/d9d1f8ec2207?raw)
