> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ibee.ai/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ibee.ai/docs/_mcp/server.

# Upload Your First Object

> Create your first bucket, generate API credentials, and upload an object — using the IBEE Solutions portal and an S3-compatible client.

This guide walks through creating a bucket, generating API credentials, and uploading your first object — first from the portal, then from the AWS CLI.

## Before you begin

* An active IBEE Solutions organization with a verified account
* (Optional) The [AWS CLI](https://docs.aws.amazon.com/cli/) installed locally if you want to upload programmatically

## 1. Create a bucket

In the portal, click **Object Storage** in the left sidebar under **Products**, then click **+ Create Bucket** at the top right of the Object Storage page.

Fill in the **Create Bucket** dialog:

| Field                | Value                                                                                                                    |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| **Bucket Name**      | 3–63 characters, lowercase letters, numbers, and hyphens only (e.g. `my-first-bucket`).                                  |
| **Location**         | **Automatic** (Asia Pacific) for the closest available region, or **Specify jurisdiction** to pin to a specific country. |
| **Storage Type**     | `Standard`.                                                                                                              |
| **Advanced options** | Optional. Enable **Object Lock** here if you need immutability — it cannot be added later.                               |

Click **Create Bucket**. A confirmation toast appears: *"Bucket created successfully"* and the bucket appears in the list.

See [Buckets](/docs/infrastructure/object-storage/buckets) for the full create-bucket reference.

## 2. Upload an object from the portal

Click your new bucket from the Object Storage list to open it. The bucket page has three tabs: **Objects**, **Metrics**, **Settings**.

On the **Objects** tab, click **Upload** in the top right. Drag and drop a file onto the upload area, or click **Select Files**.

The uploaded object appears in the list with its **Type**, **Storage Class**, **Size**, and **Modified** date.

See [Objects](/docs/infrastructure/object-storage/objects) for full upload, download, and detail-page reference.

## 3. Create API credentials

For programmatic access you need an API credentials scoped to Object Storage.

In the portal sidebar, click **API Credentials** under **Tools** → **+ Create Credential**. Give the credential a **Name**, check **Object Storage**, choose a permission level (e.g. **Admin Read & Write**), and pick **Apply to all buckets in this organization** or **Apply to specific buckets only**.

Click **Create Credential** and copy the credentials immediately — the **Secret Access Key** is shown only once:

| Credential        | Use                                        |
| ----------------- | ------------------------------------------ |
| Bearer Token      | The IBEE REST API (`ibee_v4_...`)          |
| Access Key ID     | S3-compatible tools (`AKIA...`)            |
| Secret Access Key | S3-compatible tools — shown once, copy now |

Your organization's S3 endpoint is `https://{workspaceId}.blob.ibeestorage.com`.

See [API Credentials](/docs/infrastructure/object-storage/api-tokens) for rotation, scoping, and revoke.

## 4. Upload from the AWS CLI

Configure a profile with your credentials:

```bash
aws configure --profile ibee
# AWS Access Key ID:     AKIA...
# AWS Secret Access Key: <your-secret-access-key>
# Default region:        us-east-1
# Default output:        json
```

Upload an object:

```bash
echo "hello, IBEE" > hello.txt

aws --endpoint-url https://{workspaceId}.blob.ibeestorage.com \
    --profile ibee \
    s3 cp hello.txt s3://my-first-bucket/
```

Verify and download:

```bash
# List
aws --endpoint-url https://{workspaceId}.blob.ibeestorage.com \
    --profile ibee \
    s3 ls s3://my-first-bucket/

# Download
aws --endpoint-url https://{workspaceId}.blob.ibeestorage.com \
    --profile ibee \
    s3 cp s3://my-first-bucket/hello.txt ./hello-copy.txt
```

## Next steps

#### [Bucket Policies](/docs/infrastructure/object-storage/buckets/bucket-policies)

Make a bucket public, scope access by API token.

#### [Lifecycle Management](/docs/infrastructure/object-storage/buckets/lifecycle-management)

Automate object expiry and storage-class transitions.

#### [Presigned URLs](/docs/infrastructure/object-storage/objects/presigned-urls)

Share time-limited links for upload or download.

#### [Mount a Bucket as a Filesystem](/docs/infrastructure/object-storage/mount-a-bucket-as-a-filesystem)

Use a bucket like a local directory with `s3fs` or `rclone`.