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.
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
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.
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
} 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