# Ingestion Rules Commands

> See [Ingestion Rules module docs](../../modules/ingestion-rules) for permissions and data model.

# Ingestion Rules Commands

See [Ingestion Rules module docs](../../modules/ingestion-rules) for permissions and data model.

### `soat list-ingestion-rules`

List ingestion rules

- Method: `GET`
- Path: `/api/v1/ingestion-rules`

#### Usage

```bash
soat list-ingestion-rules
```

#### Options

##### `--project-id`

Project ID (required if not using project key auth)

- Source: `query`
- Required: no
- Type: `string`
- Example: `proj_V1StGXR8Z5jdHi6B`

##### `--limit`

Number of results per page

- Source: `query`
- Required: no
- Type: `integer`
- Default: `25`

##### `--offset`

Number of results to skip

- Source: `query`
- Required: no
- Type: `integer`
- Default: `0`

### `soat create-ingestion-rule`

Create an ingestion rule

- Method: `POST`
- Path: `/api/v1/ingestion-rules`

#### Usage

```bash
soat create-ingestion-rule --content-type-glob <string>
```

#### Options

##### `--project-id`

Project ID (required if not using project key auth)

- Source: `body`
- Required: no
- Type: `string`
- Example: `proj_V1StGXR8Z5jdHi6B`

##### `--content-type-glob`

MIME type glob matched against a file's content_type

- Source: `body`
- Required: yes
- Type: `string`
- Example: `image/*`

##### `--tool-id`

Converter tool id (mutually exclusive with agent_id)

- Source: `body`
- Required: no
- Type: `string`
- Example: `tool_V1StGXR8Z5jdHi6B`

##### `--agent-id`

Converter agent id (mutually exclusive with tool_id)

- Source: `body`
- Required: no
- Type: `string`
- Example: `agent_V1StGXR8Z5jdHi6B`

##### `--action`

Operation id, required for builtin/mcp tool converters

- Source: `body`
- Required: no
- Type: `string`

##### `--preset-parameters`

Merged into the tool input before invocation (tool converters only)

- Source: `body`
- Required: no
- Type: `object`

##### `--native-extraction`

For native types (PDF/text): `first` (default) converts only when native extraction yields no text; `skip` always converts.

- Source: `body`
- Required: no
- Type: `enum("first", "skip")`

##### `--file-delivery`

How the file reaches a tool converter (default base64)

- Source: `body`
- Required: no
- Type: `enum("base64", "download_url")`

##### `--chunk-strategy`

Default chunk strategy, overridable per ingest request

- Source: `body`
- Required: no
- Type: `enum("page", "whole", "size")`

##### `--chunk-size`

Default window size in characters for the size strategy

- Source: `body`
- Required: no
- Type: `integer`

##### `--chunk-overlap`

Default overlap in characters for the size strategy

- Source: `body`
- Required: no
- Type: `integer`

##### `--metadata`

Arbitrary JSON metadata

- Source: `body`
- Required: no
- Type: `object`

### `soat get-ingestion-rule`

Get an ingestion rule

- Method: `GET`
- Path: `/api/v1/ingestion-rules/{ingestion_rule_id}`

#### Usage

```bash
soat get-ingestion-rule --ingestion-rule-id <string>
```

#### Options

##### `--ingestion-rule-id`

Ingestion rule ID

- Source: `path`
- Required: yes
- Type: `string`
- Example: `igr_V1StGXR8Z5jdHi6B`

### `soat update-ingestion-rule`

Update an ingestion rule

- Method: `PATCH`
- Path: `/api/v1/ingestion-rules/{ingestion_rule_id}`

#### Usage

```bash
soat update-ingestion-rule --ingestion-rule-id <string>
```

#### Options

##### `--ingestion-rule-id`

Ingestion rule ID

- Source: `path`
- Required: yes
- Type: `string`

##### `--content-type-glob`

—

- Source: `body`
- Required: no
- Type: `string`

##### `--tool-id`

—

- Source: `body`
- Required: no
- Type: `string \| null`

##### `--agent-id`

—

- Source: `body`
- Required: no
- Type: `string \| null`

##### `--action`

—

- Source: `body`
- Required: no
- Type: `string \| null`

##### `--preset-parameters`

—

- Source: `body`
- Required: no
- Type: `object`

##### `--native-extraction`

—

- Source: `body`
- Required: no
- Type: `enum("first", "skip")`

##### `--file-delivery`

—

- Source: `body`
- Required: no
- Type: `enum("base64", "download_url")`

##### `--chunk-strategy`

Send `null` to clear the rule's override and fall back to the per-request default.

- Source: `body`
- Required: no
- Type: `enum("page", "whole", "size", null)`

##### `--chunk-size`

—

- Source: `body`
- Required: no
- Type: `integer \| null`

##### `--chunk-overlap`

—

- Source: `body`
- Required: no
- Type: `integer \| null`

##### `--metadata`

—

- Source: `body`
- Required: no
- Type: `object`

### `soat delete-ingestion-rule`

Delete an ingestion rule

- Method: `DELETE`
- Path: `/api/v1/ingestion-rules/{ingestion_rule_id}`

#### Usage

```bash
soat delete-ingestion-rule --ingestion-rule-id <string>
```

#### Options

##### `--ingestion-rule-id`

Ingestion rule ID

- Source: `path`
- Required: yes
- Type: `string`
