---
title: "Create a new producer organization"
method: POST
path: "/api/org/register/"
---

# Create a new producer organization

`POST /api/org/register/`

## Request

- Base URL: `https://productindex.ai`
- URL: `https://productindex.ai/api/org/register/`
- Auth: API key in cookie `authjs.session-token`

Creates a new organization and adds the caller as its `owner`. Session-only — there is no bearer-token path for this route (a Shopify plugin token can't create an org, since the org doesn't exist yet). If the org's `domain` matches the caller's verified email domain (and isn't a freemail domain), the org is auto-verified via `email_domain` and `verification_status` is returned as `verified` instead of `pending`.

## Request body

- object
  - `name` string, required: Organization name.
  - `org_type` 'manufacturer' | 'retailer' | 'distributor', required
  - `domain` string: Bare domain, e.g. `example.com` (scheme/path stripped if present).
  - `website_url` string, uri
  - `shopify_shop` string

## Response `201`

Organization created.

- object
  - `org_id` string, required
  - `verification_status` 'pending' | 'verified', required
  - `skipped_verification` boolean, required

## Other responses

- `400`: Missing/invalid `name` (required, ≤ 255 chars), invalid `org_type`, malformed `domain`, or malformed `website_url`.
- `401`: No signed-in session.
- `403`: Caller's email is not verified (`EMAIL_UNVERIFIED_CODE`).
- `500`: Database error creating the organization or updating the user's account type.

---

[API](https://skmtc.dev/productindex/apis/productindex-api.md) · [All operations](https://skmtc.dev/productindex/apis/productindex-api/llms.txt) · [OpenAPI document](https://skmtc.dev/productindex/apis/productindex-api/revisions/73078f4d5aeb?raw)
