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

# Price & Product Monitoring

> Configure and run price and product monitoring workflows.

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

## Get price monitoring config

<Badge color="green">GET</Badge> `/price-monitoring/config/{configOrObjectId}`

Get price monitoring config through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Example request

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

  ```python Python theme={null}
  import requests
  config_or_object_id = "YOUR_CONFIG_OR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/price-monitoring/config/{config_or_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 configOrObjectId = "YOUR_CONFIG_OR_OBJECT_ID";

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

<Badge color="yellow">PUT</Badge> `/price-monitoring/config/{configOrObjectId}`

Update price monitoring config through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "name": "Daily Amazon prices",
  "is_active": true
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PUT "https://platform.getclaro.ai/api/public/v1/price-monitoring/config/$CONFIG_OR_OBJECT_ID" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "name": "Daily Amazon prices",
    "is_active": true
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  config_or_object_id = "YOUR_CONFIG_OR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/price-monitoring/config/{config_or_object_id}"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "name": "Daily Amazon prices",
    "is_active": true
  }''')
  response = requests.put(url, headers=headers, json=payload)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const configOrObjectId = "YOUR_CONFIG_OR_OBJECT_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/price-monitoring/config/${configOrObjectId}`, {
    method: "PUT",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "name": "Daily Amazon prices",
      "is_active": 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 price monitoring config

<Badge color="red">DELETE</Badge> `/price-monitoring/config/{configOrObjectId}`

Delete price monitoring config through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Example request

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

  ```python Python theme={null}
  import requests
  config_or_object_id = "YOUR_CONFIG_OR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/price-monitoring/config/{config_or_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 configOrObjectId = "YOUR_CONFIG_OR_OBJECT_ID";

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

***

## Create price monitoring config

<Badge color="blue">POST</Badge> `/price-monitoring/config`

Create price monitoring config through the Claro Public API.

**Required scopes:** `objects`, `team`

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "object_id": "00000000-0000-4000-8000-000000000001",
  "name": "Amazon prices",
  "options": {
    "marketplaces": [
      "Amazon"
    ],
    "matchStrategy": "NameBrand"
  }
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/price-monitoring/config" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "object_id": "00000000-0000-4000-8000-000000000001",
    "name": "Amazon prices",
    "options": {
      "marketplaces": [
        "Amazon"
      ],
      "matchStrategy": "NameBrand"
    }
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  url = f"https://platform.getclaro.ai/api/public/v1/price-monitoring/config"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "object_id": "00000000-0000-4000-8000-000000000001",
    "name": "Amazon prices",
    "options": {
      "marketplaces": [
        "Amazon"
      ],
      "matchStrategy": "NameBrand"
    }
  }''')
  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/price-monitoring/config`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "object_id": "00000000-0000-4000-8000-000000000001",
      "name": "Amazon prices",
      "options": {
        "marketplaces": [
          "Amazon"
        ],
        "matchStrategy": "NameBrand"
      }
    }),
  });

  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.

***

## List price monitoring runs

<Badge color="green">GET</Badge> `/price-monitoring/config/{configId}/runs`

List price monitoring runs through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Example request

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

  ```python Python theme={null}
  import requests
  config_id = "YOUR_CONFIG_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/price-monitoring/config/{config_id}/runs"
  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 configId = "YOUR_CONFIG_ID";

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

***

## Trigger price monitoring run

<Badge color="blue">POST</Badge> `/price-monitoring/config/{configId}/runs`

Trigger price monitoring run through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/price-monitoring/config/$CONFIG_ID/runs" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  config_id = "YOUR_CONFIG_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/price-monitoring/config/{config_id}/runs"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.post(url, headers=headers)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const configId = "YOUR_CONFIG_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/price-monitoring/config/${configId}/runs`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
  });

  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 price monitoring run

<Badge color="green">GET</Badge> `/price-monitoring/runs/{runId}`

Get price monitoring run through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Example request

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

  ```python Python theme={null}
  import requests
  run_id = "YOUR_RUN_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/price-monitoring/runs/{run_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 runId = "YOUR_RUN_ID";

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

<Badge color="green">GET</Badge> `/price-monitoring/runs/{runId}/results`

Get price monitoring results through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Example request

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

  ```python Python theme={null}
  import requests
  run_id = "YOUR_RUN_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/price-monitoring/runs/{run_id}/results"
  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 runId = "YOUR_RUN_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/price-monitoring/runs/${runId}/results`, {
    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 product monitoring config

<Badge color="green">GET</Badge> `/product-monitoring/config/{configOrObjectId}`

Get product monitoring config through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Example request

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

  ```python Python theme={null}
  import requests
  config_or_object_id = "YOUR_CONFIG_OR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/product-monitoring/config/{config_or_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 configOrObjectId = "YOUR_CONFIG_OR_OBJECT_ID";

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

<Badge color="yellow">PUT</Badge> `/product-monitoring/config/{configOrObjectId}`

Update product monitoring config through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "name": "Weekly competitor monitoring",
  "is_active": true
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PUT "https://platform.getclaro.ai/api/public/v1/product-monitoring/config/$CONFIG_OR_OBJECT_ID" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "name": "Weekly competitor monitoring",
    "is_active": true
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  config_or_object_id = "YOUR_CONFIG_OR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/product-monitoring/config/{config_or_object_id}"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "name": "Weekly competitor monitoring",
    "is_active": true
  }''')
  response = requests.put(url, headers=headers, json=payload)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const configOrObjectId = "YOUR_CONFIG_OR_OBJECT_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/product-monitoring/config/${configOrObjectId}`, {
    method: "PUT",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "name": "Weekly competitor monitoring",
      "is_active": 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.

***

## Create product monitoring config

<Badge color="blue">POST</Badge> `/product-monitoring/config`

Create product monitoring config through the Claro Public API.

**Required scopes:** `objects`, `team`

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "object_id": "00000000-0000-4000-8000-000000000001",
  "name": "Competitor monitoring",
  "options": {
    "matchModel": "exact",
    "competitorSegment": "all",
    "sites": [],
    "cadenceDays": 7,
    "discoverNew": true,
    "alertThreshold": "5"
  }
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/product-monitoring/config" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "object_id": "00000000-0000-4000-8000-000000000001",
    "name": "Competitor monitoring",
    "options": {
      "matchModel": "exact",
      "competitorSegment": "all",
      "sites": [],
      "cadenceDays": 7,
      "discoverNew": true,
      "alertThreshold": "5"
    }
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  url = f"https://platform.getclaro.ai/api/public/v1/product-monitoring/config"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "object_id": "00000000-0000-4000-8000-000000000001",
    "name": "Competitor monitoring",
    "options": {
      "matchModel": "exact",
      "competitorSegment": "all",
      "sites": [],
      "cadenceDays": 7,
      "discoverNew": true,
      "alertThreshold": "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/product-monitoring/config`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "object_id": "00000000-0000-4000-8000-000000000001",
      "name": "Competitor monitoring",
      "options": {
        "matchModel": "exact",
        "competitorSegment": "all",
        "sites": [],
        "cadenceDays": 7,
        "discoverNew": true,
        "alertThreshold": "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.

***

## Start product monitoring setup

<Badge color="blue">POST</Badge> `/product-monitoring/setup/{objectId}/start`

Start product monitoring setup through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "forceRestart": false
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/$OBJECT_ID/start" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "forceRestart": false
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  object_id = "YOUR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/{object_id}/start"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "forceRestart": false
  }''')
  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/product-monitoring/setup/${objectId}/start`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "forceRestart": false
    }),
  });

  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 product monitoring setup status

<Badge color="green">GET</Badge> `/product-monitoring/setup/{objectId}/status`

Get product monitoring setup status through the Claro Public API.

**Required scopes:** `objects`, `team`

### 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/product-monitoring/setup/$OBJECT_ID/status" \
    -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/product-monitoring/setup/{object_id}/status"
  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/product-monitoring/setup/${objectId}/status`, {
    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.

***

## Confirm product monitoring setup

<Badge color="blue">POST</Badge> `/product-monitoring/setup/{objectId}/confirm`

Confirm product monitoring setup through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "mappings": [
    {
      "dashboardKey": "product",
      "sourceColumnId": "00000000-0000-4000-8000-000000000005",
      "resolution": "map"
    }
  ]
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/$OBJECT_ID/confirm" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "mappings": [
      {
        "dashboardKey": "product",
        "sourceColumnId": "00000000-0000-4000-8000-000000000005",
        "resolution": "map"
      }
    ]
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  object_id = "YOUR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/{object_id}/confirm"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "mappings": [
      {
        "dashboardKey": "product",
        "sourceColumnId": "00000000-0000-4000-8000-000000000005",
        "resolution": "map"
      }
    ]
  }''')
  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/product-monitoring/setup/${objectId}/confirm`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "mappings": [
        {
          "dashboardKey": "product",
          "sourceColumnId": "00000000-0000-4000-8000-000000000005",
          "resolution": "map"
        }
      ]
    }),
  });

  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 setup column

<Badge color="blue">POST</Badge> `/product-monitoring/setup/{objectId}/create-column`

Create setup column through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "fieldKey": "price"
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/$OBJECT_ID/create-column" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "fieldKey": "price"
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  object_id = "YOUR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/{object_id}/create-column"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "fieldKey": "price"
  }''')
  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/product-monitoring/setup/${objectId}/create-column`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "fieldKey": "price"
    }),
  });

  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.

***

## Finalize product monitoring setup

<Badge color="blue">POST</Badge> `/product-monitoring/setup/{objectId}/finalize`

Finalize product monitoring setup through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "answers": [
    {
      "fieldKey": "product",
      "type": "map",
      "columnId": "00000000-0000-4000-8000-000000000005"
    }
  ]
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/$OBJECT_ID/finalize" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "answers": [
      {
        "fieldKey": "product",
        "type": "map",
        "columnId": "00000000-0000-4000-8000-000000000005"
      }
    ]
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  object_id = "YOUR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/{object_id}/finalize"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "answers": [
      {
        "fieldKey": "product",
        "type": "map",
        "columnId": "00000000-0000-4000-8000-000000000005"
      }
    ]
  }''')
  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/product-monitoring/setup/${objectId}/finalize`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "answers": [
        {
          "fieldKey": "product",
          "type": "map",
          "columnId": "00000000-0000-4000-8000-000000000005"
        }
      ]
    }),
  });

  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.

***

## Start product research

<Badge color="blue">POST</Badge> `/product-monitoring/setup/{objectId}/research/start`

Start product research through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/$OBJECT_ID/research/start" \
    -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/product-monitoring/setup/{object_id}/research/start"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.post(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/product-monitoring/setup/${objectId}/research/start`, {
    method: "POST",
    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.

***

## Customize product research

<Badge color="blue">POST</Badge> `/product-monitoring/setup/{objectId}/research/customize`

Customize product research through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "customInstructions": "Focus on UK retailers and manufacturer websites"
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/$OBJECT_ID/research/customize" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "customInstructions": "Focus on UK retailers and manufacturer websites"
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  object_id = "YOUR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/{object_id}/research/customize"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "customInstructions": "Focus on UK retailers and manufacturer websites"
  }''')
  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/product-monitoring/setup/${objectId}/research/customize`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "customInstructions": "Focus on UK retailers and manufacturer websites"
    }),
  });

  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.

***

## Confirm product research

<Badge color="blue">POST</Badge> `/product-monitoring/setup/{objectId}/research/confirm`

Confirm product research through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/$OBJECT_ID/research/confirm" \
    -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/product-monitoring/setup/{object_id}/research/confirm"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.post(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/product-monitoring/setup/${objectId}/research/confirm`, {
    method: "POST",
    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.

***

## Clarify competitors

<Badge color="blue">POST</Badge> `/product-monitoring/setup/{objectId}/competitors/clarify`

Clarify competitors through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "answers": {
    "target_market": "United Kingdom"
  }
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/$OBJECT_ID/competitors/clarify" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "answers": {
      "target_market": "United Kingdom"
    }
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  object_id = "YOUR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/{object_id}/competitors/clarify"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "answers": {
      "target_market": "United Kingdom"
    }
  }''')
  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/product-monitoring/setup/${objectId}/competitors/clarify`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "answers": {
        "target_market": "United Kingdom"
      }
    }),
  });

  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.

***

## Start source selection

<Badge color="blue">POST</Badge> `/product-monitoring/setup/{objectId}/sources/start`

Start source selection through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/$OBJECT_ID/sources/start" \
    -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/product-monitoring/setup/{object_id}/sources/start"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.post(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/product-monitoring/setup/${objectId}/sources/start`, {
    method: "POST",
    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.

***

## Complete source selection

<Badge color="blue">POST</Badge> `/product-monitoring/setup/{objectId}/sources/complete`

Complete source selection through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/$OBJECT_ID/sources/complete" \
    -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/product-monitoring/setup/{object_id}/sources/complete"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.post(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/product-monitoring/setup/${objectId}/sources/complete`, {
    method: "POST",
    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.

***

## Clarify sources

<Badge color="blue">POST</Badge> `/product-monitoring/setup/{objectId}/sources/clarify`

Clarify sources through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Request body

Content type: `application/json` (required)

```json Request example theme={null}
{
  "answers": {
    "target_market": "United Kingdom"
  }
}
```

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/$OBJECT_ID/sources/clarify" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    --data '{
    "answers": {
      "target_market": "United Kingdom"
    }
  }'
  ```

  ```python Python theme={null}
  import json
  import requests
  object_id = "YOUR_OBJECT_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/product-monitoring/setup/{object_id}/sources/clarify"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  payload = json.loads(r'''{
    "answers": {
      "target_market": "United Kingdom"
    }
  }''')
  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/product-monitoring/setup/${objectId}/sources/clarify`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "answers": {
        "target_market": "United Kingdom"
      }
    }),
  });

  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.

***

## Trigger product monitoring runs

<Badge color="blue">POST</Badge> `/product-monitoring/config/{configId}/runs`

Trigger product monitoring runs through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

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

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/product-monitoring/config/$CONFIG_ID/runs" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  config_id = "YOUR_CONFIG_ID"
  url = f"https://platform.getclaro.ai/api/public/v1/product-monitoring/config/{config_id}/runs"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.post(url, headers=headers)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const configId = "YOUR_CONFIG_ID";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/product-monitoring/config/${configId}/runs`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
  });

  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.

***

## Trigger product monitoring run

<Badge color="blue">POST</Badge> `/product-monitoring/config/{configId}/runs/{sku}`

Trigger product monitoring run through the Claro Public API.

**Required scopes:** `objects`, `team`

### Parameters

| Name       | Location | Type   | Required |
| ---------- | -------- | ------ | -------- |
| `configId` | path     | string | Yes      |
| `sku`      | path     | string | Yes      |

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://platform.getclaro.ai/api/public/v1/product-monitoring/config/$CONFIG_ID/runs/$SKU" \
    -H "Authorization: Bearer clr_live_YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests
  config_id = "YOUR_CONFIG_ID"
  sku = "YOUR_SKU"
  url = f"https://platform.getclaro.ai/api/public/v1/product-monitoring/config/{config_id}/runs/{sku}"
  headers = {"Authorization": "Bearer clr_live_YOUR_API_KEY"}
  response = requests.post(url, headers=headers)
  response.raise_for_status()
  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const configId = "YOUR_CONFIG_ID";
  const sku = "YOUR_SKU";

  const response = await fetch(`https://platform.getclaro.ai/api/public/v1/product-monitoring/config/${configId}/runs/${sku}`, {
    method: "POST",
    headers: {
      Authorization: "Bearer clr_live_YOUR_API_KEY",
    },
  });

  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.
