On this page

Upload a local file — or data piped via stdin — as an object. Content-type is
auto-detected from the file extension unless overridden.

**Alias:**`p`

## Usage

```bash
tigris objects put <bucket> <key> [file] [flags]
t3 o p <bucket> <key> [file] [flags]
```

Omit the `<file>` argument to read the object data from **stdin** (piped input).
Since piped data has no file extension to infer from, pass `--content-type` if
you need a specific type.

## Flags

| Name | Required | Default | Description |
| --- | --- | --- | --- |
| `--access`, `-a` | No | `private` | Access level. Options: `public`, `private` |
| `--content-type`, `-t` | No | — | Content type (auto-detected from extension if omitted) |
| `--format`, `-f` | No | `table` | Output format. Options: `json`, `table`, `xml` |

## Examples

```bash
# Upload a file
tigris objects put my-bucket report.pdf ./report.pdf

# Upload with public access and explicit content type
tigris objects put my-bucket logo.png ./logo.png --access public --content-type image/png

# Upload piped data from stdin (omit the file argument)
echo 'hello' | tigris objects put my-bucket hello.txt

# Pipe a command's output straight into an object (t3:// paths work too)
cat report.pdf | tigris objects put t3://my-bucket/report.pdf --content-type application/pdf
```
