---
title: "Register an organization (returns the API key exactly once)"
method: POST
path: "/api/rightos/organizations"
tags: ["organizations"]
---

# Register an organization (returns the API key exactly once)

`POST /api/rightos/organizations`

## Request

- Base URL: `https://rightos.i-s3.com`
- URL: `https://rightos.i-s3.com/api/rightos/organizations`
- Auth: none required

Creates an organization with a trialing subscription (no credit card during MVP). The response contains the API key (rk_live_...) exactly once — store it securely; the server keeps only its hash. Rate limit: 5/hour per IP.

## Request body

- object
  - `name` string, required
  - `contactEmail` string, email, required
  - `planId` 'free' | 'starter' | 'business' | 'pro' | 'enterprise', required
  - `country` string

## Response `201`

Organization created

- object
  - `organization` Organization: Public organization record. The API key hash is never exposed.
    - `id` string
    - `name` string
    - `country` string: ISO country code, default JP
    - `contactEmail` string, email
    - `planId` 'free' | 'starter' | 'business' | 'pro' | 'enterprise'
    - `createdAt` string, date-time
  - `subscription` Subscription
    - `id` string
    - `organizationId` string
    - `planId` 'free' | 'starter' | 'business' | 'pro' | 'enterprise'
    - `status` 'trialing' | 'active' | 'past_due' | 'cancelled'
    - `startedAt` string, date-time
    - `currentPeriodEnd` string, date-time
  - `apiKey` string: Shown exactly once.

## Other responses

- `400`: Missing/invalid fields
- `429`: Rate limit exceeded (HTTP 429). See Retry-After header. Limits: verify/transfer = 10/min per IP+token and 60/min per IP; signup = 5/hour per IP.

---

[API](https://skmtc.dev/i-s3/apis/rightos-right-api.md) · [All operations](https://skmtc.dev/i-s3/apis/rightos-right-api/llms.txt) · [OpenAPI document](https://skmtc.dev/i-s3/apis/rightos-right-api/revisions/10020536e345?raw)
