Help center

Guides for every part of Clipo.

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_xxxxxxxxxxxxxxxx

Upload a file

curl -H "Authorization: Bearer $KEY" -F "[email protected]" -F "encrypt=1" https://clipo.do/api/v1/files

Response:

{
  "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)

  1. POST /files/init with {name, size, mime} → {upload_id, chunk_size, chunks}
  2. PUT /files/{upload_id}/chunks/{index} with the raw bytes of each chunk
  3. POST /files/{upload_id}/complete → the file object

Other endpoints

Method & pathPurpose
GET /meAccount, 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 /embedEmbed settings
GET /serverPublic 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.