25cent.cloud API Reference

Complete reference for the 25cent.cloud REST API. Build integrations, automate uploads, manage temporary infrastructure, and more — all programmatically.

Base URL https://25cent.cloud/api
Looking for a practical implementation sequence? Read the API How-To (Detailed).

Authentication

Most endpoints require a JWT token. Include it in the Authorization header:

Authorization: your_jwt_token_here

For the versioned API (v1), you can also use API keys:

X-API-Key: 25c_myapp_abc123secret456

API keys are created in your dashboard and support granular permissions: read, upload, delete, billing, admin.

Rate Limits

Auth endpoints: 5 requests / 15 minutes per IP
Upload: 10 requests / 15 minutes per user
Chat: 10 requests / minute per IP
General API: 100 requests / minute per user
API v1: 60 requests / minute per API key
Rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

Health & Status

Check system health, version, and basic statistics. No authentication required.

GET /api/health Basic health check Public
Response
{ "status": "ok", "timestamp": "2026-02-05T..." }
GET /api/version API version info Public
Response
{ "version": "1.2.9", "name": "25cent.cloud API" }
GET /api/status Detailed status with DB stats Public
Response
{ "status": "operational", "database": "connected", "stats": { "users": 142, "uploads": 580 } }

Authentication

Register, login, verify email, and manage passwords. JWT tokens are returned on login.

POST /api/auth/register Create account Public
Request Body
FieldTypeDescription
emailstringUser email address required
passwordstringMin 8 characters required
usernamestringDisplay name optional
Response
{ "success": true, "message": "Registration successful. Check email to verify." }
POST /api/auth/login Login, returns JWT Public
Request Body
FieldTypeDescription
emailstringUser email required
passwordstringUser password required
Response
{ "message": "Login successful", "token": "eyJhbGciOi...", "userId": 42, "email": "[email protected]", "username": "john", "quarters": 10 }
GET /api/auth/me Get current user profile JWT
Response
{ "id": 42, "email": "[email protected]", "username": "john", "quarters": 10, "tier": "user", "email_verified": true }
POST /api/auth/request-reset Send 6-digit reset code Public
Request Body
{ "email": "[email protected]" }
POST /api/auth/reset-password Reset password with code Public
Request Body
{ "email": "[email protected]", "code": "123456", "password": "newPass123" }

Uploads

Upload files with optional premium features. Manage, rename, extend, and archive your uploads.

POST /api/upload Upload file(s) JWT
Content Type: multipart/form-data
FieldTypeDescription
files[]fileOne or more files required
uploadTypestringsingle | multi optional
passwordstringPassword protect the upload 1Q
enableGeoCapturebooleanTrack visitor geo data free
enableGeoBlockingbooleanBlock specific countries 1Q
blockedCountriesstringComma-separated country codes
enableHiddenEmailbooleanSend link via hidden email 1Q
enableScreenWipebooleanAuto-close after N seconds 1Q
screenWipeSecondsnumberSeconds before screen wipe
enableCustomSlugbooleanCustom vanity URL 1Q
customSlugstringYour custom slug (3-50 chars)
enableSchedulingbooleanSchedule activation time 1Q
scheduledForISO8601When the link becomes active
durationHoursnumberHow long the link lasts (default: 24h)
maxViewsnumberView limit (null = unlimited)
GET /api/user/uploads List your uploads JWT
Query Parameters
ParamTypeDescription
pagenumberPage number (default: 1)
limitnumberItems per page (default: 20)
POST /api/uploads/:id/extend Extend upload duration JWT
Request Body
{ "type": "hours" } // or "clicks" — costs 1 quarter
DELETE /api/upload/:id Delete an upload JWT
Response
{ "message": "Upload deleted successfully" }
PUT /api/upload/:id/rename Rename an upload JWT
Request Body
{ "name": "My Project Files" }

Downloads & File Serving

Retrieve and download uploaded files. Supports custom slugs, password-protected downloads, and multi-file views.

GET /api/download/:id Download a file Public
Notes

Checks expiration, view limits, password protection, and geo-blocking. Increments view count. Returns the file as attachment.

GET /s/:slug Vanity slug redirect Public
Notes

Redirects custom vanity URL to the download/view page. e.g. 25cent.cloud/s/my-cool-link

GET /api/slug/check/:slug Check slug availability Public
Response
{ "available": true }

Analytics

Unlock and view detailed analytics for your uploads — geo data, access logs, and referrer intelligence.

GET /api/analytics Dashboard overview JWT
Response

Returns access logs and geo data for all user uploads that have analytics unlocked.

POST /api/unlock-link-analytics Unlock per-link analytics JWT
Request Body
{ "uploadId": "uuid-here" } // costs 1 quarter

Quarters & Payments

Purchase quarters via Stripe, check balance, and view transaction history.

GET /api/quarters/balance Get quarter balance JWT
Response
{ "quarters": 10, "dollarValue": "$2.50" }
POST /api/payment/create-checkout-session Start Stripe checkout JWT
Request Body
{ "quartersAmount": 20, "planName": "20-pack" }
Response
{ "url": "https://checkout.stripe.com/pay/..." }
GET /api/quarters/transactions Transaction history JWT
Query Parameters
ParamTypeDescription
pagenumberPage number
limitnumberItems per page

Web Tunnels

Expose your local development server to the internet. Websocket-based tunneling with optional password protection.

GET /api/tunnels List active tunnels JWT
Response
[{ "slug": "abc123", "port": 3000, "created": "..." }]
DELETE /api/tunnels/:slug Close a tunnel JWT
Notes

Immediately disconnects the tunnel. Cost: 1 quarter per hour of operation.

Temporary Email

Create disposable email inboxes with real-time delivery. Supports forwarding, webhooks, and custom prefixes.

POST /api/temp-email/inboxes Create inbox JWT
Request Body
FieldTypeDescription
prefixstringEmail prefix (e.g. "test" → [email protected]) optional
displayNamestringFriendly name for the inbox optional
forwardTostringForward emails to this address optional
webhookUrlstringReceive email via webhook optional
durationHoursnumberInbox lifetime (default: 24h, max: 168h) optional
Cost

1 quarter per inbox

GET /api/temp-email/inboxes List inboxes JWT
Query Parameters
?status=active&limit=20&offset=0
GET /api/temp-email/inboxes/:id/messages List messages JWT
Query Parameters
?limit=50&offset=0&unreadOnly=true
POST /api/temp-email/inboxes/:id/extend Extend inbox 24h JWT
Cost

1 quarter per 24h extension

Temporary Database

Provision PostgreSQL or Redis instances on-demand. Full credentials, pre-loaded templates, and auto-cleanup.

POST /api/temp-database Provision database JWT
Request Body
FieldTypeDescription
dbTypestringpostgresql | redis required
dbNamestringDatabase name optional
durationHoursnumberLifetime (default: 24h) optional
storageLimitMbnumberStorage cap in MB optional
Cost

2 quarters for PostgreSQL, 1 quarter for Redis

GET /api/temp-database/:id/connect Get connection credentials JWT
Response
{ "host": "db.25cent.cloud", "port": 5432, "database": "tmp_abc123", "username": "tmp_user_xyz", "password": "auto_generated_pass", "connectionString": "postgresql://..." }

Secure Meetings

End-to-end encrypted video rooms with optional recording, screen sharing, waiting rooms, and chat.

POST /api/meetings Create meeting JWT
Request Body
FieldTypeDescription
namestringMeeting name required
maxParticipantsnumberMax attendees (default: 10)
passwordstringOptional meeting password
durationHoursnumberMeeting duration (default: 2h)
featuresobject{ recording, screenShare, waitingRoom, chat }
Cost

1 quarter per meeting + 2 quarters for recording

POST /api/meetings/join/:code Join by room code Public
Request Body
{ "displayName": "John", "password": "optional" }

Remote Support

Browser-based remote assistance with screen sharing, chat, and file transfer.

POST /api/remote-support/sessions Create session JWT
Request Body
FieldTypeDescription
namestringSession name required
sessionTypestringsupport | meeting | presentation
clientNamestringCustomer's name
clientEmailstringCustomer's email — invite with download link is sent here
clientOsstringCustomer's OS: windows | macos | linux
durationHoursnumberSession duration
Cost

2 quarters per session

API Keys

Create programmatic access keys with granular permissions for the versioned API (v1).

POST /api/keys Create API key JWT
Request Body
FieldTypeDescription
namestringKey name (e.g. "My App") required
permissionsarray["read", "upload", "delete", "billing"] required
expiresInDaysnumberDays until expiry (null = never) optional
Response
// ⚠️ The full key is only shown ONCE { "key": "25c_myapp_abc123secret456...", "keyId": "uuid" }
GET /api/keys List your API keys JWT
Notes

Returns key metadata (name, permissions, created, last used). Maximum 5 keys per user.

API v1 (Versioned)

Stable, versioned API for programmatic access. Authenticate with API keys or JWT tokens.

GET /api/v1/account Account info API Key
Response
{ "id": 42, "email": "[email protected]", "quarters": 10, "tier": "beta_user", "api_keys_count": 2 }
GET /api/v1/links List uploads API Key
Query Parameters
?page=1&limit=20&status=active
GET /api/v1/usage/stats Aggregate usage stats API Key
Query Parameters
?days=30 // stats for last N days
GET /api/v1/pricing Current pricing table Public
Response

Full pricing table with all service costs, volume discounts, and promo info.

Webhooks

Receive real-time notifications when events occur. Events: balance.low, balance.depleted, usage.charged.

POST /api/v1/webhooks Create webhook JWT
Request Body
{ "url": "https://your-app.com/webhook", "events": ["balance.low", "usage.charged"] }
Notes

Max 5 webhooks per user. Payloads are signed with HMAC-SHA256. Rotate secrets with the dedicated endpoint.

Notifications

Real-time notifications via SSE stream, with preference management per category.

GET /api/notifications/stream SSE real-time stream JWT
Notes

Server-Sent Events endpoint. Connect with EventSource and listen for notification events in real-time.

GET /api/notifications/unread-count Unread count JWT
Response
{ "unreadCount": 3 }

Billing

Purchase history, invoices, refund requests, and promo code redemption.

GET /api/billing/summary Billing summary JWT
Response

Returns current balance, total spend, recent purchases, and active subscriptions.

POST /api/billing/promo Redeem promo code JWT
Request Body
{ "code": "LAUNCH2026" }

User Profile

Update profile, change password, and export your data (GDPR compliance).

PUT /api/user/profile Update profile JWT
Request Body
{ "username": "new_name", "emailNotifications": true }
GET /api/account/export Export all data (GDPR) JWT
Response

Returns a complete JSON export of all your account data, uploads, transactions, and analytics.

Private Notes

Create self-destructing encrypted notes viewable only once. Includes optional screen wipe timer.

POST /api/private-note Create private note JWT
Request Body
FieldTypeDescription
contentstringNote content (max 10,000 chars) required
wipeSecondsnumberAuto-wipe timer in seconds optional
Cost

1 quarter per note

GET /api/private-note/:noteId View & consume note Public
Notes

⚠️ This is a one-time view endpoint. After reading, the note is permanently destroyed.

Guest List

Create email-based access control lists for your uploads. Restrict downloads to verified guests only.

POST /api/guest-list/create Create guest list JWT
Request Body
{ "name": "Beta Testers", "passcode": "secret123", "emails": ["[email protected]", "[email protected]"] }

Site Configuration

Public site data — banner messages, news, live statistics, and pricing.

GET /api/site/config Public site config Public
Response

Returns current banner, news items, system status, and feature flags.

GET /api/pricing Complete pricing table Public
Response

Returns the full pricing matrix including all services, volume discounts, and active promotions.

Support & AI Chat

AI-powered support chat (DeepSeek) with human escalation. Features context-aware responses and diagnostic lookups.

POST /api/support/chat Chat with Cloud AI Public
Request Body
FieldTypeDescription
messagestringUser question required
sessionIdstringExisting session ID optional
visitorIdstringVisitor tracking ID optional
emailstringUser email for context optional
POST /api/support/escalate Escalate to human Public
Request Body
{ "sessionId": "session_abc", "email": "[email protected]" }

25cent.cloud API v3.0 · 234 endpoints · View all features