OVERVIEW

Upload, download, manage, and delete files programmatically over HTTPS. All endpoints use the base URL shown below.

Guest uploads are temporary and expire automatically. Authenticated users can upload to their cloud drive with optional permanent retention.

BASE URL
https://dev.one.gy
MAX UPLOAD SIZE
10 GB
DEFAULT EXPIRY
1 DAY
ENCRYPTION
FERNET (AT REST)

UPLOAD

POST
/upload

Upload one or more files via multipart form data. Returns a management URL and a download URL. Multiple files are automatically bundled into a ZIP archive server-side.

To password-protect an upload, first upload the file, then set a password via the MANAGE endpoint using the management token from the upload response.

EXAMPLES

PARAMETERS

NAME TYPE DESCRIPTION
files file One or more files (multipart/form-data). Use file for single E2E uploads.
short_url string "true" to generate a short 6-character URL code
e2e string "true" for client-side encrypted uploads (see E2E section)
e2e_salt string Base64 salt (required if e2e=true)
e2e_iv string Base64 IV (required if e2e=true)

RESPONSE

DOWNLOAD

GET
/f/{file_id}/{filename}

Download a file by its UUID. Including the filename in the URL ensures wget and curl -O save with the correct name. Password-protected files require the pw query parameter.

EXAMPLES

PARAMETERS

NAME TYPE DESCRIPTION
file_id path UUID of the file
filename path Original filename (optional, ensures correct save name)
pw query Password for protected files

RESPONSE

MANAGE FILE

GET
/manage/{token}

View file management page. The management token is returned in the upload response under redirect. Requires session ownership.

POST
/manage/{token}

Update file settings programmatically. Set the X-Requested-With: XMLHttpRequest header to receive a JSON response instead of a redirect.

EXAMPLES

PARAMETERS

NAME TYPE DESCRIPTION
public string "on" for public access (clears password)
password string Set file password (only when not public)
expires string 30m, 6h, 1d, 3d, 7d, or never (logged-in only)
max_downloads integer Max total downloads. File is deleted when limit is reached.

RESPONSE

DELETE FILE

POST
/delete/{token}

Permanently delete a file from the server. Requires the management token and session ownership. The token is the last segment of the management URL returned during upload.

EXAMPLES

RESPONSE

E2E ENCRYPTION

End-to-end encrypted files are encrypted on the client before upload. The server never sees the plaintext data or the encryption key. E2E files use AES-256-GCM with PBKDF2 key derivation (100,000 iterations).

The flow is: derive a key from a passphrase using PBKDF2 with a random salt, encrypt the file with AES-256-GCM using a random IV, then upload the ciphertext along with the salt and IV as form parameters.

UPLOAD WITH E2E ENCRYPTION

POST
/upload

DOWNLOAD AND DECRYPT E2E FILE

GET
/f/{file_id}/encrypted

Download raw encrypted data for E2E files. The response includes X-E2E-Salt and X-E2E-IV headers containing the Base64-encoded salt and IV needed for decryption.

E2E PARAMETERS

NAME TYPE DESCRIPTION
e2e string "true" to mark upload as end-to-end encrypted
e2e_salt string Comma-separated decimal byte values of 16-byte salt used for PBKDF2 key derivation (e.g. "142,55,201,44,..."). Base64-encoded strings are also accepted.
e2e_iv string Comma-separated decimal byte values of 12-byte IV used for AES-256-GCM encryption (e.g. "10,233,78,..."). Base64-encoded strings are also accepted.

RESPONSE HEADERS (ENCRYPTED DOWNLOAD)

HEADER TYPE DESCRIPTION
X-E2E-Salt string Comma-separated decimal byte values of salt for PBKDF2 key derivation
X-E2E-IV string Comma-separated decimal byte values of IV for AES-256-GCM decryption

ERROR CODES

All error responses return an appropriate HTTP status code. JSON endpoints return an error field in the response body.

CODE STATUS DESCRIPTION
400 Bad Request No files provided or invalid request format
403 Forbidden Session does not own this file or insufficient permissions
404 Not Found File not found, expired, or invalid token
410 Gone Download limit reached, file has been removed
413 Payload Too Large File exceeds the maximum upload size (10 GB)
429 Too Many Requests Rate limit exceeded, try again later
507 Insufficient Storage Server disk is full or user storage quota exceeded

EXAMPLE ERROR RESPONSE

RATE LIMITS

API endpoints are rate-limited to prevent abuse. Authenticated users have higher limits than guests. When a rate limit is exceeded, the server returns 429 Too Many Requests.

ENDPOINT GUESTS AUTHENTICATED
/upload Limited Higher limit
/f/{id} Limited Higher limit
/manage/{token} Limited Higher limit
/delete/{token} Limited Higher limit