---
title: "Provision a customer and invite its owner (superadmin)"
method: POST
path: "/api/v1/admin/organizations"
tags: ["admin"]
---

# Provision a customer and invite its owner (superadmin)

`POST /api/v1/admin/organizations`

## Request

- Base URL: `https://composal.com` (the document declares no server; this is the origin it was published from)
- URL: `https://composal.com/api/v1/admin/organizations`
- Auth: HTTP bearer

Does not make the operator a member. Slugs are unique; a retry with the same slug fails validation rather than creating a second account.

## Request body

- object
  - `name` string, required
  - `slug` string, required
  - `owner_email` string, email, required
  - `package_id` string: Active customer package public ID. Defaults to prepaid Entry unless an agreed monthly price is supplied.
  - `skip_payment` boolean: Grant the selected package as an ongoing complimentary subscription with monthly included usage and package limits. No card or checkout is required. Cannot be combined with an agreed monthly price.
  - `monthly_price_dollars` union: Ongoing USD workspace price, for example '50.00'
    - string
    - number
  - `billing_reason` string: Required when setting an agreed price

## Response `200`

Success

- object

## Other responses

- `201`: Organization, owner invitation URL, and queued email delivery status
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `422`: Unprocessable entity
- `502`: Bad gateway

---

[API](https://skmtc.dev/composal/apis/vex-api.md) - [All operations](https://skmtc.dev/composal/apis/vex-api/llms.txt) - [OpenAPI document](https://skmtc.dev/composal/apis/vex-api/revisions/19698ba051dc?raw)
