API Reference
The Loqa API follows industry-standard conventions. If you've built bots or integrations before, you'll feel right at home.
Base URL: https://api.loqa.chat
Authentication
Register accounts, log in, and generate bot tokens. All auth endpoints return a JWT + user object.
Base: /api/auth
⏱ Rate limit: 3 req/60s (register) · 20 req/60s (other auth) · 15 req/60s per IP
🔒 Registration is gated by server-configured modes (open, invite-only, closed, or captcha). Email verification is mandatory when an email provider is configured. Emails are encrypted at rest with AES-256-GCM — never stored in plaintext. Passwords are Argon2-hashed. There is no public endpoint to skip email verification.
/register Create a new user account /login Log in with email and password /bot Generate a long-lived bot token (365 days) /verify-email Verify email with a 6-digit code /resend-verification Resend verification email /inbound-email Webhook for inbound email verification Users
Manage user profiles, settings, DMs, presence, encryption keys, two-factor auth, devices, and guild membership.
Base: /api/users
⏱ Rate limit: 300 req/10s (general) · 40 req/5s (DM create) · 20 req/60s (presence)
/me Get your own profile 🔒 /me Update your profile (display name, avatar, bio, banner) 🔒 /me/unreads Get unread message counts across all channels 🔒 /me/password Change your password 🔒 /me/totp Set up TOTP two-factor authentication 🔒 /me/totp/verify Verify a TOTP code 🔒 /me/totp/disable Disable TOTP two-factor authentication 🔒 /me/channels List all DM and Group DM channels 🔒 /me/channels Create a Group DM 🔒 /me/settings Get user settings 🔒 /me/settings Update user settings 🔒 /me/guilds List servers you are a member of 🔒 /me/guilds/:guild_id Leave a server 🔒 /me/account-data Delete all user data (messages, files, settings) 🔒 /me/data-export Export all account data (GDPR) 🔒 /me/presence Update presence status and broadcast 🔒 /me/heartbeat Presence heartbeat to maintain online status 🔒 /me/keys Upload E2EE public key 🔒 /me/keys/prekeys Upload E2EE pre-keys 🔒 /me/keys/prekey-count Get remaining pre-key count 🔒 /me/devices List registered devices 🔒 /me/devices/:device_id Remove a registered device 🔒 /me/premium Get premium subscription status 🔒 /me/premium/subscribe Subscribe to premium 🔒 /me/premium/cancel Cancel premium subscription 🔒 /me/connections List linked connections 🔒 /me/applications/:app_id/role-connection Get application role connection 🔒 /me/applications/:app_id/role-connection Update application role connection 🔒 /me/avatar Upload avatar image 🔒 /me/banner Upload banner image 🔒 /search Search users by username or display name 🔒 /lookup Lookup user by exact username /batch Batch get multiple users by IDs 🔒 /:user_id Get another user's public profile /:user_id/dm Create or get a DM channel with a user 🔒 /:user_id/keys/claim Claim a user's E2EE pre-keys 🔒 Servers
Full server lifecycle — create, edit, delete, manage channels, members, roles, bans, emojis, events, audit logs, stickers, templates, soundboard, onboarding, and more.
Base: /api/servers
⏱ Rate limit: 100 req/10s (server) · 120 req/10s (members) · 80 req/10s (roles) · 40 req/10s (bans, invites, audit-logs)
/ Create a new server 🔒 /import Import a server from template 🔒 /:server_id Get server details /:server_id Edit server (name, icon, banner, description, etc.) 🔒 /:server_id Delete a server (owner only) 🔒 /:server_id/channels Create a channel in a server 🔒 /:server_id/channels List all channels in a server /:server_id/channels Reorder channels 🔒 /:server_id/members List all members /:server_id/members/search Search members by name 🔒 /:server_id/members/:user_id Get a single member /:server_id/members/:user_id Edit a member (nickname, roles, timeout) 🔒 /:server_id/members/:user_id Kick a member 🔒 /:server_id/members/@me Modify your own member profile 🔒 /:server_id/members/@me/nick Change own nickname 🔒 /:server_id/members/:user_id/roles/:role_id Add a role to a member 🔒 /:server_id/members/:user_id/roles/:role_id Remove a role from a member 🔒 /:server_id/prune Get prune count (inactive members) 🔒 /:server_id/prune Prune inactive members 🔒 /:server_id/online Get online member IDs /:server_id/leave Leave a server 🔒 /:server_id/join Join a public server (no invite needed) 🔒 /:server_id/invites Create an invite link 🔒 /:server_id/invites List all invites 🔒 /:server_id/invites/:invite_code/uses Get invite usage history 🔒 /join/:invite_code Join a server via invite 🔒 /:server_id/boosts List server boosts 🔒 /:server_id/boosts Boost a server 🔒 /:server_id/boosts Remove boost from server 🔒 /:server_id/bans List all bans 🔒 /:server_id/bans/:user_id Get a single ban 🔒 /:server_id/bans/:user_id Ban a member 🔒 /:server_id/bans/:user_id Unban a user 🔒 /:server_id/bulk-ban Bulk ban multiple members 🔒 /:server_id/roles List all roles /:server_id/roles Create a role 🔒 /:server_id/roles Reorder roles 🔒 /:server_id/roles/:role_id Edit a role 🔒 /:server_id/roles/:role_id Delete a role 🔒 /:server_id/emojis List custom emojis /:server_id/emojis Upload a custom emoji 🔒 /:server_id/emojis/:emoji_id Edit a custom emoji 🔒 /:server_id/emojis/:emoji_id Delete a custom emoji 🔒 /:server_id/audit-logs Get audit log entries 🔒 /:server_id/scheduled-events List scheduled events /:server_id/scheduled-events Create a scheduled event 🔒 /:server_id/scheduled-events/:event_id Edit a scheduled event 🔒 /:server_id/scheduled-events/:event_id Delete a scheduled event 🔒 /:server_id/scheduled-events/:event_id/users List event RSVPs /:server_id/scheduled-events/:event_id/users RSVP to an event 🔒 /:server_id/scheduled-events/:event_id/users Remove RSVP 🔒 /:server_id/auto-moderation/rules List AutoMod rules 🔒 /:server_id/auto-moderation/rules Create an AutoMod rule 🔒 /:server_id/auto-moderation/rules/:rule_id Edit an AutoMod rule 🔒 /:server_id/auto-moderation/rules/:rule_id Delete an AutoMod rule 🔒 /:server_id/stickers List server stickers /:server_id/stickers Create a sticker 🔒 /:server_id/stickers/:sticker_id Edit a sticker 🔒 /:server_id/stickers/:sticker_id Delete a sticker 🔒 /:server_id/stickers/import Import a messenger app sticker pack 🔒 /:server_id/emoji-packs List imported emoji packs 🔒 /:server_id/emoji-packs/import Import a messenger app emoji pack 🔒 /:server_id/emoji-packs/import-url Import emoji pack from URL 🔒 /:server_id/emoji-packs/import-discord Import emojis from Discord server 🔒 /:server_id/emoji-packs/:pack_id Get emoji pack items 🔒 /:server_id/emoji-packs/:pack_id Remove an emoji pack from server 🔒 /:server_id/templates List server templates /:server_id/templates Create a template from server 🔒 /:server_id/templates/:template_code Edit a template 🔒 /:server_id/templates/:template_code Sync template with server 🔒 /:server_id/templates/:template_code Delete a template 🔒 /:server_id/onboarding Get onboarding config /:server_id/onboarding Update onboarding 🔒 /:server_id/soundboard-sounds List soundboard sounds /:server_id/soundboard-sounds Upload a soundboard sound 🔒 /:server_id/soundboard-sounds/:sound_id Edit a soundboard sound 🔒 /:server_id/soundboard-sounds/:sound_id Delete a soundboard sound 🔒 /:server_id/voice-states Get all voice states /:server_id/vanity-url Get vanity URL 🔒 /:server_id/vanity-url Set vanity URL 🔒 /:server_id/widget.json Get server widget JSON /:server_id/widget Get widget settings 🔒 /:server_id/widget Update widget settings 🔒 /:server_id/welcome-screen Get welcome screen config /:server_id/welcome-screen Update welcome screen 🔒 /:server_id/member-verification Get verification gate /:server_id/member-verification Update verification gate 🔒 /:server_id/member-verification/accept Accept verification 🔒 /:server_id/threads/active List active threads /:server_id/preview Get guild preview /:server_id/webhooks List all server webhooks 🔒 /:server_id/mfa Set MFA level requirement 🔒 /:server_id/mutes List your channel mutes in this server 🔒 /:server_id/personas List all personas in server 🔒 /:server_id/personas Create a persona 🔒 /:server_id/personas/@me List your own personas in server 🔒 /:server_id/personas/:persona_id Get a persona 🔒 /:server_id/personas/:persona_id Edit a persona 🔒 /:server_id/personas/:persona_id Delete a persona 🔒 Channels
Channel operations — messages, reactions, threads, pins, invites, webhooks, voice, file uploads, polls, forum posts, permissions, and search.
Base: /api/channels
⏱ Rate limit: 200 req/5s (messages) · 120 req/10s (channel ops) · 30 req/5s (typing) · 1 req/250ms (reactions)
/:channel_id Get channel details /:channel_id Edit channel (name, topic, NSFW, slowmode, etc.) 🔒 /:channel_id Delete a channel 🔒 /:channel_id/messages Get messages (supports before, after, limit) /:channel_id/messages/:message_id Get a single message /:channel_id/messages Send a message 🔒 /:channel_id/messages/:message_id Edit a message 🔒 /:channel_id/messages/:message_id Delete a message 🔒 /:channel_id/messages/bulk-delete Bulk delete messages (up to 100) 🔒 /:channel_id/messages/search Search messages (full-text) 🔒 /:channel_id/messages/:message_id/ack Acknowledge (mark as read) 🔒 /:channel_id/messages/translate Batch translate visible messages 🔒 /:channel_id/messages/:message_id/transcribe On-demand voice note transcription 🔒 /:channel_id/messages/:message_id/forward Forward a message to another channel 🔒 /:channel_id/messages/:message_id/reactions/:emoji Add a reaction 🔒 /:channel_id/messages/:message_id/reactions/:emoji Remove a reaction 🔒 /:channel_id/messages/:message_id/reactions/:emoji Get users who reacted /:channel_id/messages/:message_id/reactions Delete all reactions 🔒 /:channel_id/messages/:message_id/reactions/:emoji/all Delete all reactions for an emoji 🔒 /:channel_id/threads Create a thread 🔒 /:channel_id/threads/archived/public Get archived public threads /:channel_id/threads/archived/private Get archived private threads 🔒 /:channel_id/thread-members/@me Join a thread 🔒 /:channel_id/thread-members/@me Leave a thread 🔒 /:channel_id/thread-members/:user_id Add a thread member 🔒 /:channel_id/thread-members/:user_id Remove a thread member 🔒 /:channel_id/thread-members List thread members 🔒 /:channel_id/pins Get pinned messages /:channel_id/pins/:message_id Pin a message 🔒 /:channel_id/pins/:message_id Unpin a message 🔒 /:channel_id/invites List channel invites 🔒 /:channel_id/invites Create a channel invite 🔒 /:channel_id/invites/:invite_code Delete an invite 🔒 /:channel_id/webhooks List channel webhooks 🔒 /:channel_id/webhooks Create a webhook 🔒 /:channel_id/upload Upload a file (multipart) 🔒 /:channel_id/voice/connect Get a LiveKit token for voice 🔒 /:channel_id/voice/state Update voice state (mute, deafen) 🔒 /:channel_id/voice/disconnect Disconnect from voice channel 🔒 /:channel_id/voice/mute-all Server mute all voice participants 🔒 /:channel_id/voice/mute-user Server mute a specific user in voice 🔒 /:channel_id/messages/:message_id/poll/vote Vote on a poll 🔒 /:channel_id/messages/:message_id/poll/end End a poll 🔒 /:channel_id/messages/:message_id/poll/extend Extend poll duration 🔒 /:channel_id/messages/:message_id/poll/:answer_id/voters Get voters for a poll answer /:channel_id/messages/:message_id/checklist/toggle Toggle a checklist item 🔒 /:channel_id/messages/:message_id/interactions Submit a component interaction 🔒 /:channel_id/forum-posts Create a forum post 🔒 /:channel_id/forum-posts List forum posts /:channel_id/tags Update forum tags 🔒 /:channel_id/typing Trigger typing indicator 🔒 /:channel_id/permissions List permission overwrites 🔒 /:channel_id/permissions/:overwrite_id Set permission overwrite 🔒 /:channel_id/permissions/:overwrite_id Delete permission overwrite 🔒 /:channel_id/recipients/:user_id Add group DM recipient 🔒 /:channel_id/recipients/:user_id Remove group DM recipient 🔒 /:channel_id/messages/:message_id/crosspost Crosspost an announcement message 🔒 /:channel_id/followers Follow an announcement channel 🔒 /:channel_id/thread-counts Get thread reply counts 🔒 /:channel_id/members List channel members 🔒 /:channel_id/roll Roll dice (server-side, tamper-proof) 🔒 /:channel_id/coinflip Coin flip (server-side, tamper-proof) 🔒 /:channel_id/mute Mute a channel (self-mute) 🔒 /:channel_id/mute Unmute a channel 🔒 Webhooks
Execute, manage, and configure incoming webhooks. Supports both authenticated and token-based access for bot integrations.
Base: /api/webhooks
⏱ Rate limit: 60 req/5s
/:webhook_id/:token Execute a webhook (no auth required) /:webhook_id Get webhook details 🔒 /:webhook_id Edit a webhook (name, avatar, channel) 🔒 /:webhook_id Delete a webhook 🔒 /:webhook_id/:token Get webhook details (token auth) /:webhook_id/:token Edit a webhook (token auth) /:webhook_id/:token Delete a webhook (token auth) /:webhook_id/:token/messages Create followup message /:webhook_id/:token/messages/:message_id Edit followup message /:webhook_id/:token/messages/:message_id Delete followup message Friends
Friend requests, acceptance, removal, and blocking.
Base: /api/friends
⏱ Rate limit: 80 req/10s
/ List all friendships 🔒 /:user_id Send a friend request 🔒 /:user_id/accept Accept a pending friend request 🔒 /:user_id Remove or reject a friendship 🔒 /:user_id/block Block a user 🔒 OAuth2
Full OAuth2 authorization code flow for third-party app integrations.
Base: /api/oauth2
⏱ Rate limit: 40 req/10s
/applications Register a new OAuth2 application 🔒 /applications List your applications 🔒 /applications/:app_id Get application details 🔒 /applications/:app_id Edit an application 🔒 /applications/:app_id Delete an application 🔒 /applications/:app_id/bot Create a bot user for an application 🔒 /authorize Show authorization consent screen 🔒 /authorize Generate an authorization code 🔒 /token Exchange auth code for access token /token/revoke Revoke a token /@me Get current application info from Bearer token 🔒 Application Commands
Register and manage slash commands, guild-scoped commands, permissions, and role connection metadata.
Base: /api/applications
/:app_id/commands List global commands 🔒 /:app_id/commands Create a global command 🔒 /:app_id/commands Bulk overwrite all global commands 🔒 /:app_id/commands/:command_id Delete a global command 🔒 /:app_id/guilds/:guild_id/commands List guild-scoped commands 🔒 /:app_id/guilds/:guild_id/commands Create a guild-scoped command 🔒 /:app_id/guilds/:guild_id/commands/:cmd_id/permissions Get command permissions 🔒 /:app_id/guilds/:guild_id/commands/:cmd_id/permissions Set command permissions 🔒 /:app_id/role-connections/metadata Get role connection metadata 🔒 /:app_id/role-connections/metadata Update role connection metadata 🔒 Interactions
Interaction callback endpoint for responding to slash commands, buttons, modals, and select menus.
Base: /api/interactions
/:interaction_id/:token/callback Submit an interaction response (pong, message, deferred, update) Stage Instances
Manage Stage channel instances for live audio events.
Base: /api/stage-instances
/:channel_id Get stage instance for a channel /:channel_id Create a stage instance 🔒 /:channel_id Edit a stage instance 🔒 /:channel_id Delete a stage instance 🔒 Discovery
Browse, search, list, and unlist servers in the public directory.
Base: /api/discovery
⏱ Rate limit: 40 req/5s
/servers Search/browse listed servers (search, category, sort, limit, offset) /servers List your server for discovery (owner only) 🔒 /servers/:server_id Unlist your server 🔒 /servers/:server_id/tags Update listing tags 🔒 /categories List available discovery categories /tags List all unique discovery tags Platform
Platform-wide utilities — server ordering, emoji/sticker search, server verification, and server analytics.
Base: /api/platform
/preferences/server_order Get your server sidebar order 🔒 /preferences/server_order Set your server sidebar order 🔒 /emojis/search Search emojis across all servers /stickers/search Search stickers across all servers /servers/:server_id/stickers List stickers for a server /servers/:server_id/verification Get server verification status /servers/:server_id/verification Set server verification (admin) 🔒 /servers/:server_id/analytics Get server analytics summary 🔒 Voice Regions
List available voice server regions for optimal voice channel routing.
Base: /api/voice
/regions List available voice regions Invites
Resolve and revoke invite links. These top-level routes operate on invite codes directly without needing a server context.
Base: /api/invites
/:code Resolve invite info (server name, icon, member count) /:code Revoke an invite by code 🔒 Transcription
Voice note transcription powered by Faster-Whisper (OpenAI-compatible). Accepts audio files and returns transcribed text.
Base: /api/transcribe
/ Transcribe an audio file (multipart upload) 🔒 Translation
Real-time text translation powered by self-hosted TranslateGemma. Supports auto-detection of source language.
Base: /api/translate
/ Translate text to a target language 🔒 Emoji Packs
Lookup, browse, and discover messenger-app-compatible emoji packs available for import.
Base: /api/emoji-packs
/lookup Lookup an emoji pack by name /browse Browse all available emoji packs /:pack_id Get emoji pack items directly Files
Serve uploaded files (images, voice notes, attachments) by file ID.
Base: /api/files
/:file_id Serve an uploaded file Integrations
Manage third-party integrations (bots, Twitch, etc.) for a server.
Base: /api/guilds
/:server_id/integrations List guild integrations 🔒 /:server_id/integrations/:integration_id Remove an integration 🔒 Entitlements
Manage premium entitlements and SKUs for monetized applications.
Base: /api/applications
/:app_id/entitlements List entitlements (filter by user, SKU) 🔒 /:app_id/entitlements/:entitlement_id/consume Consume a one-time entitlement 🔒 /:app_id/skus List SKUs for an application 🔒 Reports
Submit content or user reports for moderation review.
Base: /api/reports
/ Submit a report (message, user, server, or channel) 🔒 Admin
Platform administration — system stats, user/server/bot management, report resolution, emoji/sticker pack admin, and platform config. Requires platform_admin role.
Base: /api/admin
/stats Get system-wide statistics 🔒 /users List all users (paginated) 🔒 /users/batch-verify Batch verify user emails 🔒 /users/clear-broken-avatars Clear broken avatar references 🔒 /users/:user_id Update user (disable, set role) 🔒 /users/:user_id Hard-delete a user 🔒 /users/:user_id/export Export user data (admin) 🔒 /users/:user_id/resend-verification Resend verification email for user 🔒 /servers List all servers (paginated) 🔒 /servers/duplicate-names Find public servers with duplicate names 🔒 /servers/:server_id Force-delete a server 🔒 /servers/listings/:listing_id Remove a public server listing 🔒 /reports List content reports (paginated) 🔒 /reports/:report_id Resolve or dismiss a report 🔒 /audit-log Admin audit log 🔒 /config Get platform configuration 🔒 /config Update platform configuration 🔒 /registration-ips List registration IPs with abuse flagging 🔒 /bots List all bot accounts 🔒 /bots/:user_id/token Revoke a bot token 🔒 /emoji-packs List platform emoji packs 🔒 /emoji-packs Delete all platform emoji packs 🔒 /emoji-packs/import Import a platform emoji pack 🔒 /emoji-packs/:pack_id Delete an emoji pack 🔒 /emoji-packs/:pack_id/redownload Re-download emoji pack assets 🔒 /emoji-packs/:pack_id/retry-failed Retry failed emoji downloads 🔒 /emoji-packs/:pack_id/toggle-platform Toggle pack platform visibility 🔒 /sticker-packs List platform sticker packs 🔒 /sticker-packs Delete all platform sticker packs 🔒 /sticker-packs/import Import a platform sticker pack 🔒 /sticker-packs/:pack_id Delete a sticker pack 🔒 /sticker-packs/:pack_id/redownload Re-download sticker pack assets 🔒 /sticker-packs/:pack_id/retry-failed Retry failed sticker downloads 🔒 /sticker-packs/:pack_id/toggle-platform Toggle sticker pack platform visibility 🔒 GIF & Stickers
Search and browse trending GIFs and stickers via the KLIPY proxy.
Base: /api/gif
/trending Get trending GIFs /search Search GIFs by query /stickers/trending Get trending stickers /stickers/search Search stickers by query Gateway (WebSocket)
WebSocket connection for real-time events. Supports IDENTIFY, RESUME, heartbeat, intents, and all standard gateway opcodes.
Base: /api/gateway
⏱ Rate limit: 1 req/5s (connect)
/ WebSocket upgrade — connect to the real-time event stream 🔒 /bot Get gateway bot info (recommended shards, session limits) 🔒 Authentication
Include a JWT token in the Authorization header for all authenticated requests:
Authorization: Bearer <your-jwt-token> Obtain a token via POST /api/auth/register or POST /api/auth/login. Bot tokens last 365 days; user tokens last 7 days.
Rate Limiting
Every endpoint is rate-limited. When you exceed a limit, you get 429 Too Many Requests with a Retry-After header. The API uses a token-bucket algorithm backed by Redis and returns Discord-compatible headers.
Response Headers
Per-Route Limits
| Route Pattern | Limit | Window |
|---|---|---|
/api/auth/register | 3 | 60s |
/api/auth/* | 20 | 60s |
/api/channels/*/messages | 200 | 5s |
/api/channels/*/messages/bulk-delete | 2 | 3s |
/api/channels/*/messages/*/reactions | 1 | 250ms |
/api/channels/*/typing | 30 | 5s |
/api/channels/*/pins | 20 | 5s |
/api/channels/* | 120 | 10s |
/api/servers/*/members | 120 | 10s |
/api/servers/*/bans | 40 | 10s |
/api/servers/*/roles | 80 | 10s |
/api/servers/*/invites | 40 | 10s |
/api/servers/*/audit-logs | 40 | 10s |
/api/servers/* | 100 | 10s |
/api/webhooks/* | 60 | 5s |
/api/users/*/dm | 40 | 5s |
/api/users/me/settings | 40 | 10s |
/api/users/me/presence | 20 | 60s |
/api/users/* | 300 | 10s |
/api/oauth2/* | 40 | 10s |
/api/gateway | 1 | 5s |
/api/discovery/* | 40 | 5s |
/api/friends/* | 80 | 10s |
| All other routes | 200 | 1s |
Global Limits
Gateway Opcodes
The WebSocket gateway uses standard opcodes:
Error Responses
All errors return a JSON body with a descriptive message:
{
"error": "Descriptive error message"
}