API reference
The full reference ships with the project in docs/API.md and is summarized here. All endpoints live under https://clipo.do/api/v1 and return JSON.
Authentication
Create a key in Settings → API keys, then send it with every request:
Authorization: Bearer zk_live_xxxxxxxxxxxxxxxxUpload a file
curl -H "Authorization: Bearer $KEY" -F "[email protected]" -F "encrypt=1" https://clipo.do/api/v1/filesResponse:
{
"code": "aB3dE9", "name": "photo.jpg", "size": 204800, "kind": "image",
"url": "https://clipo.do/aB3dE9", "raw_url": "https://clipo.do/aB3dE9.jpg", "thumb_url": "https://clipo.do/t/aB3dE9.jpg"
}Optional fields: folder_id, encrypt (1/0), password, expires_in (seconds), name.
Large files (chunked)
POST /files/initwith{name, size, mime}→{upload_id, chunk_size, chunks}PUT /files/{upload_id}/chunks/{index}with the raw bytes of each chunkPOST /files/{upload_id}/complete→ the file object
Other endpoints
| Method & path | Purpose |
|---|---|
GET /me | Account, plan and usage |
GET /files?page=1&q=&kind=&folder_id= | List files |
PATCH /files/{code} | Rename, move, password, expiry |
DELETE /files/{code} | Delete |
GET/POST /folders, PATCH/DELETE /folders/{id} | Folders |
GET/POST /links, DELETE /links/{code} | Short links ({url, title, custom_code}) |
GET/POST /pastes, GET/DELETE /pastes/{code} | Pastes ({content, title, language}) |
GET/PUT /embed | Embed settings |
GET /server | Public server info (apps use this to validate the URL) |
Errors
{ "error": { "code": "quota_exceeded", "message": "You have run out of storage." } }Rate limit: 120 requests per minute per key.