API

dosya.dev REST API

Everything you can do in the dashboard, you can do via the API. Upload terabytes, manage workspaces, and generate share links — all programmatically.

Getting Started

Authentication

Base URL & API Key
# Base URL
https://dosya.dev/api

# All requests require an API key in the header
Authorization: Bearer dos_your-api-key

# Example: List your workspaces
$ curl https://dosya.dev/api/workspaces \
    -H "Authorization: Bearer dos_your-api-key"
Endpoints

API Reference

Click any endpoint to see its example request and response.

Files
POST /api/upload/init
{
  "file_name": "project-final.mp4",
  "file_size": 214748364800,
  "workspace_id": "ws_abc123",
  "mime_type": "video/mp4"
}
POST /api/upload/:sessionId
Binary chunk data

Headers:
  Content-Type: application/octet-stream
  X-Chunk-Index: 3
GET /api/files/:id
No request body required.

Query parameters (optional):
  include=versions    Include version history
GET /api/files/:id/download
No request body required.
DELETE /api/files/:id
No request body required.
PATCH /api/files/:id
{
  "name": "final-cut-v2.mp4",
  "path": "/videos/final-cut-v2.mp4"
}
GET /api/files/:id/versions
No request body required.

Query parameters (optional):
  limit=10    Max versions to return
  cursor=...  Pagination cursor
Workspaces
POST /api/workspaces
{
  "name": "Marketing Assets",
  "region": "eu-central-2"
}
GET /api/workspaces
No request body required.
GET /api/workspaces/:id
No request body required.
GET /api/workspaces/:id/files
No request body required.

Query parameters (optional):
  limit=50    Max files to return (max 200)
  cursor=...  Pagination cursor
  sort=name   Sort by: name, size, created_at
DELETE /api/workspaces/:id
No request body required.
Sharing
POST /api/shares
{
  "file_id": "file_8xk2m9p4",
  "expires_in": "30d",
  "password": null,
  "max_downloads": null
}
GET /api/shares
No request body required.
DELETE /api/shares/:id
No request body required.
PATCH /api/shares/:id
{
  "password": "s3cret",
  "expires_in": "60d",
  "max_downloads": 100
}
Members
POST /api/team/invite
{
  "email": "alice@example.com",
  "role": "editor",
  "workspace_id": "ws_abc123"
}
GET /api/team/members
No request body required.
PATCH /api/team/members/:uid
{
  "role": "editor"
}
DELETE /api/team/members/:uid
No request body required.
Limits

Rate limits

1,000 Requests per minute (Free)
10,000 Requests per minute (Paid)
Unlimited Upload bandwidth

Start integrating today

Full API access on every plan, including the free tier. Get your key and start building.

Free tier includes 5 GB storage and full API access.