Skip to content
POST /connector/{slug}/owner

Gives a connector that has no owner an owner, and nothing else — every grant is left as it was. Never moves an existing owner: a connector that already has one answers 409 `connector_has_owner` (that is `POST /connector/{slug}/transfer`, owner only), and so does a claim that loses a race with another claim or the creator backfill. Requires `connector:manage`. The target must be an active member of the organization. Naming yourself additionally requires a real `edit` grant of your own (`can_claim`) — a bare `connector:manage` never makes its holder the owner of a connector nobody shared with them (403); naming someone else needs no grant of yours, so a `connector:manage` holder who reaches nothing may assign it. 404 only for a slug that is not an org-owned connector. Recorded in the audit log as `connector.owner_assigned`. The 200 is the connector as the CALLER now sees it.

Path Parameters

slugstring
required·

Connector slug of an org-owned connector.

Request Body

owner_user_idstring

New owning member (usr_…).

curl -X POST 'https://api.elaichi.ai/connector/<slug>/owner' \
  -H 'Authorization: Bearer $ELAICHI_API_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"owner_user_id":"your_owner_user_id"}'
const body = {
  "owner_user_id": "your_owner_user_id"
};

const response = await fetch('https://api.elaichi.ai/connector/<slug>/owner', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ' + process.env.ELAICHI_API_TOKEN,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(body),
});

const data = await response.json();
console.log(data);
import os
import requests

url = "https://api.elaichi.ai/connector/<slug>/owner"
headers = {
    "Authorization": f"Bearer {os.environ['ELAICHI_API_TOKEN']}",
    "Content-Type": "application/json",
}
payload = {
    "owner_user_id": "your_owner_user_id"
}

response = requests.post(url, headers=headers, json=payload)
print(response.json())