---
title: "Create a partner (Greentally staff only)"
method: POST
path: "/internal/partners"
tags: ["PlatformOps"]
---

# Create a partner (Greentally staff only)

`POST /internal/partners`

Requires the platform capability partner.ops (403 PLATFORM_CAPABILITY_REQUIRED; API keys and impersonation sessions are always refused); 404 while PARTNERS_ENABLED is off. With clerkOrganizationId, registers that Clerk organization (409 PARTNER_HOLDS_DATA when its tenant has business organizations, ALREADY_PARTNER, ALREADY_CLIENT); without it, creates one with the instance default member limit memberships and the caller as admin. Members are added to Core at once and to Clerk after; memberErrors lists Clerk refusals. Audited (partner.create).

## Request body

- PartnerCreateRequest
  - `clerkOrganizationId` string — An existing Clerk organization to register; empty creates one
  - `members` object[]
    - `admin` boolean
    - `userId` string, required
  - `name` string, required
  - `reason` string, required
  - `slug` string

## Response `201`

The partner

- PartnerCreateResponse
  - `data` object, required
    - `memberErrors` object, required
    - `partner` PartnerRecord, required
      - `accountId` string, required
      - `clerkOrganizationId` string, required
      - `createdAt` string, date-time, required
      - `id` string, required
      - `name` string, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `409` — Conflict

## Changes

- **2026-10-06** `461a0ebc7731` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/greentally/apis/esgai-api/changes/internal/partners/post.md)

---

[API](https://skmtc.dev/greentally/apis/esgai-api.md) · [All operations](https://skmtc.dev/greentally/apis/esgai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/greentally/apis/esgai-api/revisions/461a0ebc7731?raw)
