---
title: line_item_validate
description: 'Validate one line item, which is what lets it be executed.'
---

Validates a single **Line Item** — the gate execution checks.

## Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `campaign_plan_name` | `string` | yes | The plan that owns the line. |
| `line_item_id` | `lni_…` | yes | From `campaign_plan_get`. |
| `base_revision` | `integer` | yes | The revision you last read. Validation is of _that_ content. |

:::tip[Use this when one line is ready and the plan is not]

[`campaign_plan_approve`](/mcp/tools/campaign-plan-approve) cascades over every draft line, which would apply your approval to somebody else's half-written row. This is the narrow gesture.

:::

:::info[Validating changes nothing on any provider]

It opens the gate; it does not walk through it. Creating the campaigns and ad sets still goes through the mutation tools and needs the `mutation:write` scope. Validating an already-validated line is a no-op, not an error.

:::

Requires the `campaign_plan:write` scope.
