Account API
Read and update your profile, and manage API keys, your upload token, sessions and your data.
All endpoints need authentication.
| Method | Endpoint | Description |
|---|---|---|
GET PUT | /api/profile | Read or update your profile and settings |
POST | /api/profile/avatar | Upload an avatar |
POST DELETE | /api/profile/banner | Upload or remove a profile banner |
GET POST | /api/profile/api-keys | List or create API keys |
DELETE | /api/profile/api-keys/{id} | Revoke an API key |
GET POST | /api/profile/upload-token | Read or reset your upload token |
GET DELETE | /api/profile/sessions | Recent sign-ins, or sign out everywhere |
GET PATCH DELETE | /api/notifications | Your notifications: list, mark read, clear |
GET | /api/profile/devices | Devices signed in to your account |
PATCH DELETE | /api/profile/devices/{id} | Rename a device, or sign it out |
POST GET | /api/profile/export | Request a copy of your data, and check on it |
DELETE | /api/profile | Delete your account |
Profile
GET /api/profile
PUT /api/profile
Send only the fields you want to change.
| Field | Description |
|---|---|
name | Username. At least 2 characters, no spaces. |
fullName | Display name, up to 100 characters. |
email | New email address. |
currentPassword, newPassword | Change your password. newPassword needs at least 8 characters. |
randomizeFileUrls | Use random names in file links instead of the original file name. |
enableRichEmbeds | Show a branded card in link previews. When off, previews show just the file. |
defaultFileExpiration | Default expiry for new uploads: HOUR, DAY, WEEK or MONTH. |
defaultFileExpirationAction | What expiry does: DELETE or SET_PRIVATE. |
emailNotificationsEnabled, emailPreferences | Email notifications. |
discordWebhookUrl, discordNotificationsEnabled, discordPreferences | Send notifications to a Discord webhook. The URL must be a Discord webhook URL; send "" or null to remove it. |
bio, website, twitter, github, discord | Public profile details. |
isProfilePublic, showLinkedAccounts | Who can see your public profile. |
theme, customColors | Your dashboard theme. |
Avatar and Banner
POST /api/profile/avatar and POST /api/profile/banner take multipart/form-data with a file field. DELETE /api/profile/banner removes the banner.
API Keys
You can have up to 10 API keys. Each acts as your whole account.
GET /api/profile/api-keys
POST /api/profile/api-keys
Returns 201 with the new key. The full key is only shown once, so store it straight away:
Returns 422 once you have 10 keys.
DELETE /api/profile/api-keys/{id}
Revokes the key immediately.
Upload Token
The upload token is what ShareX and other upload tools use. These two endpoints return it without the success/data wrapper.
GET /api/profile/upload-token
POST /api/profile/upload-token
Creates a new token and returns it in the same format. The old token stops working, so update your upload tools afterwards.
Sessions
GET /api/profile/sessions
Your recent sign-ins (?limit=, default 20) and details of the last one, without the success/data wrapper.
DELETE /api/profile/sessions
Signs you out on every device, including this one. API keys and the upload token keep working.
Notifications
GET /api/notifications
| Query | Description |
|---|---|
limit | Up to 50. Defaults to 20. |
cursor | nextCursor from the previous page. |
unread | true for unread only. |
category | security, account, billing, productUpdates or marketing. |
PATCH /api/notifications
Marks notifications read. Send { "ids": ["..."] }, or {} to mark all of them.
DELETE /api/notifications
Deletes notifications. Send { "ids": ["..."] }, or {} to delete all of them.
Notifications older than 90 days are removed automatically.
Devices
Each browser that signs in to your account is recorded as a device. You get an email when a new one signs in.
GET /api/profile/devices
PATCH /api/profile/devices/{id}
Rename a device: { "name": "Work laptop" }.
DELETE /api/profile/devices/{id}
Signs the device out within about 30 seconds. It has to sign in again, and counts as a new device when it does.
Your Data
POST /api/profile/export
Starts preparing a ZIP of your files and account data in the background. We email you a download link when it's ready. Starting a new export replaces your previous one, and you can start one an hour after the last. Returns 429 if one is still being prepared or was made less than an hour ago.
GET /api/profile/export
Returns your latest export:
status is pending, ready, failed or expired. export is null if you've never exported.
GET /api/profile/export/{id}
Downloads a ready export as a ZIP. It contains your files under files/, sorted by upload date, and account.json with your profile, settings, short links, domains and devices. Links last 7 days, and only work for the account that requested them.
DELETE /api/profile
Deletes your account, files, short links and everything else, permanently. Confirm it with your password:
Returns 403 if the password is missing or wrong, so a leaked API key can't delete your account on its own.
In the Browser Only
Two-factor authentication, linked GitHub and Discord accounts, and recovery codes are managed from Profile → Security and Profile → Connections. Their endpoints are meant for the dashboard and need a browser session.