S3-COMPATIBLE API

Use any S3 client.

Access your dosya.dev files with AWS CLI, boto3, rclone, or any S3-compatible tool. Drop-in replacement with zero code changes.

1

Generate S3 Keys

Settings > API Keys > S3
2

Configure Client

endpoint: dosya.dev/s3
3

Use S3 Commands

aws s3 ls, cp, sync ...
Authentication

Connect with S3 credentials

Generate S3 credentials from your API key in dashboard settings. Uses standard AWS Signature V4 authentication.

Endpoint

https://dosya.dev/s3

Access Key ID

DOSYA_XXXXXXXXXXXXXXXX

Secret Access Key

your_s3_secret_key

Region

us-east-1

Bucket

wks_your_workspace_id

Path Style

Required (forcePathStyle: true)

AWS CLI

Configure AWS CLI

Set up the AWS CLI with your dosya.dev S3 credentials. Works with AWS CLI v2.

Terminal
# Configure AWS CLI with your dosya.dev S3 credentials
$ aws configure
AWS Access Key ID: DOSYA_XXXXXXXXXXXXXXXX
AWS Secret Access Key: your_s3_secret_key
Default region name: us-east-1
Default output format: json

# Set the custom endpoint (add to ~/.aws/config or use --endpoint-url)
$ export AWS_ENDPOINT_URL=https://dosya.dev/s3
Commands

Use with AWS CLI

All standard S3 commands work out of the box. List, upload, download, sync, and manage your files.

List files
# List all buckets (workspaces)
$ aws --endpoint-url https://dosya.dev/s3 s3 ls

# List files in a workspace
$ aws --endpoint-url https://dosya.dev/s3 s3 ls s3://wks_your_workspace_id/

# List files in a subfolder
$ aws --endpoint-url https://dosya.dev/s3 s3 ls s3://wks_your_workspace_id/Documents/
Upload
# Upload a single file
$ aws --endpoint-url https://dosya.dev/s3 s3 cp \
    ./report.pdf s3://wks_your_workspace_id/Documents/report.pdf

# Upload an entire folder
$ aws --endpoint-url https://dosya.dev/s3 s3 cp \
    ./my-folder/ s3://wks_your_workspace_id/my-folder/ --recursive

# Sync a local directory (upload only new/changed files)
$ aws --endpoint-url https://dosya.dev/s3 s3 sync \
    ./backups/ s3://wks_your_workspace_id/backups/
Download
# Download a single file
$ aws --endpoint-url https://dosya.dev/s3 s3 cp \
    s3://wks_your_workspace_id/Documents/report.pdf ./report.pdf

# Download an entire folder
$ aws --endpoint-url https://dosya.dev/s3 s3 cp \
    s3://wks_your_workspace_id/Documents/ ./docs/ --recursive
Manage files
# Delete a file
$ aws --endpoint-url https://dosya.dev/s3 s3 rm \
    s3://wks_your_workspace_id/old-file.txt

# Copy a file within a workspace
$ aws --endpoint-url https://dosya.dev/s3 s3 cp \
    s3://wks_your_workspace_id/report.pdf \
    s3://wks_your_workspace_id/Archive/report-backup.pdf

# Move a file (copy + delete)
$ aws --endpoint-url https://dosya.dev/s3 s3 mv \
    s3://wks_your_workspace_id/temp.txt \
    s3://wks_your_workspace_id/Archive/temp.txt
SDKs

Use with any S3 SDK

Works with every language that has an S3 SDK. Just point the endpoint to dosya.dev.

Node.js / TypeScript
// Node.js / TypeScript with @aws-sdk/client-s3
import { S3Client, ListObjectsV2Command, PutObjectCommand } from "@aws-sdk/client-s3";
import { readFileSync } from "fs";

const client = new S3Client({
    endpoint: "https://dosya.dev/s3",
    region: "us-east-1",
    credentials: {
        accessKeyId: "DOSYA_XXXXXXXXXXXXXXXX",
        secretAccessKey: "your_s3_secret_key",
    },
    forcePathStyle: true,
});

// List files
const list = await client.send(new ListObjectsV2Command({
    Bucket: "wks_your_workspace_id",
    Prefix: "Documents/",
}));

// Upload a file
await client.send(new PutObjectCommand({
    Bucket: "wks_your_workspace_id",
    Key: "Documents/report.pdf",
    Body: readFileSync("./report.pdf"),
}));
Python (boto3)
# Python with boto3
import boto3

client = boto3.client("s3",
    endpoint_url="https://dosya.dev/s3",
    aws_access_key_id="DOSYA_XXXXXXXXXXXXXXXX",
    aws_secret_access_key="your_s3_secret_key",
    region_name="us-east-1",
)

# List files
response = client.list_objects_v2(
    Bucket="wks_your_workspace_id",
    Prefix="Documents/",
)

# Upload a file
client.upload_file(
    "./report.pdf",
    "wks_your_workspace_id",
    "Documents/report.pdf",
)
rclone

Use with rclone

Configure dosya.dev as an S3-compatible rclone remote for sync, mount, and backup.

rclone
# rclone.conf
[dosya-s3]
type = s3
provider = Other
access_key_id = DOSYA_XXXXXXXXXXXXXXXX
secret_access_key = your_s3_secret_key
endpoint = https://dosya.dev/s3
force_path_style = true

# Then use like any other rclone remote
$ rclone ls dosya-s3:wks_your_workspace_id/
$ rclone copy ./backups dosya-s3:wks_your_workspace_id/backups/
$ rclone sync ./docs dosya-s3:wks_your_workspace_id/docs/
Clients

Third-party S3 clients

Use any S3-compatible GUI client. Here are the connection details.

Cyberduck / Mountain Duck / WinSCP
# Cyberduck / Mountain Duck / WinSCP
1. Protocol: Amazon S3
2. Server:   dosya.dev
3. Port:     443
4. Path:     /s3
5. Access Key ID: DOSYA_XXXXXXXXXXXXXXXX
6. Secret Key:    your_s3_secret_key
Cyberduck
Mountain Duck
s3cmd
rclone
CloudBerry
S3 Browser
Transmit
WinSCP
Operations

Supported operations

Core S3 API operations for managing objects and multipart uploads.

ListBuckets

List all workspaces you have access to.

ListObjectsV2

List files with prefix, delimiter, and pagination support.

GetObject

Download files with ETag and conditional request support.

HeadObject

Get file metadata without downloading the body.

PutObject

Upload files. Intermediate folders are created automatically.

DeleteObject

Delete files (soft-delete). Idempotent — always returns 204.

CopyObject

Duplicate files on the server without downloading.

Multipart Upload

Upload large files in parts. Create, upload parts, complete or abort.

HeadBucket

Check if a workspace exists and you have access.

Reference

API key scopes

Permission mapping
Operation read upload full
ListBuckets
ListObjectsV2
GetObject (download)
HeadObject
PutObject (upload)
DeleteObject
CopyObject
Multipart Upload
Limitations & notes
Path style only Virtual-hosted bucket style is not supported. Use path style (forcePathStyle: true).
Bucket = Workspace S3 bucket names are your workspace IDs (wks_xxx). You cannot create or delete buckets.
Auto-create folders Uploading to a/b/c.txt automatically creates folders a/ and a/b/ if needed.
Locked files Files locked via the dashboard cannot be modified or deleted via S3.
Rate limiting 600 requests per minute per user, 1200 per minute per IP.
Separate credentials S3 credentials are generated separately from your API key (dos_xxx).

Use your favorite S3 tools.

Generate S3 credentials and start using AWS CLI, boto3, rclone, or any S3 client.

Free tier includes 5 GB storage and full S3 API access.