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

# Workspace & Account Management

> Manage workspaces and review identity, subscription, limits, and credit usage.

<Note>
  Authenticate every request with `Authorization: Bearer clr_live_YOUR_API_KEY`.
</Note>

## List workspaces

<Badge color="green">GET</Badge> `/workspaces`

List workspaces through the Claro Public API.

**Required scope:** `objects`

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://platform.getclaro.ai/api/public/v1/workspaces" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  url = f"https://platform.getclaro.ai/api/public/v1/workspaces"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.get(url, headers=headers)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/workspaces`, {
    method: "GET",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `200` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.

***

## Create workspace

<Badge color="blue">POST</Badge> `/workspaces`

Create workspace through the Claro Public API.

**Required scope:** `objects`

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "name": "Procurement",
  "domain": "example.com",
  "max_members": 20,
  "max_pro_users": 5
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/workspaces" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "name": "Procurement",
    "domain": "example.com",
    "max_members": 20,
    "max_pro_users": 5
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  url = f"https://platform.getclaro.ai/api/public/v1/workspaces"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "name": "Procurement",
    "domain": "example.com",
    "max_members": 20,
    "max_pro_users": 5
  }''')
  response = requests.post(url, headers=headers, json=payload)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/workspaces`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "name": "Procurement",
      "domain": "example.com",
      "max_members": 20,
      "max_pro_users": 5
    }),
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `201` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.

***

## Get workspace

<Badge color="green">GET</Badge> `/workspaces/{id}`

Get workspace through the Claro Public API.

**Required scope:** `objects`

### Parameters

| Name | Location | Type   | Required |
| ---- | -------- | ------ | -------- |
| `id` | path     | string | Yes      |

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://platform.getclaro.ai/api/public/v1/workspaces/$ID" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  id = "YOUR_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/workspaces/{id}"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.get(url, headers=headers)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const id = "YOUR_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/workspaces/${id}`, {
    method: "GET",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `200` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.

***

## Update workspace

<Badge color="yellow">PUT</Badge> `/workspaces/{id}`

Update workspace through the Claro Public API.

**Required scope:** `objects`

### Parameters

| Name | Location | Type   | Required |
| ---- | -------- | ------ | -------- |
| `id` | path     | string | Yes      |

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "name": "Global procurement",
  "max_members": 30
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PUT "https://platform.getclaro.ai/api/public/v1/workspaces/$ID" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "name": "Global procurement",
    "max_members": 30
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  id = "YOUR_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/workspaces/{id}"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "name": "Global procurement",
    "max_members": 30
  }''')
  response = requests.put(url, headers=headers, json=payload)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const id = "YOUR_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/workspaces/${id}`, {
    method: "PUT",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "name": "Global procurement",
      "max_members": 30
    }),
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `200` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.

***

## Delete workspace

<Badge color="red">DELETE</Badge> `/workspaces/{id}`

Delete workspace through the Claro Public API.

**Required scope:** `objects`

### Parameters

| Name | Location | Type   | Required |
| ---- | -------- | ------ | -------- |
| `id` | path     | string | Yes      |

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X DELETE "https://platform.getclaro.ai/api/public/v1/workspaces/$ID" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  id = "YOUR_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/workspaces/{id}"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.delete(url, headers=headers)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const id = "YOUR_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/workspaces/${id}`, {
    method: "DELETE",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `200` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.

***

## List workspace members

<Badge color="green">GET</Badge> `/workspaces/{id}/members`

List workspace members through the Claro Public API.

**Required scope:** `objects`

### Parameters

| Name | Location | Type   | Required |
| ---- | -------- | ------ | -------- |
| `id` | path     | string | Yes      |

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://platform.getclaro.ai/api/public/v1/workspaces/$ID/members" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  id = "YOUR_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/workspaces/{id}/members"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.get(url, headers=headers)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const id = "YOUR_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/workspaces/${id}/members`, {
    method: "GET",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `200` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.

***

## Add workspace members

<Badge color="blue">POST</Badge> `/workspaces/{id}/members`

Add workspace members through the Claro Public API.

**Required scope:** `objects`

### Parameters

| Name | Location | Type   | Required |
| ---- | -------- | ------ | -------- |
| `id` | path     | string | Yes      |

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "invitee_emails": [
    "buyer@example.com"
  ],
  "role": "MEMBER"
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/workspaces/$ID/members" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "invitee_emails": [
      "buyer@example.com"
    ],
    "role": "MEMBER"
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  id = "YOUR_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/workspaces/{id}/members"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "invitee_emails": [
      "buyer@example.com"
    ],
    "role": "MEMBER"
  }''')
  response = requests.post(url, headers=headers, json=payload)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const id = "YOUR_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/workspaces/${id}/members`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "invitee_emails": [
        "buyer@example.com"
      ],
      "role": "MEMBER"
    }),
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `201` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.

***

## Update workspace member role

<Badge color="yellow">PUT</Badge> `/workspaces/{id}/members/{userId}`

Update workspace member role through the Claro Public API.

**Required scope:** `objects`

### Parameters

| Name     | Location | Type   | Required |
| -------- | -------- | ------ | -------- |
| `id`     | path     | string | Yes      |
| `userId` | path     | string | Yes      |

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "role": "ADMIN"
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PUT "https://platform.getclaro.ai/api/public/v1/workspaces/$ID/members/$USER_ID" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "role": "ADMIN"
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  id = "YOUR_ID"
  user_id = "YOUR_USER_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/workspaces/{id}/members/{user_id}"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "role": "ADMIN"
  }''')
  response = requests.put(url, headers=headers, json=payload)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const id = "YOUR_ID";
  const userId = "YOUR_USER_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/workspaces/${id}/members/${userId}`, {
    method: "PUT",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "role": "ADMIN"
    }),
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `200` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.

***

## Remove workspace member

<Badge color="red">DELETE</Badge> `/workspaces/{id}/members/{userId}`

Remove workspace member through the Claro Public API.

**Required scope:** `objects`

### Parameters

| Name     | Location | Type   | Required |
| -------- | -------- | ------ | -------- |
| `id`     | path     | string | Yes      |
| `userId` | path     | string | Yes      |

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X DELETE "https://platform.getclaro.ai/api/public/v1/workspaces/$ID/members/$USER_ID" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  id = "YOUR_ID"
  user_id = "YOUR_USER_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/workspaces/{id}/members/{user_id}"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.delete(url, headers=headers)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const id = "YOUR_ID";
  const userId = "YOUR_USER_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/workspaces/${id}/members/${userId}`, {
    method: "DELETE",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `200` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.

***

## Get current identity

<Badge color="green">GET</Badge> `/me`

Get current identity through the Claro Public API.

**Required scope:** `objects`

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://platform.getclaro.ai/api/public/v1/me" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  url = f"https://platform.getclaro.ai/api/public/v1/me"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.get(url, headers=headers)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/me`, {
    method: "GET",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `200` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.

***

## Get credit balance

<Badge color="green">GET</Badge> `/account/credits`

Get credit balance through the Claro Public API.

**Required scope:** `objects`

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://platform.getclaro.ai/api/public/v1/account/credits" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  url = f"https://platform.getclaro.ai/api/public/v1/account/credits"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.get(url, headers=headers)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/account/credits`, {
    method: "GET",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `200` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.

***

## Get subscription

<Badge color="green">GET</Badge> `/account/subscription`

Get subscription through the Claro Public API.

**Required scope:** `objects`

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://platform.getclaro.ai/api/public/v1/account/subscription" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  url = f"https://platform.getclaro.ai/api/public/v1/account/subscription"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.get(url, headers=headers)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/account/subscription`, {
    method: "GET",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `200` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.

***

## Get account limits

<Badge color="green">GET</Badge> `/account/limits`

Get account limits through the Claro Public API.

**Required scope:** `objects`

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://platform.getclaro.ai/api/public/v1/account/limits" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  url = f"https://platform.getclaro.ai/api/public/v1/account/limits"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.get(url, headers=headers)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/account/limits`, {
    method: "GET",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `200` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.

***

## Get credit summary

<Badge color="green">GET</Badge> `/account/credits/summary`

Get credit summary through the Claro Public API.

**Required scope:** `objects`

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://platform.getclaro.ai/api/public/v1/account/credits/summary" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  url = f"https://platform.getclaro.ai/api/public/v1/account/credits/summary"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.get(url, headers=headers)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/account/credits/summary`, {
    method: "GET",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `200` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.

***

## List credit transactions

<Badge color="green">GET</Badge> `/account/credits/transactions`

List credit transactions through the Claro Public API.

**Required scope:** `objects`

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://platform.getclaro.ai/api/public/v1/account/credits/transactions" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  url = f"https://platform.getclaro.ai/api/public/v1/account/credits/transactions"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.get(url, headers=headers)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/account/credits/transactions`, {
    method: "GET",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `200` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.

***

## Get credit usage analytics

<Badge color="green">GET</Badge> `/account/credits/usage`

Get credit usage analytics through the Claro Public API.

**Required scope:** `objects`

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://platform.getclaro.ai/api/public/v1/account/credits/usage" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  url = f"https://platform.getclaro.ai/api/public/v1/account/credits/usage"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.get(url, headers=headers)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/account/credits/usage`, {
    method: "GET",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
  });

  if (!response.ok) throw new Error(await response.text());
  const data = await response.json();
  ```
</CodeGroup>

### Responses

* `200` - Successful response
* `Default` - Error response. Rate-limited responses use HTTP 429.
