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

# Objects

The `tape object` subcommands work with S3-style objects in a tape bucket, from the terminal. A bucket is a tape, and an object is a track. The [objects architecture page](/protocol/architecture/objects) covers that model.

## put

Uploads a file under a name. The content type is inferred from the file; `--content-type` overrides it.

```bash theme={null}
tape object put reports/2026/q2.pdf ./report.pdf
```

```text Output theme={null}
bucket address:   3fTapeAddressExampleBase58Value111111111111
object:           reports/2026/q2.pdf
address:          7trKAddressExampleBase58Value11111111111111
content type:     application/pdf
bytes written:    482119
```

Like `tape write`, it also accepts `--message` for inline text or `--stdin` for pipes.

## get

Downloads an object by name. The destination defaults to the object's filename; pass a path, or `-` for stdout. `--gateway` fetches through a gateway, and `--bucket` reads from a bucket address other than the active tape.

```bash theme={null}
tape object get reports/2026/q2.pdf ./q2.pdf
```

```text Output theme={null}
wrote 482119 bytes to ./q2.pdf
bucket address: 3fTapeAddressExampleBase58Value111111111111
object: reports/2026/q2.pdf
```

## head

Fetches an object's metadata without downloading its content.

```bash theme={null}
tape object head reports/2026/q2.pdf
```

```text Output theme={null}
bucket address:   3fTapeAddressExampleBase58Value111111111111
object:           reports/2026/q2.pdf
size:             482119
etag:             7Gk2mQvXcR5nW8pZjT4dY6eKbA3sFhU1LqNw9CxEoM2i
content type:     application/pdf
last modified:    1751932800
slot:             391284421
```

## sync

Uploads a directory as objects, one per file, listed by the path relative to the directory. Content types come from the file extensions. Files that have not changed since the last sync are skipped, so a redeploy pays only for what changed. `--prefix` puts the whole tree under a name prefix, and `--force` uploads every file.

```bash theme={null}
tape object sync ./dist
```

```text Output theme={null}
uploaded 404.html
uploaded app.css
uploaded docs/index.html
uploaded index.html
bucket address:   E79y5bh5zTLq9h7SgPGRsDpcmTB1oa7YGscFFFiojy2D
subdomain label:  yk5y3rg6cwclvyz7sv763kttt2d2sinpzdm3chuzw72th45s2c3a
uploaded:         4
skipped:          0
bytes written:    562
```

For arbitrary directory-to-bucket uploads, use this command. For a website,
prefer [`tape deploy <index.html>`](/tools/cli/commands/deploy), which validates
the site tree, protects the entry-point publication order, and supports safe
post-publication pruning.

## ls

Lists the bucket's objects. A prefix filters the listing, and `--delimiter` groups common prefixes for directory-style browsing. `--limit` and `--cursor` page through large buckets.

```bash theme={null}
tape object ls reports/ --delimiter /
```

```text Output theme={null}
TYPE            SIZE  CONTENT-TYPE     NAME
prefix             -  -                reports/2025/
object        482119  application/pdf  reports/2026/q2.pdf
```

## rm

Deletes an object by name. This is a real on-chain delete: the track comes off the tape and its capacity is freed ([deletion semantics](/tools/cli/commands/deletions)).

```bash theme={null}
tape object rm reports/2026/q2.pdf
```
