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

# S3 Connector

> Connect to files stored in Amazon S3 buckets or S3-compatible storage

Read files from an S3 bucket. Each discovered object key becomes the stable identifier used in responses.

### Discriminant

* `type: "s3"`

### Minimal config

Use a bucket and a few prefixes. We’ll expand prefixes recursively by default.

```json theme={null}
{
  "connector": {
    "type": "s3",
    "bucket_name": "my-docs-bucket",
    "prefixes": [
      "docs/",
      "videos/demo.mp4"
    ]
  }
}
```

### Advanced config

When you need precise control, pass `S3Prefix` objects instead of plain strings. This lets you opt out of recursion per‑prefix.

```json theme={null}
{
  "connector": {
    "type": "s3",
    "bucket_name": "my-docs-bucket",
    "prefixes": [
      { "prefix": "docs/", "recursive": true },
      { "prefix": "docs/drafts/", "recursive": false },
      "videos/demo.mp4"
    ]
  }
}
```

Field reference

* `bucket_name` (string): Source bucket name.
* `prefixes` (Array\<string | S3Prefix>): One or more prefixes or exact keys. An empty string reads the whole bucket.
* `S3Prefix.prefix` (string): The prefix path to scan.
* `S3Prefix.recursive` (boolean, default true): Whether to include subfolders under the prefix.

Identifier mapping

Every S3 object key we ingest is echoed in the response so you can map results back to inputs.

### Going deeper

* Use `S3Prefix` objects when you need per‑prefix recursion control:
  * `{"prefix": "docs/", "recursive": true}` to scan folders - this is the default behaviour
  * `{"prefix": "docs/drafts/", "recursive": false}` to only read direct children
* Mix strings and `S3Prefix` objects in the same `prefixes` array.
