# Review commands: publish, remove, withhold

URL: /code/cli/review/verbs · Id: `page:code/cli/review/verbs`

> The Review Verbs publish, remove, withhold as CLI commands, with inputs, result, refusals and an example.

Reference for [Review](/business/nouns/review), one group of [Review commands](/code/cli/review).

### Review.publish
Publish shows a Review on the Startup’s Pages with its rating counted, whatever the rating. [Verb page](/business/nouns/review/publish?interface=cli).

```text
npx startup-builder do Review.publish --json '<input>' [--try | --send | --do]
```

Emits [`Review.published`](/business/events/Review.published).

**Inputs**

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| `review` | [Review](/business/nouns/review) | Yes | The Review to show. |

**Returns**

| Output | Type | Required | Description |
| --- | --- | --- | --- |
| `review` | [Review](/business/nouns/review) | Yes | The Review, now `published`. |

**Refuses when**

| Check | Error | Fix | Then call |
| --- | --- | --- | --- |
| The key is valid, but its scopes do not allow this operation. | [`forbidden`](/code/api/errors/forbidden) | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |

**Example**

```bash
npx startup-builder do Review.publish --json '{"review":"review_1XPL2xTlfx"}'
```

### Review.remove
Remove takes a Review down for good when its author or its venue asks; the record is kept. [Verb page](/business/nouns/review/remove?interface=cli).

```text
npx startup-builder do Review.remove --json '<input>' [--try | --send | --do]
```

Emits [`Review.removed`](/business/events/Review.removed).

**Inputs**

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| `review` | [Review](/business/nouns/review) | Yes | The Review to take down. |
| `reason` | `string` | Yes | Who asked. |

**Returns**

| Output | Type | Required | Description |
| --- | --- | --- | --- |
| `review` | [Review](/business/nouns/review) | Yes | The Review, now `removed`. |

**Refuses when**

| Check | Error | Fix | Then call |
| --- | --- | --- | --- |
| The key is valid, but its scopes do not allow this operation. | [`forbidden`](/code/api/errors/forbidden) | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |

**Example**

```bash
npx startup-builder do Review.remove --json '{"review":"review_1XPL2xTlfx","reason":"authorRequest"}'
```

### Review.withhold
Withhold keeps a Review off display for one of five reasons, none of them its rating or its tone. [Verb page](/business/nouns/review/withhold?interface=cli).

```text
npx startup-builder do Review.withhold --json '<input>' [--try | --send | --do]
```

Emits [`Review.withheld`](/business/events/Review.withheld).

**Inputs**

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| `review` | [Review](/business/nouns/review) | Yes | The Review to withhold. |
| `reason` | `string` | Yes | Why it is not shown. |

**Returns**

| Output | Type | Required | Description |
| --- | --- | --- | --- |
| `review` | [Review](/business/nouns/review) | Yes | The Review, now `withheld`. |

**Refuses when**

| Check | Error | Fix | Then call |
| --- | --- | --- | --- |
| The key is valid, but its scopes do not allow this operation. | [`forbidden`](/code/api/errors/forbidden) | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |

**Example**

```bash
npx startup-builder do Review.withhold --json '{"review":"review_1XPL2xTlfx","reason":"fake"}'
```