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

237 Endpoints
23 Sections
Auth: Bearer <JWT>
Format: JSON

Authentication

Register accounts, log in, and generate bot tokens. All auth endpoints return a JWT + user object.

Base: /api/auth

POST /register Create a new user account
POST /login Log in with email and password
POST /bot Generate a long-lived bot token (365 days)
POST /verify-email Verify email with a 6-digit code
POST /resend-verification Resend verification email
POST /skip-verification Skip email verification (14-day grace period)
POST /inbound-email Webhook for inbound email verification

Users

Manage user profiles, settings, DMs, presence, encryption keys, and guild membership.

Base: /api/users

GET /me Get your own profile 🔒
PATCH /me Update your profile (display name, avatar, bio, banner) 🔒
GET /:user_id Get another user's public profile
GET /me/channels List all DM and Group DM channels 🔒
POST /me/channels Create a Group DM 🔒
POST /:user_id/dm Create or get a DM channel with a user 🔒
GET /me/settings Get user settings 🔒
PATCH /me/settings Update user settings 🔒
GET /me/guilds List servers you are a member of 🔒
DELETE /me/guilds/:guild_id Leave a server 🔒
DELETE /me/account-data Delete all user data (messages, files, settings) 🔒
PUT /me/presence Update presence status and broadcast 🔒
PUT /me/keys Upload E2EE public key 🔒
GET /me/applications/:app_id/role-connection Get application role connection 🔒
PUT /me/applications/:app_id/role-connection Update application role connection 🔒

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

POST / Create a new server 🔒
GET /:server_id Get server details
PATCH /:server_id Edit server (name, icon, banner, description, etc.) 🔒
DELETE /:server_id Delete a server (owner only) 🔒
POST /:server_id/channels Create a channel in a server 🔒
GET /:server_id/channels List all channels in a server
PATCH /:server_id/channels Reorder channels 🔒
GET /:server_id/members List all members
GET /:server_id/members/search Search members by name 🔒
GET /:server_id/members/:user_id Get a single member
PATCH /:server_id/members/:user_id Edit a member (nickname, roles, timeout) 🔒
DELETE /:server_id/members/:user_id Kick a member 🔒
PATCH /:server_id/members/@me Modify your own member profile 🔒
PUT /:server_id/members/:user_id/roles/:role_id Add a role to a member 🔒
DELETE /:server_id/members/:user_id/roles/:role_id Remove a role from a member 🔒
GET /:server_id/prune Get prune count (inactive members) 🔒
POST /:server_id/prune Prune inactive members 🔒
POST /:server_id/leave Leave a server 🔒
POST /:server_id/join Join a public server (no invite needed) 🔒
POST /:server_id/invites Create an invite link 🔒
GET /:server_id/invites List all invites 🔒
POST /join/:invite_code Join a server via invite 🔒
GET /:server_id/bans List all bans 🔒
GET /:server_id/bans/:user_id Get a single ban 🔒
PUT /:server_id/bans/:user_id Ban a member 🔒
DELETE /:server_id/bans/:user_id Unban a user 🔒
POST /:server_id/bulk-ban Bulk ban multiple members 🔒
GET /:server_id/roles List all roles
POST /:server_id/roles Create a role 🔒
PATCH /:server_id/roles Reorder roles 🔒
PATCH /:server_id/roles/:role_id Edit a role 🔒
DELETE /:server_id/roles/:role_id Delete a role 🔒
GET /:server_id/emojis List custom emojis
POST /:server_id/emojis Upload a custom emoji 🔒
PATCH /:server_id/emojis/:emoji_id Edit a custom emoji 🔒
DELETE /:server_id/emojis/:emoji_id Delete a custom emoji 🔒
GET /:server_id/audit-logs Get audit log entries 🔒
GET /:server_id/scheduled-events List scheduled events
POST /:server_id/scheduled-events Create a scheduled event 🔒
PATCH /:server_id/scheduled-events/:event_id Edit a scheduled event 🔒
DELETE /:server_id/scheduled-events/:event_id Delete a scheduled event 🔒
GET /:server_id/scheduled-events/:event_id/users List event RSVPs
PUT /:server_id/scheduled-events/:event_id/users RSVP to an event 🔒
DELETE /:server_id/scheduled-events/:event_id/users Remove RSVP 🔒
GET /:server_id/auto-moderation/rules List AutoMod rules 🔒
POST /:server_id/auto-moderation/rules Create an AutoMod rule 🔒
PATCH /:server_id/auto-moderation/rules/:rule_id Edit an AutoMod rule 🔒
DELETE /:server_id/auto-moderation/rules/:rule_id Delete an AutoMod rule 🔒
GET /:server_id/stickers List server stickers
POST /:server_id/stickers Create a sticker 🔒
PATCH /:server_id/stickers/:sticker_id Edit a sticker 🔒
DELETE /:server_id/stickers/:sticker_id Delete a sticker 🔒
POST /:server_id/stickers/import Import a messenger app sticker pack 🔒
GET /:server_id/emoji-packs List imported emoji packs 🔒
POST /:server_id/emoji-packs/import Import a messenger app emoji pack 🔒
GET /:server_id/emoji-packs/:pack_id Get emoji pack items 🔒
DELETE /:server_id/emoji-packs/:pack_id Remove an emoji pack from server 🔒
GET /:server_id/templates List server templates
POST /:server_id/templates Create a template from server 🔒
PATCH /:server_id/templates/:template_code Edit a template 🔒
PUT /:server_id/templates/:template_code Sync template with server 🔒
DELETE /:server_id/templates/:template_code Delete a template 🔒
GET /:server_id/onboarding Get onboarding config
PUT /:server_id/onboarding Update onboarding 🔒
GET /:server_id/soundboard-sounds List soundboard sounds
POST /:server_id/soundboard-sounds Upload a soundboard sound 🔒
PATCH /:server_id/soundboard-sounds/:sound_id Edit a soundboard sound 🔒
DELETE /:server_id/soundboard-sounds/:sound_id Delete a soundboard sound 🔒
GET /:server_id/voice-states Get all voice states
GET /:server_id/vanity-url Get vanity URL 🔒
PATCH /:server_id/vanity-url Set vanity URL 🔒
GET /:server_id/widget.json Get server widget JSON
GET /:server_id/widget Get widget settings 🔒
PATCH /:server_id/widget Update widget settings 🔒
GET /:server_id/welcome-screen Get welcome screen config
PATCH /:server_id/welcome-screen Update welcome screen 🔒
GET /:server_id/member-verification Get verification gate
PUT /:server_id/member-verification Update verification gate 🔒
POST /:server_id/member-verification/accept Accept verification 🔒
GET /:server_id/threads/active List active threads
GET /:server_id/preview Get guild preview
GET /:server_id/webhooks List all server webhooks 🔒
POST /:server_id/mfa Set MFA level requirement 🔒

Channels

Channel operations — messages, reactions, threads, pins, invites, webhooks, voice, file uploads, polls, forum posts, permissions, and search.

Base: /api/channels

GET /:channel_id Get channel details
PATCH /:channel_id Edit channel (name, topic, NSFW, slowmode, etc.) 🔒
DELETE /:channel_id Delete a channel 🔒
GET /:channel_id/messages Get messages (supports before, after, limit)
GET /:channel_id/messages/:message_id Get a single message
POST /:channel_id/messages Send a message 🔒
PATCH /:channel_id/messages/:message_id Edit a message 🔒
DELETE /:channel_id/messages/:message_id Delete a message 🔒
POST /:channel_id/messages/bulk-delete Bulk delete messages (up to 100) 🔒
GET /:channel_id/messages/search Search messages (full-text) 🔒
POST /:channel_id/messages/:message_id/ack Acknowledge (mark as read) 🔒
POST /:channel_id/messages/translate Batch translate visible messages 🔒
POST /:channel_id/messages/:message_id/transcribe On-demand voice note transcription 🔒
POST /:channel_id/messages/:message_id/forward Forward a message to another channel 🔒
PUT /:channel_id/messages/:message_id/reactions/:emoji Add a reaction 🔒
DELETE /:channel_id/messages/:message_id/reactions/:emoji Remove a reaction 🔒
GET /:channel_id/messages/:message_id/reactions/:emoji Get users who reacted
DELETE /:channel_id/messages/:message_id/reactions Delete all reactions 🔒
DELETE /:channel_id/messages/:message_id/reactions/:emoji/all Delete all reactions for an emoji 🔒
POST /:channel_id/threads Create a thread 🔒
GET /:channel_id/threads/archived/public Get archived public threads
GET /:channel_id/threads/archived/private Get archived private threads 🔒
PUT /:channel_id/thread-members/@me Join a thread 🔒
DELETE /:channel_id/thread-members/@me Leave a thread 🔒
PUT /:channel_id/thread-members/:user_id Add a thread member 🔒
DELETE /:channel_id/thread-members/:user_id Remove a thread member 🔒
GET /:channel_id/thread-members List thread members 🔒
GET /:channel_id/pins Get pinned messages
PUT /:channel_id/pins/:message_id Pin a message 🔒
DELETE /:channel_id/pins/:message_id Unpin a message 🔒
GET /:channel_id/invites List channel invites 🔒
POST /:channel_id/invites Create a channel invite 🔒
DELETE /:channel_id/invites/:invite_code Delete an invite 🔒
GET /:channel_id/webhooks List channel webhooks 🔒
POST /:channel_id/webhooks Create a webhook 🔒
POST /:channel_id/upload Upload a file (multipart) 🔒
POST /:channel_id/voice/connect Get a LiveKit token for voice 🔒
PATCH /:channel_id/voice/state Update voice state (mute, deafen) 🔒
DELETE /:channel_id/voice/disconnect Disconnect from voice channel 🔒
PUT /:channel_id/messages/:message_id/poll/vote Vote on a poll 🔒
POST /:channel_id/messages/:message_id/poll/end End a poll 🔒
GET /:channel_id/messages/:message_id/poll/:answer_id/voters Get voters for a poll answer
POST /:channel_id/messages/:message_id/interactions Submit a component interaction 🔒
POST /:channel_id/forum-posts Create a forum post 🔒
GET /:channel_id/forum-posts List forum posts
PUT /:channel_id/tags Update forum tags 🔒
POST /:channel_id/typing Trigger typing indicator 🔒
GET /:channel_id/permissions List permission overwrites 🔒
PUT /:channel_id/permissions/:overwrite_id Set permission overwrite 🔒
DELETE /:channel_id/permissions/:overwrite_id Delete permission overwrite 🔒
PUT /:channel_id/recipients/:user_id Add group DM recipient 🔒
DELETE /:channel_id/recipients/:user_id Remove group DM recipient 🔒
POST /:channel_id/messages/:message_id/crosspost Crosspost an announcement message 🔒
POST /:channel_id/followers Follow an announcement channel 🔒
GET /:channel_id/thread-counts Get thread reply counts 🔒
GET /:channel_id/members List channel members 🔒

Webhooks

Execute, manage, and configure incoming webhooks. Supports both authenticated and token-based access for bot integrations.

Base: /api/webhooks

POST /:webhook_id/:token Execute a webhook (no auth required)
GET /:webhook_id Get webhook details 🔒
PATCH /:webhook_id Edit a webhook (name, avatar, channel) 🔒
DELETE /:webhook_id Delete a webhook 🔒
GET /:webhook_id/:token Get webhook details (token auth)
PATCH /:webhook_id/:token Edit a webhook (token auth)
DELETE /:webhook_id/:token Delete a webhook (token auth)
POST /:webhook_id/:token/messages Create followup message
PATCH /:webhook_id/:token/messages/:message_id Edit followup message
DELETE /:webhook_id/:token/messages/:message_id Delete followup message

Friends

Friend requests, acceptance, removal, and blocking.

Base: /api/friends

GET / List all friendships 🔒
POST /:user_id Send a friend request 🔒
PUT /:user_id/accept Accept a pending friend request 🔒
DELETE /:user_id Remove or reject a friendship 🔒
POST /:user_id/block Block a user 🔒

OAuth2

Full OAuth2 authorization code flow for third-party app integrations.

Base: /api/oauth2

POST /applications Register a new OAuth2 application 🔒
GET /applications List your applications 🔒
GET /applications/:app_id Get application details 🔒
PATCH /applications/:app_id Edit an application 🔒
DELETE /applications/:app_id Delete an application 🔒
POST /applications/:app_id/bot Create a bot user for an application 🔒
GET /authorize Show authorization consent screen 🔒
POST /authorize Generate an authorization code 🔒
POST /token Exchange auth code for access token
POST /token/revoke Revoke a token
GET /@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

GET /:app_id/commands List global commands 🔒
POST /:app_id/commands Create a global command 🔒
PUT /:app_id/commands Bulk overwrite all global commands 🔒
DELETE /:app_id/commands/:command_id Delete a global command 🔒
GET /:app_id/guilds/:guild_id/commands List guild-scoped commands 🔒
POST /:app_id/guilds/:guild_id/commands Create a guild-scoped command 🔒
GET /:app_id/guilds/:guild_id/commands/:cmd_id/permissions Get command permissions 🔒
PUT /:app_id/guilds/:guild_id/commands/:cmd_id/permissions Set command permissions 🔒
GET /:app_id/role-connections/metadata Get role connection metadata 🔒
PUT /: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

POST /: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

GET /:channel_id Get stage instance for a channel
POST /:channel_id Create a stage instance 🔒
PATCH /:channel_id Edit a stage instance 🔒
DELETE /:channel_id Delete a stage instance 🔒

Discovery

Browse, search, list, and unlist servers in the public directory.

Base: /api/discovery

GET /servers Search/browse listed servers (search, category, sort, limit, offset)
POST /servers List your server for discovery (owner only) 🔒
DELETE /servers/:server_id Unlist your server 🔒
GET /categories List available discovery categories

Platform

Platform-wide utilities — server ordering, emoji/sticker search, server verification, and server analytics.

Base: /api/platform

GET /preferences/server_order Get your server sidebar order 🔒
PUT /preferences/server_order Set your server sidebar order 🔒
GET /emojis/search Search emojis across all servers
GET /stickers/search Search stickers across all servers
GET /servers/:server_id/stickers List stickers for a server
GET /servers/:server_id/verification Get server verification status
PUT /servers/:server_id/verification Set server verification (admin) 🔒
GET /servers/:server_id/analytics Get server analytics summary 🔒

Voice Regions

List available voice server regions for optimal voice channel routing.

Base: /api/voice

GET /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

GET /:code Resolve invite info (server name, icon, member count)
DELETE /: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

POST / Transcribe an audio file (multipart upload) 🔒

Translation

Real-time text translation powered by self-hosted LibreTranslate. Supports auto-detection of source language.

Base: /api/translate

POST / Translate text to a target language 🔒

Emoji Packs

Lookup and discover messenger-app-compatible emoji packs available for import.

Base: /api/emoji-packs

GET /lookup Lookup an emoji pack by name

Files

Serve uploaded files (images, voice notes, attachments) by file ID.

Base: /api/files

GET /:file_id Serve an uploaded file

Integrations

Manage third-party integrations (bots, Twitch, etc.) for a server.

Base: /api/guilds

GET /:server_id/integrations List guild integrations 🔒
DELETE /:server_id/integrations/:integration_id Remove an integration 🔒

Entitlements

Manage premium entitlements and SKUs for monetized applications.

Base: /api/applications

GET /:app_id/entitlements List entitlements (filter by user, SKU) 🔒
POST /:app_id/entitlements/:entitlement_id/consume Consume a one-time entitlement 🔒
GET /:app_id/skus List SKUs for an application 🔒

Reports

Submit content or user reports for moderation review.

Base: /api/reports

POST / Submit a report (message, user, server, or channel) 🔒

Admin

Platform administration — system stats, user/server management, and report resolution. Requires platform_admin role.

Base: /api/admin

GET /stats Get system-wide statistics 🔒
GET /users List all users (paginated) 🔒
PATCH /users/:user_id Update user (disable, set role) 🔒
DELETE /users/:user_id Hard-delete a user 🔒
GET /servers List all servers (paginated) 🔒
DELETE /servers/:server_id Force-delete a server 🔒
GET /reports List content reports (paginated) 🔒
PATCH /reports/:report_id Resolve or dismiss a report 🔒

Gateway (WebSocket)

WebSocket connection for real-time events. Supports IDENTIFY, RESUME, heartbeat, intents, and all standard gateway opcodes.

Base: /api/gateway

WS / WebSocket upgrade — connect to the real-time event stream 🔒
GET /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

The API enforces rate limits per endpoint. When rate-limited, you'll receive a 429 Too Many Requests response with a Retry-After header indicating how long to wait (in seconds).

Gateway Opcodes

The WebSocket gateway uses standard opcodes:

0Dispatch — server events (MESSAGE_CREATE, etc.)
1Heartbeat — keep connection alive
2Identify — authenticate with token + intents
3Presence Update — set status / activity
4Voice State Update — join / leave / mute
6Resume — reconnect with session ID
7Reconnect — server requests you reconnect
8Request Guild Members — query member list chunks
10Hello — sent on connect with heartbeat interval
11Heartbeat ACK — server acknowledges heartbeat

Error Responses

All errors return a JSON body with a descriptive message:

{
  "error": "Descriptive error message"
}
400Bad Request — invalid input
401Unauthorized — missing or invalid token
403Forbidden — insufficient permissions
404Not Found — resource doesn't exist
409Conflict — resource already exists
429Too Many Requests — rate limited
500Internal Server Error