All API requests require authentication. You need to be logged in to use the API endpoints.
API keys are persistent and don't expire unless revoked by you.
Manage your API keys here - Generate, view, regenerate, or revoke keys as needed.
Include your API key in the X-API-Key header for all requests.
/api/upload
Upload a single file to your website directory.
file (file, required) - The file to uploadfolder (string, optional) - Target folder pathoverwrite (boolean, optional) - Whether to overwrite existing filescurl -X POST "https://reocities.xyz/api/upload" \ -H "X-API-Key: your-api-key" \ -F "file=@/path/to/your/file.html" \ -F "folder=subfolder" \ -F "overwrite=true"
{
"success": true,
"message": "File uploaded successfully",
"filename": "file.html",
"path": "subfolder/file.html",
"size": 1024
}
/api/upload/bulk
Upload multiple files at once (max 10 files per request).
files[] (file array, required) - Array of files to uploadfolder (string, optional) - Target folder pathoverwrite (boolean, optional) - Whether to overwrite existing filescurl -X POST "https://reocities.xyz/api/upload/bulk" \ -H "X-API-Key: your-api-key" \ -F "files[]=@/path/to/file1.html" \ -F "files[]=@/path/to/file2.css" \ -F "files[]=@/path/to/file3.js" \ -F "folder=assets"
{
"success": true,
"message": "3 files uploaded successfully",
"uploaded": [
{
"filename": "file1.html",
"path": "assets/file1.html",
"size": 1024,
"status": "success"
},
{
"filename": "file2.css",
"path": "assets/file2.css",
"size": 2048,
"status": "success"
},
{
"filename": "file3.js",
"path": "assets/file3.js",
"size": 512,
"status": "success"
}
],
"failed": [],
"total_size": 3584
}
/api/files
List all files in your website directory.
folder (string, optional) - Specific folder to listrecursive (boolean, optional) - Include subdirectories/api/files
Delete a file or folder.
path (string, required) - Path to file or folder to delete/api/folders
Create a new folder.
name (string, required) - Folder nameparent (string, optional) - Parent folder pathInstant per-site storage for counters, leaderboards, and saved JSON. Get your tokens at /kv. The read token is public (get, list, incr); the write token is secret (set, delete).
/api/kvcurl "https://www.reocities.xyz/api/kv?action=incr&key=hits&token=READ_TOKEN" curl "https://www.reocities.xyz/api/kv?action=set&key=msg&value=hi&token=WRITE_TOKEN"
Browser library: <script src="/static/js/reokv.js"></script> then ReoKV(token) with methods get, set, setJSON, getJSON, incr, del, list. Limits: 64KB per value, 2000 keys, 120 ops per minute.
Invalid parameters or malformed request
Missing or invalid API key
Access denied or rate limit exceeded
File size or request size exceeds limits
Rate limit exceeded