> ## 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.

# Catalogues & Records

> Create and manage catalogues, sources, records, snapshots, and actions.

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

## List objects

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

List objects 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/objects" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  url = f"https://platform.getclaro.ai/api/public/v1/objects"
  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/objects`, {
    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 object

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

Create object through the Claro Public API.

**Required scope:** `objects`

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "name": "Supplier catalogue",
  "description": "Products received from suppliers"
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/objects" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "name": "Supplier catalogue",
    "description": "Products received from suppliers"
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  url = f"https://platform.getclaro.ai/api/public/v1/objects"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "name": "Supplier catalogue",
    "description": "Products received from suppliers"
  }''')
  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/objects`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "name": "Supplier catalogue",
      "description": "Products received from suppliers"
    }),
  });

  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 object

<Badge color="green">GET</Badge> `/objects/{objectId}`

Get object through the Claro Public API.

**Required scope:** `objects`

### Parameters

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

### Example request

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

  ```python Python theme={null}
  import requests
  object_id = "YOUR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/objects/{object_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 objectId = "YOUR_OBJECT_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/objects/${objectId}`, {
    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 object

<Badge color="orange">PATCH</Badge> `/objects/{objectId}`

Update object through the Claro Public API.

**Required scope:** `objects`

### Parameters

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

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "name": "Updated supplier catalogue",
  "auto_enrich": true
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PATCH "https://platform.getclaro.ai/api/public/v1/objects/$OBJECT_ID" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "name": "Updated supplier catalogue",
    "auto_enrich": true
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  object_id = "YOUR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/objects/{object_id}"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "name": "Updated supplier catalogue",
    "auto_enrich": true
  }''')
  response = requests.patch(url, headers=headers, json=payload)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const objectId = "YOUR_OBJECT_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/objects/${objectId}`, {
    method: "PATCH",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "name": "Updated supplier catalogue",
      "auto_enrich": true
    }),
  });

  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 object

<Badge color="red">DELETE</Badge> `/objects/{objectId}`

Delete object through the Claro Public API.

**Required scope:** `objects`

### Parameters

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

### Example request

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

  ```python Python theme={null}
  import requests
  object_id = "YOUR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/objects/{object_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 objectId = "YOUR_OBJECT_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/objects/${objectId}`, {
    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.

***

## Upload an object source

<Badge color="blue">POST</Badge> `/objects/{objectId}/sources/upload`

Upload an object source through the Claro Public API.

**Required scope:** `objects`

### Parameters

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

### Request body

Content type: `multipart/form-data` (required)

Upload the source file using the `file` form field.

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/objects/$OBJECT_ID/sources/upload" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -F "file=@path/to/file.csv"
  ```

  ```python Python theme={null}
  import requests
  object_id = "YOUR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/objects/{object_id}/sources/upload"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  files = {"file": open("path/to/file.csv", "rb")}
  response = requests.post(url, headers=headers, files=files)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const objectId = "YOUR_OBJECT_ID";

  const formData = new FormData();
  formData.append("file", fileInput.files[0]);

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/objects/${objectId}/sources/upload`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
    body: formData,
  });

  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.

***

## Import object records

<Badge color="blue">POST</Badge> `/objects/{objectId}/records/import`

Import object records through the Claro Public API.

**Required scope:** `objects`

### Parameters

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

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "file_id": "00000000-0000-4000-8000-000000000001",
  "mappings": {
    "Product Name": "name",
    "SKU": "sku"
  }
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/objects/$OBJECT_ID/records/import" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "file_id": "00000000-0000-4000-8000-000000000001",
    "mappings": {
      "Product Name": "name",
      "SKU": "sku"
    }
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  object_id = "YOUR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/objects/{object_id}/records/import"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "file_id": "00000000-0000-4000-8000-000000000001",
    "mappings": {
      "Product Name": "name",
      "SKU": "sku"
    }
  }''')
  response = requests.post(url, headers=headers, json=payload)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const objectId = "YOUR_OBJECT_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/objects/${objectId}/records/import`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "file_id": "00000000-0000-4000-8000-000000000001",
      "mappings": {
        "Product Name": "name",
        "SKU": "sku"
      }
    }),
  });

  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.

***

## Extract an uploaded source

<Badge color="blue">POST</Badge> `/objects/extract`

Extract an uploaded source through the Claro Public API.

**Required scope:** `objects`

### Request body

Content type: `multipart/form-data` (required)

Upload the source file using the `file` form field.

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/objects/extract" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -F "file=@path/to/file.csv"
  ```

  ```python Python theme={null}
  import requests
  url = f"https://platform.getclaro.ai/api/public/v1/objects/extract"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  files = {"file": open("path/to/file.csv", "rb")}
  response = requests.post(url, headers=headers, files=files)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const formData = new FormData();
  formData.append("file", fileInput.files[0]);

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/objects/extract`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
    body: formData,
  });

  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 object snapshots

<Badge color="green">GET</Badge> `/objects/{objectId}/snapshots`

List object snapshots through the Claro Public API.

**Required scope:** `objects`

### Parameters

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

### Example request

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

  ```python Python theme={null}
  import requests
  object_id = "YOUR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/objects/{object_id}/snapshots"
  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 objectId = "YOUR_OBJECT_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/objects/${objectId}/snapshots`, {
    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 object actions

<Badge color="green">GET</Badge> `/objects/{objectId}/actions`

List object actions through the Claro Public API.

**Required scope:** `objects`

### Parameters

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

### Example request

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

  ```python Python theme={null}
  import requests
  object_id = "YOUR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/objects/{object_id}/actions"
  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 objectId = "YOUR_OBJECT_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/objects/${objectId}/actions`, {
    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 object action

<Badge color="green">GET</Badge> `/objects/{objectId}/actions/{actionId}`

Get object action through the Claro Public API.

**Required scope:** `objects`

### Parameters

| Name       | Location | Type   | Required |
| ---------- | -------- | ------ | -------- |
| `objectId` | path     | string | Yes      |
| `actionId` | path     | string | Yes      |

### Example request

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

  ```python Python theme={null}
  import requests
  object_id = "YOUR_OBJECT_ID"
  action_id = "YOUR_ACTION_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/objects/{object_id}/actions/{action_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 objectId = "YOUR_OBJECT_ID";
  const actionId = "YOUR_ACTION_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/objects/${objectId}/actions/${actionId}`, {
    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 object action diff

<Badge color="green">GET</Badge> `/objects/{objectId}/actions/{actionId}/diff`

Get object action diff through the Claro Public API.

**Required scope:** `objects`

### Parameters

| Name       | Location | Type   | Required |
| ---------- | -------- | ------ | -------- |
| `objectId` | path     | string | Yes      |
| `actionId` | path     | string | Yes      |

### Example request

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

  ```python Python theme={null}
  import requests
  object_id = "YOUR_OBJECT_ID"
  action_id = "YOUR_ACTION_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/objects/{object_id}/actions/{action_id}/diff"
  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 objectId = "YOUR_OBJECT_ID";
  const actionId = "YOUR_ACTION_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/objects/${objectId}/actions/${actionId}/diff`, {
    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.

***

## Apply object action

<Badge color="blue">POST</Badge> `/objects/{objectId}/actions/{actionId}/apply`

Apply object action through the Claro Public API.

**Required scope:** `objects`

### Parameters

| Name       | Location | Type   | Required |
| ---------- | -------- | ------ | -------- |
| `objectId` | path     | string | Yes      |
| `actionId` | path     | string | Yes      |

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "scope": "rows",
  "row_ids": [
    "00000000-0000-4000-8000-000000000004"
  ]
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/objects/$OBJECT_ID/actions/$ACTION_ID/apply" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "scope": "rows",
    "row_ids": [
      "00000000-0000-4000-8000-000000000004"
    ]
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  object_id = "YOUR_OBJECT_ID"
  action_id = "YOUR_ACTION_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/objects/{object_id}/actions/{action_id}/apply"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "scope": "rows",
    "row_ids": [
      "00000000-0000-4000-8000-000000000004"
    ]
  }''')
  response = requests.post(url, headers=headers, json=payload)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const objectId = "YOUR_OBJECT_ID";
  const actionId = "YOUR_ACTION_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/objects/${objectId}/actions/${actionId}/apply`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "scope": "rows",
      "row_ids": [
        "00000000-0000-4000-8000-000000000004"
      ]
    }),
  });

  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 snapshot diff

<Badge color="green">GET</Badge> `/objects/{objectId}/snapshots/{snapshotId}/diff`

Get snapshot diff through the Claro Public API.

**Required scope:** `objects`

### Parameters

| Name         | Location | Type   | Required |
| ------------ | -------- | ------ | -------- |
| `objectId`   | path     | string | Yes      |
| `snapshotId` | path     | string | Yes      |

### Example request

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

  ```python Python theme={null}
  import requests
  object_id = "YOUR_OBJECT_ID"
  snapshot_id = "YOUR_SNAPSHOT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/objects/{object_id}/snapshots/{snapshot_id}/diff"
  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 objectId = "YOUR_OBJECT_ID";
  const snapshotId = "YOUR_SNAPSHOT_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/objects/${objectId}/snapshots/${snapshotId}/diff`, {
    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.

***

## Apply snapshot

<Badge color="blue">POST</Badge> `/objects/{objectId}/snapshots/{snapshotId}/apply`

Apply snapshot through the Claro Public API.

**Required scope:** `objects`

### Parameters

| Name         | Location | Type   | Required |
| ------------ | -------- | ------ | -------- |
| `objectId`   | path     | string | Yes      |
| `snapshotId` | path     | string | Yes      |

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "scope": "rows",
  "row_ids": [
    "00000000-0000-4000-8000-000000000004"
  ]
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/objects/$OBJECT_ID/snapshots/$SNAPSHOT_ID/apply" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "scope": "rows",
    "row_ids": [
      "00000000-0000-4000-8000-000000000004"
    ]
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  object_id = "YOUR_OBJECT_ID"
  snapshot_id = "YOUR_SNAPSHOT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/objects/{object_id}/snapshots/{snapshot_id}/apply"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "scope": "rows",
    "row_ids": [
      "00000000-0000-4000-8000-000000000004"
    ]
  }''')
  response = requests.post(url, headers=headers, json=payload)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const objectId = "YOUR_OBJECT_ID";
  const snapshotId = "YOUR_SNAPSHOT_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/objects/${objectId}/snapshots/${snapshotId}/apply`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "scope": "rows",
      "row_ids": [
        "00000000-0000-4000-8000-000000000004"
      ]
    }),
  });

  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.
