> ## Documentation Index
> Fetch the complete documentation index at: https://docs.clustr-ai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Owner

> Add someone to the owner directory

Add a person to your owner directory so opportunities can be assigned to them. An owner is a label, not an account: creating one sends no email, grants no access to your workspace, and uses no seat. That is what lets you assign an intro to an investor, an advisor, or a friend. Any workspace member can create owners, there is no admin gate.

The email is unique within your tenant. Creating an owner with an email that already exists returns a 409.

## Body

<ParamField body="email" type="string" required>
  Owner email address.
</ParamField>

<ParamField body="first_name" type="string">
  Owner first name.
</ParamField>

<ParamField body="last_name" type="string">
  Owner last name.
</ParamField>

## Response Fields

<ResponseField name="owner" type="object">
  The created owner.
</ResponseField>

<ResponseField name="owner.id" type="string">
  Owner UUID. Pass this as `owner_id` when updating an opportunity.
</ResponseField>

<ResponseField name="owner.email" type="string">
  Email address.
</ResponseField>

<ResponseField name="owner.first_name" type="string">
  First name, empty when it was not provided.
</ResponseField>

<ResponseField name="owner.last_name" type="string">
  Last name, empty when it was not provided.
</ResponseField>

<ResponseField name="owner.avatar_url" type="string">
  Profile picture URL. Empty for a newly created owner.
</ResponseField>

<ResponseField name="owner.is_member" type="boolean">
  `true` when the email belongs to a member of your workspace, `false` otherwise.
</ResponseField>

<ResponseField name="owner.opportunity_count" type="integer">
  How many opportunities this owner holds. Zero for a new owner.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.clustr-ai.com/api/public/owners" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"email": "sam@northstar.vc", "first_name": "Sam", "last_name": "Okafor"}'
  ```
</RequestExample>

<ResponseExample>
  ```json 201 theme={null}
  {
    "success": true,
    "data": {
      "owner": {
        "id": "9c8e77d1-4b2a-4c8f-9a30-6e21d4f0aa57",
        "email": "sam@northstar.vc",
        "first_name": "Sam",
        "last_name": "Okafor",
        "avatar_url": "",
        "is_member": false,
        "opportunity_count": 0
      }
    }
  }
  ```

  ```json 409 theme={null}
  {
    "success": false,
    "error": { "message": "An owner already holds that email", "code": "CONFLICT" }
  }
  ```

  ```json 401 theme={null}
  {
    "success": false,
    "error": { "message": "Invalid or missing API key", "code": "UNAUTHORIZED" }
  }
  ```
</ResponseExample>
