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

# ターゲティング

> コンテキストターゲティングAPIで、コンテキストターゲティングの一覧取得、個別取得、作成、名前の変更、削除を行う方法をご案内します。

ターゲティングには、広告主がキャンペーンを予約するときに選択するターゲティングオプションが含まれます。このページのエンドポイントでターゲティングを管理します。ターゲティング内のオプションを管理する方法は、[ターゲティングオプション](/ja/integrations/context-targeting/options)を参照してください。

* 読み取りエンドポイントには`context-targeting:read`スコープ、書き込みエンドポイントには`context-targeting:write`スコープが必要です。[事前準備](/ja/integrations/context-targeting/overview#事前準備)を参照してください。
* プロジェクトはAPIキーで決まるため、パスにプロジェクトIDは含まれません。
* 各エンドポイントには、そのエンドポイント固有のエラーのみを記載しています。すべてのエンドポイントに共通するエラーは、[エラーコード](/ja/integrations/context-targeting/errors#エラーコード)を参照してください。

***

## ターゲティングオブジェクト

一覧取得、取得、作成、名前変更のエンドポイントは、ターゲティングを次の形式で返します。削除エンドポイントは`_id`のみを返します。APIのフィールドでは、オプションを`categories`と呼びます。

| フィールド | タイプ | 説明 |
| - | - | - |
| `_id` | string | ターゲティングID（26文字のULID）。サーバーが生成します。 |
| `name` | string | ターゲティング名 |
| `categories` | object\[] | オプショングループとその下位オプションを含む、ターゲティング内のすべてのオプション。各項目は[オプションオブジェクト](/ja/integrations/context-targeting/options#オプションオブジェクト)で、コンテキストIDの数（`contextCount`）は含みますが、コンテキストID自体は含みません。 |
| `categoryCount` | number | 下位オプションを含む、ターゲティング内のオプションの数。常に含まれます。 |
| `syncedAt` | number | このターゲティングの広告配信への直近の読み込みが始まった時刻（エポックミリ秒）。この時刻以前に成功した変更は読み込み済みです。 |
| `createdAt` | string | ターゲティングの作成日時（ISO 8601、UTC） |
| `updatedAt` | string | ターゲティングの最終更新日時（ISO 8601、UTC）。ターゲティングが広告配信に読み込まれたときにも変わります。 |

`categories`と`syncedAt`は、すべてのレスポンスに含まれるわけではありません。

| レスポンス | `categories` | `syncedAt` |
| - | - | - |
| [ターゲティング一覧の取得](#ターゲティング一覧の取得)、[ターゲティングの取得](#ターゲティングの取得) | デフォルトで含まれます。`includeCategories=false`を指定すると省略されます。 | 値がある場合に含まれます |
| [ターゲティングの作成](#ターゲティングの作成)、[ターゲティングの一括作成](#ターゲティングの一括作成) | 含まれます | 新しいターゲティングはまだ読み込まれていないため、省略されます |
| [ターゲティング名の変更](#ターゲティング名の変更)、[ターゲティング名の一括変更](#ターゲティング名の一括変更) | 省略されます | 値がある場合に含まれます |

`syncedAt`は、ターゲティングの最初の読み込みが完了するまで省略されます。コンテキストIDの変更、オプションの追加、オプションの移動や切り離しを行った後も、通常は次の読み込みが完了するまで省略されます。

<Note>
  変更が読み込まれたかどうかは、変更が成功した時刻と`syncedAt`を比べて確認してください。`syncedAt`の有無では判断しないでください。[変更が反映されるタイミング](/ja/integrations/context-targeting/overview#変更が反映されるタイミング)を参照してください。
</Note>

***

## ターゲティング一覧の取得

プロジェクト内のすべてのコンテキストターゲティングを返します。オーディエンスターゲティングは含まれず、一覧はページ分割されません。

### リクエスト

```http theme={null}
GET /context-targeting
```

`context-targeting:read`スコープが必要です。

### クエリパラメータ

| パラメータ | タイプ | 必須 | デフォルト | 説明 |
| - | - | :-: | - | - |
| `includeCategories` | boolean | - | `true` | `categories`を含めるかどうか。`false`を指定すると`categories`は省略されますが、`categoryCount`でオプションの数は引き続き確認できます。オプションが多いターゲティングでは`false`を指定し、[オプション一覧の取得](/ja/integrations/context-targeting/options#オプション一覧の取得)でオプションをページ単位で取得してください。`true`と`false`以外の値を指定すると`400`が返されます。 |

### リクエスト例

```bash theme={null}
curl "https://lake.adrop.io/context-targeting?includeCategories=false" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json"
```

### レスポンス例

`200`で、[ターゲティングオブジェクト](#ターゲティングオブジェクト)の配列を返します。

```json theme={null}
[
  {
    "_id": "01JAB3XK5Q8V7M2N4P6R9T0W1Y",
    "name": "News Sections",
    "categoryCount": 2,
    "syncedAt": 1791854650000,
    "createdAt": "2026-10-13T01:23:45.000Z",
    "updatedAt": "2026-10-13T01:24:12.000Z"
  }
]
```

***

## ターゲティングの取得

コンテキストターゲティングを1件返します。

### リクエスト

```http theme={null}
GET /context-targeting/{targetingId}
```

`context-targeting:read`スコープが必要です。

### パスパラメータ

| パラメータ | タイプ | 必須 | 説明 |
| - | - | :-: | - |
| `targetingId` | string | O | ターゲティングID |

### クエリパラメータ

| パラメータ | タイプ | 必須 | デフォルト | 説明 |
| - | - | :-: | - | - |
| `includeCategories` | boolean | - | `true` | `categories`を含めるかどうか。`false`を指定すると`categories`は省略されますが、`categoryCount`でオプションの数は引き続き確認できます。`true`と`false`以外の値を指定すると`400`が返されます。 |

### リクエスト例

```bash theme={null}
curl "https://lake.adrop.io/context-targeting/01JAB3XK5Q8V7M2N4P6R9T0W1Y" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json"
```

### レスポンス例

`200`で、[ターゲティングオブジェクト](#ターゲティングオブジェクト)を返します。

```json theme={null}
{
  "_id": "01JAB3XK5Q8V7M2N4P6R9T0W1Y",
  "name": "News Sections",
  "categories": [
    {
      "_id": "01JAB3XK5RA1B2C3D4E5F6G7H8",
      "name": "Sports",
      "type": "atomic",
      "contextCount": 3,
      "createdAt": "2026-10-13T01:23:45.000Z",
      "updatedAt": "2026-10-13T01:23:45.000Z"
    },
    {
      "_id": "01JAB3XK5RA1B2C3D4E5F6G7H9",
      "name": "Tech",
      "type": "atomic",
      "contextCount": 3,
      "createdAt": "2026-10-13T01:23:45.000Z",
      "updatedAt": "2026-10-13T01:23:45.000Z"
    }
  ],
  "categoryCount": 2,
  "syncedAt": 1791854650000,
  "createdAt": "2026-10-13T01:23:45.000Z",
  "updatedAt": "2026-10-13T01:24:12.000Z"
}
```

オプションのコンテキストIDを取得するには、[オプションの取得](/ja/integrations/context-targeting/options#オプションの取得)を使用してください。

**エラー**

| ステータス | `errorCode` | 発生条件 |
| - | - | - |
| 404 | `TARGETING_NOT_FOUND` | プロジェクトに、このIDのコンテキストターゲティングがありません。オーディエンスターゲティングのIDを指定した場合も、このエラーが返されます。 |

***

## ターゲティングの作成

コンテキストターゲティングを作成します。同じリクエストでオプションも作成できます。

### リクエスト

```http theme={null}
POST /context-targeting
```

`context-targeting:write`スコープが必要です。

### リクエストボディ

| フィールド | タイプ | 必須 | デフォルト | 説明 |
| - | - | :-: | - | - |
| `name` | string | O | — | ターゲティング名（2〜36文字）。オーディエンスターゲティングを含む、プロジェクト内のすべてのターゲティングの中で一意である必要があります。[名前のルール](/ja/integrations/context-targeting/errors#名前のルール)を参照してください。 |
| `categories` | object\[] | - | — | ターゲティングと一緒に作成するオプション。下位オプションを含めて、1回のリクエストで最大100個です。 |

`categories`の各項目には、次のフィールドを指定します。

| フィールド | タイプ | 必須 | デフォルト | 説明 |
| - | - | :-: | - | - |
| `name` | string | O | — | オプション名（2〜36文字）。オプショングループと下位オプションを含め、ターゲティング内で一意である必要があります。 |
| `contexts` | string\[] | - | — | オプションのコンテキストID。オプショングループの場合は、オプショングループ自身のコンテキストIDです。[コンテキストIDのルール](/ja/integrations/context-targeting/options#コンテキストidのルール)を参照してください。 |
| `type` | string | - | 説明を参照 | `atomic`（通常のオプション）または`collection`。省略すると、`children`がある場合は空の配列であってもオプショングループになり、それ以外の場合は`atomic`になります。 |
| `children` | object\[] | - | — | オプショングループのみ。作成する下位オプションで、各項目に`name`（必須）と`contexts`を指定します。 |
| `exposeChildren` | boolean | - | `false` | オプショングループのみ。下位オプションを広告主に表示するかどうか。[下位オプションを広告主に表示](/ja/integrations/context-targeting/option-groups#下位オプションを広告主に表示)を参照してください。 |

* 1回のリクエストに含められるコンテキストIDは、下位オプションの分を含めて合計10,000個までです。
* IDはすべてサーバーが生成します。`_id`を含むリクエストは`400`で失敗します。
* `categories`の項目には`parent`を指定できません。指定したリクエストは`400`で失敗します。既存のオプショングループにオプションを追加する方法は、[オプショングループへのオプション追加](/ja/integrations/context-targeting/option-groups#オプショングループへのオプション追加)を参照してください。
* 100個を超えるオプションを作成するには、まずターゲティングを作成してから、[オプションの一括追加](/ja/integrations/context-targeting/options#オプションの一括追加)を使用してください。

オプショングループの仕組みについては、[オプショングループの作成](/ja/integrations/context-targeting/option-groups#オプショングループの作成)を参照してください。

### リクエスト例

```bash theme={null}
curl -X POST https://lake.adrop.io/context-targeting \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "News Sections",
    "categories": [
      { "name": "Sports", "contexts": ["sport", "baseball", "soccer"] },
      { "name": "Tech", "contexts": ["tech", "ai", "mobile"] }
    ]
  }'
```

### レスポンス例

`201`で、オプションを含む新しい[ターゲティングオブジェクト](#ターゲティングオブジェクト)を返します。

```json theme={null}
{
  "_id": "01JAB3XK5Q8V7M2N4P6R9T0W1Y",
  "name": "News Sections",
  "categories": [
    {
      "_id": "01JAB3XK5RA1B2C3D4E5F6G7H8",
      "name": "Sports",
      "type": "atomic",
      "contextCount": 3,
      "createdAt": "2026-10-13T01:23:45.000Z",
      "updatedAt": "2026-10-13T01:23:45.000Z"
    },
    {
      "_id": "01JAB3XK5RA1B2C3D4E5F6G7H9",
      "name": "Tech",
      "type": "atomic",
      "contextCount": 3,
      "createdAt": "2026-10-13T01:23:45.000Z",
      "updatedAt": "2026-10-13T01:23:45.000Z"
    }
  ],
  "categoryCount": 2,
  "createdAt": "2026-10-13T01:23:45.000Z",
  "updatedAt": "2026-10-13T01:23:45.000Z"
}
```

ターゲティングと各オプションの`_id`を保存してください。後でターゲティングを変更するときに必要です。

**エラー**

| ステータス | `errorCode` | 発生条件 |
| - | - | - |
| 409 | `TARGETING_NAME_DUPLICATE` | プロジェクトに、`name`と同じ名前のターゲティングがすでにあります。そのターゲティングがコンテキストターゲティングの場合は、`detail.existingId`にそのIDが入ります。それ以外の場合は、`detail`が省略されます。 |
| 409 | `TARGETING_CATEGORY_NAME_DUPLICATE` | `categories`内の2つのオプション（下位オプションを含む）が同じ名前です。 |
| 400 | `TARGETING_CATEGORY_NOT_SUPPORTED` | オプションのフィールドがそのタイプと合っていません。たとえば、オプショングループに下位オプションも自身のコンテキストIDもない場合、`type: "atomic"`で`children`を送った場合、通常のオプションに`exposeChildren`を送った場合です。ターゲティングは作成されません。 |
| 400 | `TARGETING_CONTEXT_LIMIT_EXCEEDED` | プロジェクト全体のコンテキストIDの数が上限を超えます。[上限](/ja/integrations/context-targeting/errors#上限)を参照してください。 |
| 400 | `TARGETING_COLLECTION_CONTEXT_DUPLICATED` | オプショングループ自身のコンテキストIDが、プロジェクト内または同じリクエスト内の別のオプショングループでも、そのオプショングループ自身のコンテキストIDとしてすでに使われています。`detail.conflicts`に重複の一覧が入ります。[制約事項](/ja/integrations/context-targeting/option-groups#制約事項)を参照してください。 |

名前がすでに使われている場合のレスポンスは次のとおりです。

```json theme={null}
{
  "statusCode": 409,
  "errorCode": "TARGETING_NAME_DUPLICATE",
  "detail": {
    "existingId": "01JAB3XK5Q8V7M2N4P6R9T0W1Y"
  }
}
```

<Tip>
  作成は冪等ではありません。作成リクエストがタイムアウトした場合や`5xx`エラーで失敗した場合は、再送できます。最初のリクエストが成功していた場合、再送したリクエストは`409 TARGETING_NAME_DUPLICATE`で失敗し、`detail.existingId`には最初のリクエストで作成されたターゲティングのIDが入ります。[再試行と重複リクエスト](/ja/integrations/context-targeting/errors#再試行と重複リクエスト)を参照してください。
</Tip>

***

## ターゲティング名の変更

ターゲティングの名前を変更します。オプションとコンテキストIDは変更されません。

### リクエスト

```http theme={null}
PATCH /context-targeting/{targetingId}
```

`context-targeting:write`スコープが必要です。

### パスパラメータ

| パラメータ | タイプ | 必須 | 説明 |
| - | - | :-: | - |
| `targetingId` | string | O | ターゲティングID |

### リクエストボディ

| フィールド | タイプ | 必須 | 説明 |
| - | - | :-: | - |
| `name` | string | O | 新しいターゲティング名（2〜36文字）。オーディエンスターゲティングを含む、プロジェクト内のすべてのターゲティングの中で一意である必要があります。現在の名前をそのまま送ることもできます。[名前のルール](/ja/integrations/context-targeting/errors#名前のルール)を参照してください。 |

### リクエスト例

```bash theme={null}
curl -X PATCH https://lake.adrop.io/context-targeting/01JAB3XK5Q8V7M2N4P6R9T0W1Y \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Article Sections" }'
```

### レスポンス例

`200`で、名前を変更した[ターゲティングオブジェクト](#ターゲティングオブジェクト)を`categories`なしで返します。オプションを取得するには、[ターゲティングの取得](#ターゲティングの取得)または[オプション一覧の取得](/ja/integrations/context-targeting/options#オプション一覧の取得)を使用してください。

```json theme={null}
{
  "_id": "01JAB3XK5Q8V7M2N4P6R9T0W1Y",
  "name": "Article Sections",
  "categoryCount": 2,
  "syncedAt": 1791854650000,
  "createdAt": "2026-10-13T01:23:45.000Z",
  "updatedAt": "2026-10-13T02:10:00.000Z"
}
```

**エラー**

| ステータス | `errorCode` | 発生条件 |
| - | - | - |
| 404 | `TARGETING_NOT_FOUND` | プロジェクトに、このIDのコンテキストターゲティングがありません。 |
| 409 | `TARGETING_NAME_DUPLICATE` | プロジェクトに、`name`と同じ名前の別のターゲティングがすでにあります。そのターゲティングがコンテキストターゲティングの場合は、`detail.existingId`にそのIDが入ります。 |

***

## ターゲティングの削除

ターゲティングと、そのすべてのオプション（オプショングループと下位オプションを含む）を削除します。

<Warning>
  承認済みで終了していないキャンペーンが、ターゲティングのいずれかのオプションを含めている、または除外している間は、そのターゲティングを削除できません。リクエストは`400 TARGETING_LOCKED`で失敗し、何も削除されません。個々のオプションの削除は、この制限を受けません。[オプションの削除](/ja/integrations/context-targeting/options#オプションの削除)を参照してください。
</Warning>

### リクエスト

```http theme={null}
DELETE /context-targeting/{targetingId}
```

`context-targeting:write`スコープが必要です。

### パスパラメータ

| パラメータ | タイプ | 必須 | 説明 |
| - | - | :-: | - |
| `targetingId` | string | O | 削除するターゲティングのID |

### リクエスト例

```bash theme={null}
curl -X DELETE https://lake.adrop.io/context-targeting/01JAB3XK5Q8V7M2N4P6R9T0W1Y \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json"
```

### レスポンス例

`200`で、削除したターゲティングのIDのみを返します。

```json theme={null}
{
  "_id": "01JAB3XK5Q8V7M2N4P6R9T0W1Y"
}
```

**エラー**

| ステータス | `errorCode` | 発生条件 |
| - | - | - |
| 404 | `TARGETING_NOT_FOUND` | プロジェクトに、このIDのコンテキストターゲティングがありません。成功した削除リクエストを再送した場合は、ターゲティングはすでに削除されています。 |
| 400 | `TARGETING_LOCKED` | 承認済みで終了していないキャンペーンが、ターゲティングのいずれかのオプションを含めている、または除外しています。 |

***

## 一括操作

1回のリクエストで、最大100件のターゲティングを作成、名前変更、削除できます。

* まず、リクエスト全体が検査されます。検査の対象は、項目数（1〜100件）、各フィールドの形式、リクエストあたりの合計です。検査に失敗すると、リクエスト全体が`400`で失敗し、何も反映されません。
* プロジェクトで別のAPI書き込みを処理中の場合、リクエスト全体が`409 CONTEXT_TARGETING_WRITE_IN_PROGRESS`で失敗し、何も反映されないことがあります。[同時書き込み](/ja/integrations/context-targeting/errors#同時書き込み)を参照してください。
* それ以外の場合、すべての項目が失敗したときでも、レスポンスは`200`で、項目ごとの結果が含まれます。一部の項目が成功し、ほかの項目が失敗することもあるため、項目ごとに`success`を確認してください。

| フィールド | タイプ | 説明 |
| - | - | - |
| `results` | object\[] | 項目ごとの結果（リクエストの順序どおり） |
| `results[].index` | number | リクエストの`items`または`ids`における項目の位置（0から始まる） |
| `results[].success` | boolean | 項目が成功したかどうか |
| `results[].data` | object | 成功した項目の結果。失敗した項目では省略されます。 |
| `results[].error` | object | 失敗した項目のエラー。`statusCode`、`errorCode`と、一部のエラーでは`detail`が含まれます。成功した項目では省略されます。 |
| `succeeded` | number | 成功した項目の数 |
| `failed` | number | 失敗した項目の数 |

作成と削除のリクエストでは、検査を通過した項目がまとめて反映されます。予期しないエラーが発生した場合は、リクエストの内容は何も反映されません。このとき、検査で失敗した項目にはそのエラーが返され、それ以外の項目は`500 UNCATCHED`で失敗します。同じリクエストを再送してください。名前変更のリクエストでは、各項目がリクエストの順序どおりに1件ずつ反映されます。詳しくは[一括操作のレスポンス](/ja/integrations/context-targeting/errors#一括操作のレスポンス)を参照してください。

### ターゲティングの一括作成

オプションの有無にかかわらず、最大100件のターゲティングを作成します。

#### リクエスト

```http theme={null}
POST /context-targeting/bulk/create
```

`context-targeting:write`スコープが必要です。

#### リクエストボディ

| フィールド | タイプ | 必須 | 説明 |
| - | - | :-: | - |
| `items` | object\[] | O | 作成するターゲティング（1〜100件）。各項目には、[ターゲティングの作成](#ターゲティングの作成)のリクエストボディと同じフィールドを指定します。 |

すべての項目を合わせて、1回のリクエストに含められるオプションは下位オプションを含めて100個まで、コンテキストIDは10,000個までです。

#### リクエスト例

```bash theme={null}
curl -X POST https://lake.adrop.io/context-targeting/bulk/create \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {
        "name": "Video Sections",
        "categories": [
          { "name": "Highlights", "contexts": ["highlight", "replay"] }
        ]
      },
      {
        "name": "Podcast Sections",
        "categories": [
          { "name": "Interviews", "contexts": ["interview", "talk"] }
        ]
      },
      { "name": "News Sections" }
    ]
  }'
```

#### レスポンス例

成功した項目の`data`は、オプションを含む新しい[ターゲティングオブジェクト](#ターゲティングオブジェクト)です。この例では、「News Sections」という名前のターゲティングがすでにあるため、3番目の項目が失敗します。

```json theme={null}
{
  "results": [
    {
      "index": 0,
      "success": true,
      "data": {
        "_id": "01JAB3XK5WE1F2G3H4J5K6M7N8",
        "name": "Video Sections",
        "categories": [
          {
            "_id": "01JAB3XK5XF1G2H3J4K5M6N7P8",
            "name": "Highlights",
            "type": "atomic",
            "contextCount": 2,
            "createdAt": "2026-10-13T02:20:00.000Z",
            "updatedAt": "2026-10-13T02:20:00.000Z"
          }
        ],
        "categoryCount": 1,
        "createdAt": "2026-10-13T02:20:00.000Z",
        "updatedAt": "2026-10-13T02:20:00.000Z"
      }
    },
    {
      "index": 1,
      "success": true,
      "data": {
        "_id": "01JAB3XK5WE1F2G3H4J5K6M7N9",
        "name": "Podcast Sections",
        "categories": [
          {
            "_id": "01JAB3XK5XF1G2H3J4K5M6N7P9",
            "name": "Interviews",
            "type": "atomic",
            "contextCount": 2,
            "createdAt": "2026-10-13T02:20:00.000Z",
            "updatedAt": "2026-10-13T02:20:00.000Z"
          }
        ],
        "categoryCount": 1,
        "createdAt": "2026-10-13T02:20:00.000Z",
        "updatedAt": "2026-10-13T02:20:00.000Z"
      }
    },
    {
      "index": 2,
      "success": false,
      "error": {
        "statusCode": 409,
        "errorCode": "TARGETING_NAME_DUPLICATE",
        "detail": {
          "existingId": "01JAB3XK5Q8V7M2N4P6R9T0W1Y"
        }
      }
    }
  ],
  "succeeded": 2,
  "failed": 1
}
```

各項目は、[ターゲティングの作成](#ターゲティングの作成)と同じエラーで失敗します。同じリクエスト内の前の項目で作成したターゲティングと名前が重複した場合、`TARGETING_NAME_DUPLICATE`には`detail.existingId`の代わりに、その項目のインデックスを示す`detail.duplicateOfIndex`が入ります。

### ターゲティング名の一括変更

最大100件のターゲティングの名前を変更します。

#### リクエスト

```http theme={null}
POST /context-targeting/bulk/update
```

`context-targeting:write`スコープが必要です。

#### リクエストボディ

| フィールド | タイプ | 必須 | 説明 |
| - | - | :-: | - |
| `items` | object\[] | O | 名前を変更するターゲティング（1〜100件） |
| `items[]._id` | string | O | ターゲティングID |
| `items[].name` | string | O | 新しいターゲティング名。[ターゲティング名の変更](#ターゲティング名の変更)と同じルールが適用されます。 |

#### リクエスト例

```bash theme={null}
curl -X POST https://lake.adrop.io/context-targeting/bulk/update \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      { "_id": "01JAB3XK5Q8V7M2N4P6R9T0W1Y", "name": "Article Sections" }
    ]
  }'
```

#### レスポンス例

成功した項目の`data`は、名前を変更した[ターゲティングオブジェクト](#ターゲティングオブジェクト)で、`categories`は含まれません。

```json theme={null}
{
  "results": [
    {
      "index": 0,
      "success": true,
      "data": {
        "_id": "01JAB3XK5Q8V7M2N4P6R9T0W1Y",
        "name": "Article Sections",
        "categoryCount": 2,
        "syncedAt": 1791854650000,
        "createdAt": "2026-10-13T01:23:45.000Z",
        "updatedAt": "2026-10-13T02:10:00.000Z"
      }
    }
  ],
  "succeeded": 1,
  "failed": 0
}
```

各項目は、[ターゲティング名の変更](#ターゲティング名の変更)と同じエラーで失敗します。

### ターゲティングの一括削除

最大100件のターゲティングと、それぞれのすべてのオプションを削除します。

#### リクエスト

```http theme={null}
POST /context-targeting/bulk/delete
```

`context-targeting:write`スコープが必要です。

#### リクエストボディ

| フィールド | タイプ | 必須 | 説明 |
| - | - | :-: | - |
| `ids` | string\[] | O | 削除するターゲティングのID（1〜100件） |

#### リクエスト例

```bash theme={null}
curl -X POST https://lake.adrop.io/context-targeting/bulk/delete \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "ids": ["01JAB3XK5Q8V7M2N4P6R9T0W1Y"]
  }'
```

#### レスポンス例

成功した項目の`data`には、削除したターゲティングの`_id`のみが含まれます。この例では、承認済みで終了していないキャンペーンがターゲティングのオプションの1つを含めているため、ターゲティングは削除されません。

```json theme={null}
{
  "results": [
    {
      "index": 0,
      "success": false,
      "error": {
        "statusCode": 400,
        "errorCode": "TARGETING_LOCKED"
      }
    }
  ],
  "succeeded": 0,
  "failed": 1
}
```

各項目は、[ターゲティングの削除](#ターゲティングの削除)と同じエラーで失敗します。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.