Nookara API: Python clients and raw HTTP
Nookara is your identity: accounts, direct messages, groups, friends, credits, push, the keys that prove who wrote a message, and hosting. Ember servers are separate. Each one is an instance with its own web address, either run by you or hosted by Nookara. This guide covers both halves.
The API does not require the Scratch extension or the Ember app to be running. Everything the official apps do goes through the routes listed below.
How the pieces fit
| Piece | Where | What it does |
|---|---|---|
| Nookara | https://nookara.cc | Accounts, direct messages, groups, friends, credits and payments, push, instance tokens, signing keys, your saved list of Ember servers, the public directory, and hosting |
| Ember instance | its own address, such as https://chat.ikelene.net | One community: channels, messages, members, roles, emoji, webhooks, bots, uploads, voice and backups |
| Nookara-hosted instance | https://SLUG-bonfire.ikelene.net | An ordinary instance that Nookara runs for you on a free Starter or a prepaid Plus plan |
| Self-hosted instance | your own domain | The same server software on your machine. It talks to Nookara only if you let it |
Joining an Ember server just means adding its address. The main community lives at chat.ikelene.net. Older Nookara-hosted chat servers (the /chat/servers routes) are now legacy and read-only. See Legacy Nookara-hosted chat.
Ember in five steps
- Find the server. GET
https://INSTANCE/.well-known/bonfire(no sign-in) names the software,accounts_mode,features,buildand the community. See Discover an instance. - Sign in. A Nookara account trades a short, single-instance ticket (
POST /bonfire/instance-token) for an instance session; a local-account server takes a username and password. Your Nookara token never reaches the instance. - Know your scopes. Scopes are only requested. The person may decline any of them, so check what you got and degrade gracefully. See Scopes and consent.
- Use the instance. REST under
/api/v1, live events onwss://INSTANCE/gateway, uploads and media import, invites, webhooks, optional signed messages that anyone can verify against Nookara's public keys. - Bots. Instance bots live on one server; Nookara developer bots can be listed in the bot gallery and added to many servers with one token and one gateway connection per server.
Choose a transport
| Use case | Address | Authentication |
|---|---|---|
| Nookara REST | https://nookara.cc | Authorization: Bearer TOKEN (a Nookara token) |
| Nookara realtime (DMs, groups, presence) | wss://nookara.cc/ | First JSON frame: auth_token |
| Instance discovery | https://INSTANCE/.well-known/bonfire | None |
| Nookara identity keys | https://nookara.cc/.well-known/bonfire/jwks.json | None (public) |
| Instance REST | https://INSTANCE/api/v1/... | Authorization: Bearer SESSION (an instance session, never a Nookara token) |
| Instance gateway | wss://INSTANCE/gateway | First JSON frame: auth with the session |
| Instance bot REST | https://INSTANCE/bot/v1 | Authorization: Bot TOKEN |
| Instance bot gateway | wss://INSTANCE/bot/gateway | Identify, opcode 2 |
| Instance webhook | https://INSTANCE/api/v1/webhooks/WID/TOKEN | The secret webhook URL |
| Where is my bot installed? | https://nookara.cc/bonfire/bots/self/installs | Authorization: Bot TOKEN (the Nookara bot's token) |
Nookara routes are unversioned, for example /im/send. Instance routes always start with /api/v1.
In this guide
- Python quick start
- Sign-in
- Scopes and consent
- Raw HTTP by language
- Ember servers (instances)
- Hosting, plans and backups
- Instance administration and relays
- Legacy Nookara-hosted chat
- Game servers (Minecraft)
- Roles and permissions
- User realtime
- Activity and presence
- Voice and video
- DMs, groups and friends
- Uploads
- Storage and accounts
- Credits and payments
- Bot gateway and webhooks
- Bot payments
- Bot gallery
- Settings and notifications
- Featured projects
- Other integrations
- Errors and limits
- REST reference
- Websocket frame reference
Python quick start
Python 3.10 or newer. The REST client has no runtime dependencies. This package is distributed directly by Nookara, so install the wheel URL rather than searching PyPI:
python -m pip install "https://nookara.cc/assets/api/velora_api_client-0.5.8-py3-none-any.whl"
To add websocket support (the instance gateway and the Nookara user socket) or signing after installing the wheel:
python -m pip install "velora-api-client[realtime]==0.5.8" # websockets
python -m pip install "velora-api-client[signing]==0.5.8" # cryptography, for signed messages
Or extract the source zip and run python -m pip install ".[realtime]" in the folder containing pyproject.toml. Its requirements.txt installs the optional websocket dependency only. Use a virtual environment for your project.
from velora_api import Client, Instance, login, scope_mask
# Opens a browser where the person approves what you ask for. Every scope is optional for them.
token = login(project_name="My Python client", scopes=scope_mask("PROFILE_READ", "CHAT"))
velora = Client(token)
print(velora.scope_names()) # what they actually allowed
print(velora.bonfire_instances()) # the Ember servers saved on this account
chat = Instance("https://chat.ikelene.net")
chat.login_with_velora(velora) # a one-instance ticket, not your Nookara token
channel = chat.channel_id("#general")
for message in chat.messages(channel, limit=20)["messages"]:
print(message["author"]["username"], message["body"])
chat.send_message(channel, "Hello from Python!")
The request 2049 is View Basic Profile (1) plus Chat Messaging (2048). Add Sign Messages (32768) or Upload Media (4096) only for features that use them, and treat them as optional: the person can untick any scope, so use velora.has_scope(...) or catch ScopeError (see Scopes and consent). Store a token in an OS credential store or a private environment variable. An existing token can be loaded with Client(os.environ["VELORA_TOKEN"]). Never print it or distribute it with your app.
One method per REST operation
The endpoint reference shows the Python method name for every route. Parameters from the URL are keyword arguments. Use query for query parameters and json for JSON bodies.
chat.post_api_v1_servers_by_sid_roles(
sid="YOUR_SERVER_SID",
json={"name": "Member", "permissions": 257, "color": "#c084fc"},
)
chat.call("get_api_v1_servers_by_sid", sid="YOUR_SERVER_SID")
velora.call("get_bonfire_hosting_plans")
velora.request("GET", "/bonfire/instances")
Nookara helpers on Client: send_dm(username, message), can_reply_to_status(username), reply_to_status(username, message), set_activity(name), clear_activity(), storage_get(storage_id, key), storage_set(storage_id, key, value), scopes (granted_scopes(), scope_names(), has_scope(x), require_scope(x), bonfire_scopes()), Ember identity (instance_token(url), signing_key(), bonfire_instances(), sync_bonfire_instances(urls), bonfire_default_joined(), bonfire_instance_prefs(), bonfire_directory(q), bonfire_profiles(ids), bonfire_key(kid), bonfire_jwks(), server_latest(), start_bonfire_import(...)), the bot gallery (below), bot_installs() for bot programs, and the hosting helpers in Hosting, plans and backups. Ember(velora) gathers your saved servers and their joined communities, Instance is one server, and BotProgram(token) serves a bot on every server it is installed on. The old servers(), server(sid), messages(cid) and send_message(cid, message) still call the legacy Nookara routes and now warn that they are read-only; use Instance for Ember servers (see Ember servers). Errors are APIError; a missing scope is the subclass ScopeError with scope, label and disabled_by_admin. Game server helpers: game_downloads(), game_instances(sid), game_unlink(sid, iid), game_unclaimed(sid), game_claim(sid, cid), game_claim_state(code), game_status(cid), game_console(cid), game_exec(cid, command) and game_audit(sid) (legacy Nookara routes; the matching Instance.game_* helpers use the instance).
Errors and uploads
from velora_api import APIError, ScopeError, TransportError
try:
uploaded = chat.upload("picture.png", cid="YOUR_CHANNEL_CID") # the media scope
chat.send_message("YOUR_CHANNEL_CID", "A picture", attachments=[uploaded])
except ScopeError:
print("Upload Media was not allowed: log in again and keep it ticked.")
except APIError as exc:
print(exc.status, exc.error, exc.retry_after)
except TransportError:
print("Check connectivity and whether the operation completed.")
For multipart, use data={...}, files={"file": path}. A file may also be (filename, bytes_or_file_object, mime_type). The SDK buffers at most 64 MiB of file content per multipart request. Server limits may be smaller. Video should use chunks. raw=True returns response bytes. Empty 204 responses return None.
The library rejects redirects and never retries automatically. A timeout after sending a message or payment does not prove the server rejected it. Check state before retrying writes.
Realtime in Python
import asyncio
import os
from velora_api import RealtimeClient
async def main():
async with RealtimeClient(os.environ["VELORA_TOKEN"]) as chat:
await chat.set_activity("My Python app", state="Connected")
async for event in chat:
if event.get("type") == "chat_message":
print(event["message"])
asyncio.run(main())
The context manager waits for auth_success, checks ToS state, starts the reader, and sends chat_hello when Chat is granted. await chat.send_message(cid, text) waits for a nonce-matched reply. send(type, **fields) sends any user frame; rpc() is for frames that actually reply with a nonce. chat.notification_events() yields only notification_new and notifications_updated, and Client.notifications(), unread_notifications(), mark_notifications_read() and notification_settings() wrap the notification routes. Consume events continuously. Reconnect explicitly and resync using REST.
send()/rpc(); see the voice guide for the required media implementation.Authentication from any language
Use the browser approval flow for a third-party client. It lets the user choose scopes without giving your program their password.
- POST
/auth/ext-codewith{"permissions_integer":2049,"project_name":"My client"}(the scopes you request; the person can decline any). The response is{"code":"..."}. Names that start withEmber (are reserved and answer400 reserved_project_name. - Open
https://nookara.cc/login?code=CODE&project=My%20client&permissions=2049in the user's browser. URL encode every query value. The code is sensitive while authorization is pending. - Poll GET
/auth/ext-code/status?code=CODEabout once every 1.5 seconds. Pending is{"ready":false,"alive":true}; completed is{"ready":true,"token":"..."}. - Keep the returned token private and use
Authorization: Bearer TOKENon subsequent user requests.
The returned token holds only the scopes the person approved, which can be fewer than you requested: check it (see Scopes and consent). Codes expire after five minutes. The successful status response consumes the code, so one process should own the polling loop. A false alive value is a heartbeat hint, including while a browser is still opening. Stop on explicit cancellation or expiry. The browser performs /auth/ext-code/complete after user approval; your client should not try to grant itself scopes.
Scope masks
permissions_integer is the sum of the scope bits you want (see Scopes and consent for the table). Scopes are only requested, never required, and both 16-bit halves are read the same way. Send the mask in the high half, permissions_integer = mask << 16, as the Ember apps and the Python library do. Granted scopes are capped by the requested union and the approving session's permissions. Do not send zero: the creation endpoint treats a zero mask as its default full mask.
Lifecycle and restrictions
- User tokens expire after seven days without authenticated use; active requests refresh last-used time. Revoke sessions using DELETE
/auth/sessions/:sessionIdor/account/sessions/:tokenId. - POST
/auth/validateaccepts a Bearer token or JSON{"token":"..."}. A current ToS acceptance may be required; present the official site to the user. Do not automatically agree on their behalf. /auth/logoutcurrently returns success without revoking a token. Delete the local credential and explicitly revoke the session if revocation is intended.- Admins can disable individual scopes account-wide. Handle
scope_disabledand realtimerestrictionsupdates. A person who declined a scope will getinsufficient_scopefrom the routes that need it. - Password login and registration have CAPTCHA/email/IP verification flows. They are not a shortcut for a headless client. The scoped approval flow is the recommended integration.
Use TLS, avoid tokens in URLs, never ship shared user tokens, and do not log Authorization headers, auth frames, authorization codes or webhook URLs.
Scopes and consent: requested, never required
A scope is a permission on one person's token. Your program requests scopes, and the person decides on Nookara's consent screen. Nothing can be required any more: every scope can be unticked, and the risky ones (View Sensitive Info, Modify Settings, Write Storage, Manage Friends, Spend Credits and Sign Messages) start unticked. Design for a token that comes back with fewer scopes than you asked for, and say "log in again to use this" when a feature needs one it does not have.
| Scope | Bit | Identifier | Consent screen | Instance scope | Used for |
|---|---|---|---|---|---|
| View Basic Profile | 1 | PROFILE_READ | Ticked | Username, rank, badges, picture, balance | |
| View Sensitive Info | 2 | PROFILE_SENSITIVE | Unticked (risky) | Email, login history, linked accounts | |
| Project Auth | 4 | PROJECT_AUTH | Ticked | Verify identity for a project, project achievements | |
| Modify Settings | 8 | ACCOUNT_WRITE | Unticked (risky) | Profile, settings, picture changes | |
| Read Storage | 16 | STORAGE_READ | Ticked | Read project key/value data | |
| Write Storage | 32 | STORAGE_WRITE | Unticked (risky) | Save and delete project data | |
| Read Instant Messages | 64 | VMAIL_READ | Ticked | Read direct messages (Instant Messages) | |
| Send Instant Messages | 128 | VMAIL_SEND | Ticked | Send and delete direct messages | |
| View Friends | 256 | FRIENDS_READ | Ticked | Friends list and status | |
| Manage Friends | 512 | FRIENDS_MANAGE | Unticked (risky) | Send, accept and decline friend requests | |
| Spend Credits | 1024 | CURRENCY_PAY | Unticked (risky) | Transfers, subscriptions, role-shop and hosting payments | |
| Chat Messaging | 2048 | CHAT | Ticked | chat | Ember: your server list, instance tickets, group chats, bot management |
| Upload Media | 4096 | MEDIA_UPLOAD | Ticked | media | Upload images, audio and video (Nookara and instances) |
| View Subscriptions | 8192 | CURRENCY_READ | Ticked | Balance and transactions | |
| Nookara Voice | 16384 | VOICE | Ticked | voice | Join voice rooms and call people |
| Sign Messages | 32768 | SIGN_MESSAGES | Unticked (risky) | sign | Fetch your signing key to sign chat messages |
Scopes authorize platform services. They do not grant membership, server roles, account rank or permission to read private profiles. Token scopes and chat role permissions are different bitfields (see Roles and channel permissions).
Ask for scopes
Send the bits you want in permissions_integer (see Authentication). Both 16-bit halves of the integer are read as requests; the Ember apps put everything in the high half (permissions_integer = mask << 16) and the Python library does the same. A zero or missing value asks for everything (65535), so always send an explicit mask. Chat + Voice + Media Upload is 2048 | 16384 | 4096 = 22528. The approval is capped by what you requested and by what the approving session holds.
Check what you got
- GET
/bonfire/sessionworks for any token:{granted, effective, disabled, not_granted, ...}.grantedis what the person approved,effectivealso drops services an administrator switched off for the account. - The user websocket's
auth_successcarriesscopesanddisabled_scopes. GET/account/melists the account's sessions with theirscopesandscope_list. - GET
/bonfire/scopes.jsonis public and describes what the official Ember apps ask for:{version, scopes: [{id, bit, required: false, since, name, reason}], permissions_integer}.requiredis always false.
velora = Client(token)
velora.scope_names() # ['PROFILE_READ', 'CHAT'] what they allowed
velora.has_scope("MEDIA_UPLOAD") # False: hide the upload button, offer "log in again"
velora.require_scope("CHAT") # raises ScopeError(scope='CHAT', label='Chat Messaging')
When a scope is missing
| Where | What you get | Meaning |
|---|---|---|
| Nookara REST | 403 {"error":"insufficient_scope","required_scope":2048,"disabled_by_admin":false} | The token does not have that bit. The person declined it, or you did not ask. Send them through the approval flow again. |
| Nookara REST | 403 {"error":"scope_disabled","required_scope":2048,"disabled_by_admin":true} | The token has it, but an administrator switched the service off for the account. Do not ask the person to log in again. |
| User websocket | {"type":"error","error":"insufficient_scope"|"scope_disabled","required_scope":2048,"disabled_by_admin":false}, and a restrictions event when an administrator changes the account | The same two cases for realtime frames |
| Instance REST | 403 {"error":"insufficient_scope"} | The instance session lacks chat, media, voice or sign (below) |
| Instance gateway | chat_error {error:"insufficient_scope", required_scope:"voice"|"chat"} | The same, for a frame |
Instance scopes: what an Ember server sees
When you trade a Nookara token for an instance ticket (POST /bonfire/instance-token), Nookara writes the instance scopes the token holds into the ticket's scp claim. The instance session keeps exactly those for its 30 days. To gain one, the person approves it on Nookara and your client asks for a new ticket and signs in again. No other Nookara scope (profile, instant messages, friends, credits, storage) ever reaches an instance.
| Nookara scope | scp | What it lets the session do on an instance |
|---|---|---|
| Chat Messaging (2048) | chat | Sign in at all (a ticket without it is refused with insufficient_scope, and Nookara refuses to make one), read and send messages, the gateway chat frames, bots and webhook management |
| Upload Media (4096) | media | POST /media/upload, POST /media/import, saving a YouTube video as an upload |
| Nookara Voice (16384) | voice | The chat_rtc_* voice frames and soundboard plays |
| Sign Messages (32768) | sign | Posting messages with a signature. Unsigned messages always work |
Local-account instances have no Nookara scopes at all. Their sessions always hold chat, voice and media and never sign.
The official apps
The Ember apps request the list in scopes.json (a versioned list; version 2 added Sign Messages). When a new version asks for something an installed app's token lacks, the app shows "New permission updates" and offers to log in again. It never blocks the app. The apps sign in through /bonfire/app-login?state=STATE&client=web|desktop|android, which creates the approval request on the server so a link cannot be edited to ask for more. Their sessions are named Ember (desktop app), Ember (Android app) and Ember (web); POST /auth/ext-code refuses any project name that starts with Ember ( with 400 reserved_project_name. Use your own name.
Raw HTTP: the shared contract
Any language with HTTPS support can call the user API. Set Authorization: Bearer TOKEN. Send JSON with Content-Type: application/json. URL encode each path parameter as one segment, and encode query parameters separately. Preserve IDs as strings.
GET /chat/servers HTTP/1.1
Host: nookara.cc
Authorization: Bearer YOUR_TOKEN
Accept: application/json
POST /chat/channels/YOUR_CHANNEL_CID/messages HTTP/1.1
Host: nookara.cc
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{"message":"Hello!","reply_to":null,"attachments":[]}
Response envelopes vary: {"servers":[...]}, {"message":{...}}, {"ok":true}, {"success":true}, an array, a text/binary file, or empty 204. Check the HTTP status before decoding, handle empty bodies, and keep unknown response fields for forward compatibility. message is also a valid success field, so do not treat the presence of that key as an error.
curl
curl --fail-with-body "https://nookara.cc/chat/servers" \
-H "Authorization: Bearer $VELORA_TOKEN"
curl --fail-with-body -X POST \
"https://nookara.cc/chat/channels/YOUR_CHANNEL_CID/messages" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"message":"Hello from curl!"}'
These commands use a POSIX shell. In PowerShell, use curl.exe and $env:VELORA_TOKEN, or the Invoke-RestMethod example below.
JavaScript / Node.js
const token = process.env.VELORA_TOKEN;
async function velora(method, path, body) {
const response = await fetch("https://nookara.cc" + path, {
method,
redirect: "error",
headers: {
Authorization: `Bearer ${token}`,
...(body === undefined ? {} : { "Content-Type": "application/json" }),
},
body: body === undefined ? undefined : JSON.stringify(body),
});
const text = await response.text();
if (!response.ok) throw new Error(`Nookara HTTP ${response.status}`);
return text ? JSON.parse(text) : null;
}
console.log(await velora("GET", "/chat/servers"));
const cid = "YOUR_CHANNEL_CID";
await velora("POST", `/chat/channels/${encodeURIComponent(cid)}/messages`,
{ message: "Hello!" });
In a browser, get the token through the approval flow and pass it from your application state instead of process.env. This fetch helper expects JSON endpoints; download binary/text endpoints using their appropriate response methods.
Python without the library
import json
import os
from urllib.request import Request, urlopen
from urllib.error import HTTPError
req = Request("https://nookara.cc/chat/servers", headers={
"Authorization": "Bearer " + os.environ["VELORA_TOKEN"],
"Accept": "application/json",
})
try:
with urlopen(req, timeout=30) as response:
servers = json.load(response)["servers"]
except HTTPError as exc:
print("HTTP status:", exc.code)
exc.close()
For production, prevent credential forwarding on redirects, as the supplied SDK does. Use urllib.parse.quote(value, safe="") for path segments and urlencode for queries.
C# / .NET
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using var http = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("VELORA_TOKEN"));
using var response = await http.GetAsync("https://nookara.cc/chat/servers");
if (!response.IsSuccessStatusCode)
throw new Exception($"Nookara HTTP {(int)response.StatusCode}");
using var data = JsonDocument.Parse(await response.Content.ReadAsStringAsync());
Console.WriteLine(data.RootElement.GetProperty("servers"));
var cid = "YOUR_CHANNEL_CID";
var body = new StringContent(JsonSerializer.Serialize(new { message = "Hello!" }),
Encoding.UTF8, "application/json");
using var sent = await http.PostAsync(
$"https://nookara.cc/chat/channels/{Uri.EscapeDataString(cid)}/messages", body);
sent.EnsureSuccessStatusCode();
Go
package main
import (
"encoding/json"
"fmt"
"net/http"
"os"
"time"
)
func main() {
client := &http.Client{Timeout: 30 * time.Second,
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
}}
req, err := http.NewRequest("GET", "https://nookara.cc/chat/servers", nil)
if err != nil { panic(err) }
req.Header.Set("Authorization", "Bearer " + os.Getenv("VELORA_TOKEN"))
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
panic(fmt.Sprintf("Nookara HTTP %d", resp.StatusCode))
}
var data map[string]any
if err := json.NewDecoder(resp.Body).Decode(&data); err != nil { panic(err) }
fmt.Println(data["servers"])
}
For a POST in Go, JSON encode the body, wrap it in bytes.NewReader, set Content-Type, and use url.PathEscape on each ID.
PowerShell
$headers = @{ Authorization = "Bearer $env:VELORA_TOKEN" }
$servers = Invoke-RestMethod -Uri "https://nookara.cc/chat/servers" -Headers $headers -MaximumRedirection 0
$cid = [Uri]::EscapeDataString("YOUR_CHANNEL_CID")
$body = @{ message = "Hello from PowerShell!" } | ConvertTo-Json
Invoke-RestMethod -Method Post -Uri "https://nookara.cc/chat/channels/$cid/messages" `
-Headers $headers -ContentType "application/json" -Body $body -MaximumRedirection 0
Rust, Java, PHP and other languages use the same paths, headers, JSON and multipart fields. The OpenAPI inventory can seed your own client generator. Its request and response schemas are intentionally permissive; do not use it as a complete input validator.
Ember servers: instances
Ember is an open chat protocol. Anyone can write an Ember client and use Ember servers; Nookara's web, desktop and Android apps are just the clients the Nookara ecosystem uses.
An Ember server is a program running at a web address. It holds one community (what the apps call a server) with its channels, members, roles and messages. Nookara does not store those messages. Nookara only proves who you are, so the same Nookara account can walk into any instance, and an instance can also run with its own local usernames and passwords and never touch Nookara at all. The main community is https://chat.ikelene.net, Nookara hosts https://SLUG-bonfire.ikelene.net servers (see Hosting), and anyone can run the server software on their own domain.
The protocol document that the server implements is bonfire-server/PROTOCOL.md in the Nookara repository. Section numbers below refer to it. Administration, builds, relays and bridges are in Instance administration and Nookara relays.
Discover an instance
GET https://INSTANCE/.well-known/bonfire needs no sign-in and is the first call any client makes. Treat the address you were given as the identity of the server and normalize it first: scheme and host in lower case, default ports dropped, no path, query or trailing slash. https is required except for local tests.
| Field | Meaning |
|---|---|
software, version, protocol | "bonfire-server" and the protocol number (1). Refuse anything else |
name, description, icon_url, public_url | Mirror the community once it exists |
accounts_mode | velora (sign in with a Nookara ticket) or local (username and password) |
velora | For Nookara mode: {issuer, jwks_url}, the identity provider this instance trusts |
claimed, registration | Whether an owner claimed it; open or closed sign-ups (local mode) |
features | signing, voice, uploads, youtube, minecraft and bridges ({discord, fluxer, cloudlink}). Hide controls for what is false |
build | The running build: version, commit, commit_short, commit_date, built_at, dirty, build_id (commit fields are null for a plain checkout) |
max_upload_mb, managed, read_only | Upload ceiling (already capped by the plan), the plan and limits on a Nookara-hosted server (null otherwise), and whether all writes are refused |
community | {sid, name, icon_url, description, member_count, join_policy}, or null while the instance is not set up |
instance_key, instance_id | The key the instance registers with Nookara (ik_...), used by Nookara to check that it controls its address |
from velora_api import Instance
chat = Instance("https://chat.ikelene.net")
info = chat.discover()
print(info["name"], info["accounts_mode"], info["build"]["version"], info["read_only"])
print(chat.features["signing"], chat.accounts_mode, chat.build.get("commit_short"))
GET /api/v1/instance/info (also public) returns {software, protocol, version, name, build}; with an instance admin session it adds runtime, stats and update (see build and updates). GET /health is a plain liveness check.
Two ways to sign in
| Mode | Who it is for | How you sign in |
|---|---|---|
Nookara login (accounts_mode: velora) | People with a Nookara account. Names, avatars, DMs, push, credits and signing work. | Your Nookara token asks Nookara for a short ticket made for this one instance (POST /bonfire/instance-token, needs Chat 2048). You hand the ticket to the instance (POST /api/v1/auth/velora) and get a session. The ticket expires after ten minutes and works once. Your Nookara token is never sent to the instance. |
Local accounts (accounts_mode: local) | Self-hosted instances that want their own accounts. | POST /api/v1/auth/register or /api/v1/auth/login with a username (2 to 32 of a-z, 0-9, underscore, dot) and a password (8 to 200 characters). |
chat.login_with_velora(velora) # Nookara-login instances
# chat.register("nat", "a long password") # local-account instances, first time
# chat.login("nat", "a long password")
print(chat.session is not None, chat.user, chat.scopes)
chat.logout() # POST /api/v1/auth/logout and forget the session
Both flows return {"session","user"}. A session is 32 random bytes, valid for 30 days from last use, and is revocable. Send it as Authorization: Bearer SESSION. A user looks like {"id":"v:123","kind":"velora","username":"nat","display_name":"nat","pfp":null,"velora_id":"123"}. Ids carry their kind: v: for Nookara accounts, l: for local accounts and b: for bots (a bot's user object also has bot:true and, for gallery bots, verified:true). GET /api/v1/me returns {user, instance_admin, instance_owner, scopes}.
The ticket is an EdDSA JWT signed with Nookara's key (/.well-known/bonfire/jwks.json). Its claims are iss (Nookara), sub (your Nookara id, a string), aud (the normalized instance address), iat/exp (ten minutes), a one-time jti, username, display_name, pfp and scp, the instance scopes the person allowed (chat, voice, media, sign). The instance checks signature, issuer, audience, expiry and that the jti was never seen, then keeps the scopes on the session. Without chat it answers 403 insufficient_scope. Errors from the instance: 401 invalid_token, unknown_kid, invalid_signature, invalid_issuer, invalid_audience, token_expired or token_replayed; 400 wrong_accounts_mode; 403 banned; 502 velora_unreachable. While Nookara is in maintenance, POST /bonfire/instance-token answers 503 maintenance, so new sign-ins wait; open sessions keep working.
Your server list and the official server
The Ember servers a person has joined are saved on their Nookara account so the list follows them between devices: GET and PUT /bonfire/instances (Chat). An entry is {url, position, added_at, muted, push, auto_join}, at most 100, always normalized addresses. Adding an address is how you "join" a server in the apps; the community is then joined with POST /servers/:sid/join or an invite on the instance itself. PATCH /bonfire/instances/prefs {url, muted?, push?} controls push for offline mentions: an instance may only push to people who have its address in their list with push on and muted off.
Every account gets the official server (default_instance, currently https://chat.ikelene.net) added once, at sign-up or on the first read of the list. auto_join is true on that entry until a client has joined the community and confirmed it with POST /bonfire/instances/default-joined {url?}, so it happens once per account across devices. Removing the server later sticks. The public directory (GET /bonfire/directory?q=&page=) lists instances that chose to be listed.
Instance REST
The routes use the same paths and the same JSON shapes the old Nookara chat used, with /chat replaced by /api/v1. People are identified by the principal id (v:123), where the old routes used usernames. All errors are {"error":"snake_code", ...} with a fitting status; every route sends open CORS headers and there are no cookies. The Python names follow the path: get_api_v1_servers_by_sid, post_api_v1_channels_by_cid_messages and so on, and Instance adds friendlier helpers.
| Area | Routes | Python helpers |
|---|---|---|
| Community | GET/POST /servers, GET/PATCH/DELETE /servers/:sid, POST /servers/:sid/join and /leave, GET /discover | servers() / joined_communities(), server(), update_community(), join(), leave() |
| Invites and requests | GET /invite/:code (public), POST /join/:code, GET/POST /servers/:sid/invites, DELETE /invites/:code, GET /servers/:sid/requests, POST .../requests/:uid/accept and /deny | join_invite(), invite_info(), invites(), create_invite(), join_requests() |
| Channels | POST /servers/:sid/channels, PATCH/DELETE /channels/:cid, PUT /channels/:cid/perms, PUT /servers/:sid/layout | channels(), channel_id("#general"), create_channel(), set_channel_permissions() |
| Messages | GET/POST /channels/:cid/messages, PATCH/DELETE /messages/:id, PUT/DELETE /messages/:id/reactions/:emoji, PUT/DELETE /messages/:id/pin, GET /channels/:cid/pins, GET /channels/:cid/search?q= and /servers/:sid/search?q=, POST /channels/:cid/read | messages(), send_message(), edit_message(), delete_message(), react(), pin(), search(), mark_read() |
| Members and roles | GET /servers/:sid/members, DELETE /servers/:sid/members/:uid (?ban=1), GET /servers/:sid/bans, DELETE /servers/:sid/bans/:uid, roles under /servers/:sid/roles, PUT/DELETE /servers/:sid/members/:uid/roles/:rid | members(), kick(), bans(), create_role(), assign_role() |
| People | GET /identities?ids= (principal ids to user objects), GET/PATCH /settings, GET /notify, PUT /notify/:target | identities(), user_settings(), set_notify() |
| Emoji and sounds | /emojis, /servers/:sid/emojis, /servers/:sid/sounds, GET /sounds | emojis() |
| Uploads | POST /media/upload?sid=SID&cid=CID (multipart file), POST /media/import?sid=SID&cid=CID ({url}) | upload(), import_media() |
| Webhooks | GET/POST /channels/:cid/webhooks, PATCH/DELETE /hooks/:wid; execute at /webhooks/:wid/:token | webhooks(), create_webhook(), execute_webhook() |
| Bots | /bots, /bots/by-name/:username/add, /bots/:id/token, POST /bots/gallery/add | bots(), create_bot(), add_bot(), add_gallery_bot() |
| Link previews, shop, starboard | GET /unfurl?url=, /channels/:cid/shop, /channels/:cid/starboard, /yt/:id/* | named methods |
| Moderation and server settings | GET/PATCH /servers/:sid/settings, /servers/:sid/reports, /servers/:sid/timeouts, GET /servers/:sid/audit and /dashboard | server_settings(), update_server_settings(), report(), reports(), time_out(), remove_timeout(), audit_log(), dashboard(); see Server settings and moderation |
| Administration | /instance/*, /bridge/*, /game/*, import and export | see Instance administration |
Joining, invites and requests
- The community has a
join_policy:openorrequest. POST/servers/:sid/joinfollows it: withrequestthe answer is{"pending":true}(the same on a second call) until someone with Kick or Manage server accepts. People on the ban list cannot join. - An invite code always admits you, even when the policy is
request. That is the "anyone with the link" path: POST/join/:codewith no body. GET/invite/:codeis public and previews the community. - Manage server can GET/POST
/servers/:sid/invites({expires_in?: seconds, max_uses?: int}) and DELETE/invites/:code. Invites are{code, created_by, created_at, expires_at, max_uses, uses}. Every community also keeps one legacy permanentinvite_code; PATCH{new_invite:true}regenerates it. - Open an invite in the Ember web app with
https://nookara.cc/chat#/i/ENCODED_ORIGIN/invite/CODE, where the instance address is URL-encoded (https%3A%2F%2Fchat.example.com). That is also the link a listed server puts in the directory. - Pending requests: GET
/servers/:sid/requestsreturns{requests:[{user, message, created_at}]}; the gateway sendschat_join_requestto people who can accept andchat_join_resultto the requester. On a Nookara-hosted server a full community answers403 member_cap_reachedwithcap.
Server settings and moderation
bonfire-server only (PROTOCOL section 6.4). These are the pages under Server settings in Ember: Dashboard, Joining, Message rules, Reports, AutoMod, Audit log and Uploads.
- Settings: GET and PATCH
/servers/:sid/settings(Manage server). PATCH takes any ofjoin_policy,join_passwordand the sectionsjoin(allowlist,max_members,default_roles),messages(max_length,search_results,max_reactions,link_previews),automod(blocked words,timeout_seconds,exempt_roles, spam limits),audit(enabled, retention) anduploads(per_minute,files_per_member,types,expire_days,never_expire_roles,storage_mb, image compression). A section only changes the keys you send, and nothing is saved unless every value is valid. The answer is{settings}, which also carriesplan(a hosted plan's caps, elsenull). - Joining:
join_policycan also bepassword(POST/servers/:sid/join {password}, elsepassword_required/wrong_password),allowlist(not_on_allowlist) orinvite(invite_only). A full server answersserver_full {cap}. - Reports: any member can POST
/servers/:sid/reports {message_id | user_id, reason?}. Kick, Ban, Manage messages or Manage server can GET/servers/:sid/reports?status=open|resolved|dismissed&before=({reports, open, has_more}) and PATCH/servers/:sid/reports/:id {status, note?}. Moderators get gatewaychat_report. Reports that break Nookara's rules go to Nookara instead (/api/report/submit). - Timeouts: Kick or Ban can POST
/servers/:sid/timeouts {user_id, seconds, reason?}(1 second up to 28 days, never the owner or someone as high as you) and get{until}; GET lists them and DELETE/servers/:sid/timeouts/:uidlifts one. A timed-out member can't post, react (403 timed_out {until}), join voice or play sounds, and gets gatewaychat_timeout {server, until, reason?}. Server and member views carrytimeout_until. - Audit log: GET
/servers/:sid/audit?category=&action=&before=&limit=(Manage server, Kick or Ban) returns{entries, has_more, actions, categories}. - Dashboard: GET
/servers/:sid/dashboard(Manage server) returns counts, storage use, health and channel activity.
chat.update_server_settings(join_policy="password", join_password="campfire",
automod={"words_enabled": True, "words": ["spoiler"], "timeout_seconds": 300})
chat.time_out("v:42", 3600, reason="cool off")
for report in chat.reports()["reports"]:
chat.set_report_status(report["id"], "resolved", note="handled")
print(chat.audit_log(category="user_moderation")["entries"][:5])
Common payloads
| Action | Route | JSON body |
|---|---|---|
| Create the community (once, owner or admin) | POST /api/v1/servers | {"name":"My server","description":""}. A second one answers 409 community_exists |
| Create channel | POST /api/v1/servers/:sid/channels | {"name":"general","type":"text","topic":"","category":"General"} |
| Edit message | PATCH /api/v1/messages/:id | {"message":"Edited text"} |
| Reply | POST /api/v1/channels/:cid/messages | {"message":"Reply text","reply_to":"MESSAGE_ID"} |
| Post as an alias (bots only) | POST /bot/v1/channels/:cid/messages | {"content":"Hi","alias":{"name":"Narrator","avatar_url":"https://example.com/n.png"}}. See Bot aliases |
| Mark read | POST /api/v1/channels/:cid/read | {"message_id":"LAST_MESSAGE_ID"} |
| Reorder sidebar | PUT /api/v1/servers/:sid/layout | {"categories":["General"],"channels":[{"cid":"CHANNEL_ID","category":"General"}]} |
| Invite join | POST /api/v1/join/:code | No body |
Message text is limited to 4000 characters, and line breaks are stored as \n. History returns {"channel":{...},"messages":[...],"has_more":true} in chronological order. limit defaults to 50 and clamps to 1 through 100. Use the oldest message ID as before for earlier pages, or after for catch-up. Dedupe by message ID when combining REST history with realtime events.
{
"id": "123", "channel": "c0123456789", "server": "s0123456789",
"body": "Hello!", "author": {"id": "v:123", "username": "example", "velora_id": "123"},
"attachments": [], "system": false, "pinned": false,
"reply_to": null, "reply": null, "created_at": 1791660000000, "edited_at": null,
"signature": null, "verified": null, "alias": null
}
This is a shortened illustrative message. Server-message timestamps are Unix milliseconds. A system message has author:null and welcome, leave and pin notices add subject and body_parts (see identity updates below). Webhooks, bridges, replies, embeds, reactions and mentions add fields. A webhook or bridged author is {id:null, name_only:true, webhook:true, username, pfp, bridge?}.
Channel types and config
| Type | Config | Behavior |
|---|---|---|
| text | {} | Ordinary conversation |
| logs | {} | Webhook logs; posting rules differ from text |
| logs (CloudLink bridge) | {"mode":"cloudlink","url":"wss://ikelene.net/cl/","room":"","username":""} | Bridges a CloudLink chat both ways. Members post like in a text channel. See CloudLink bridges below |
| welcome | {"allow_chat":false,"join":["Welcome {user}!"],"leave":["{user} left"]} | Templates also support {server} and {count} |
| link | {"url":"https://example.com"} | Display a destination and ask before opening it |
| voice | {"user_limit":0,"allow_call_in":false} | Zero means no configured member limit |
| roles | {"items":[{"rid":"ROLE_ID","price":0,"desc":"Member role"}]} | Role shop, with hierarchy checks. Priced roles are paid with Nookara credits (below) |
| game | {"game":"minecraft","instance":"g0123456789abcdef","purpose":"info","show_players":true} | Live card for a linked game server. See the Game servers guide |
| starboard | {"watch":[],"min":3} | Empty watch means all eligible channels; threshold 1 through 100 |
Update channel properties with PATCH /api/v1/channels/:cid. Non-message channel types cannot all accept ordinary posts. Use returned can_post for UI affordances, while treating the server's authorization result as final. Paid roles: for a priced role you have not bought, POST /channels/:cid/shop/:rid returns {pending:true, pay_request:{id, approve_url, amount, expires_at}}. The person opens approve_url on Nookara (Pay or Cancel, with the CAPTCHA); poll GET /channels/:cid/shop/:rid/status until paid. Local accounts cannot pay (402 velora_required); the instance owner is paid when their Nookara account is linked.
CloudLink bridges
A logs channel whose config has "mode":"cloudlink" is joined by the instance to a CloudLink 4 WebSocket server (default wss://ikelene.net/cl/, the ScratchCord global chat). Create or switch one with POST /api/v1/servers/:sid/channels or PATCH /api/v1/channels/:cid and a config like the one in the table. It needs Manage channels. A server can have up to 3. The URL must be ws: or wss: on port 80 or 443, and the instance refuses private, LAN and loopback addresses, also after DNS. room is optional (empty = the main chat); username is optional and makes the bridge visible in CloudLink's user list (a room needs one, so it defaults to Ember). The public config also has official (true for the official server).
Messages from CloudLink arrive as bridged messages: author is {"username":"Name","pfp":...,"webhook":true,"bridge":"cloudlink"}, with bridge_from set to Discord, Fluxer or Ember when the line came through one of those bridges first. Mentions in them never ping (every @ gets a zero-width space). Inbound messages are rate limited per channel (8 per 10 seconds, 40 per minute); skipped ones produce one system message with sys_kind cl_skip per minute. What members write goes to CloudLink as {"cmd":"gmsg","val":"Ember | name: text"}. Webhook, bot-bridge and system messages are not forwarded. Sending !online in the channel posts the CloudLink user list instead of forwarding it.
GET /api/v1/channels/:cid/cloudlink returns {"status":{"state","error","since","retry_at","online","users","last_in","last_out","skipped","url","room","username","official"}}; state is connecting, handshaking, connected, waiting (reconnecting with backoff, error says why) or off. POST /api/v1/channels/:cid/cloudlink/reconnect reconnects now. Both need Manage channels. Discord and Fluxer bridges are described under Instance administration.
Uploads and media import
Uploads need the media instance scope (the person's Upload Media permission, 4096) and the community's allow_uploads setting. Both calls take sid (required) and optionally cid in the query; with cid the channel's Attach permission is checked, and sending an attachment checks it again.
- POST
/api/v1/media/upload?sid=SID&cid=CIDwith multipart fieldfile. - POST
/api/v1/media/import?sid=SID&cid=CIDwith JSON{url, name?}makes the instance fetch a file for you, for saved media that lives elsewhere. Only https URLs without credentials (4096 characters at most) are accepted; the fetcher pins public DNS answers, rechecks redirects, ports and private addresses, forwards no cookies or headers, and limits size and time. Errors:invalid_media_url,media_import_failed(422),file_too_large(413 withmax_mb).
{ "url": "https://INSTANCE/uploads/2026/10/abc.png", "name": "cat.png", "size": 123, "mime": "image/png",
"type": "image", "sha256": "HEX", "width": 640, "height": 480 }
Pass that object (up to 10) in a message's attachments. The instance only accepts its own /uploads/ URLs and Klipy GIF links. type is image, gif, video, audio or file. sha256 is the hash of the stored bytes (JPEG EXIF is stripped before hashing), which is what a signed message commits to. The size limit for a member is min(instance ceiling, plan ceiling, the larger of the community default and their roles' limits); GET /servers/:sid returns upload_max_mb (the default), my_upload_max_mb (yours) and upload_ceiling_mb. Roles take upload_max_mb (1 to 500 or null). Too large answers 413 {"error":"file_too_large","max_mb":N}. Files are served immutable with nosniff, and non-media types as downloads.
Quick start: read a channel
import os
from velora_api import Client, Instance
velora = Client(os.environ["VELORA_TOKEN"]) # needs Chat (2048)
chat = Instance("https://chat.ikelene.net")
chat.login_with_velora(velora)
channel = chat.channel_id("#general") # a name or a cid
history = chat.messages(channel, limit=50)
for message in history["messages"]:
author = (message.get("author") or {}).get("username", "system")
print(author + ":", message["body"])
Joining is automatic in the Ember apps. From code, call chat.join() once. On a community with join_policy: "request" the answer is {"pending": true} until a moderator accepts you. To see every community across the whole saved list, use Ember(velora).communities(); servers that are down, local-account only or where Chat was declined are reported per entry instead of failing the rest.
Bots: instance bots and Nookara developer bots
There are two kinds of bot and they can work together.
| Instance bot | Nookara developer bot (gallery) | |
|---|---|---|
| Lives | On one instance. A principal b:N, a normal member, no login, no DMs | On your Nookara account (/chat/bots). Each instance creates a local bot account for it |
| Created with | Server settings, Bots, or chat.create_bot("pingbot", "Answers !ping") (Manage server). Returns {bot, token} once | POST /chat/bots or Ember settings; list it in the gallery so others can add it |
| Token | Instance-only: base64url(N).40 random characters. POST /bots/:id/token replaces it | One token for every instance. The instance keeps only its hash, which Nookara hands over in the add ticket |
| Added to a community with | POST /bots/by-name/:username/add {sid} (Manage server), roles and channel permissions then apply | A single-use ticket: POST /bonfire/bots/gallery/:id/ticket then POST INSTANCE/api/v1/bots/gallery/add (see Bot gallery) |
| Managed by | The instance's Manage server people | Nookara: renaming, avatar and token changes on the instance answer 403 gallery_bot_managed. Managers can still kick or remove it |
import asyncio
import os
from velora_api import Instance
bot = Instance("https://chat.ikelene.net", bot_token=os.environ["BONFIRE_BOT_TOKEN"])
async def main():
async with bot.bot_gateway() as gateway:
async for event in gateway: # {"type", "data", "seq"}
if event["type"] == "MESSAGE_CREATE":
message = event["data"]
if message["content"].strip() == "!ping" and not message["author"].get("bot"):
await asyncio.to_thread(bot.bot_send, message["channel_id"], "pong")
asyncio.run(main())
Bot REST is Discord-style under /bot/v1 (discover it at GET /bot/discovery): numeric ids serialized as strings, content instead of message, errors shaped like {"message","code"}, and 150 requests per 10 seconds per bot. Routes include /users/@me, /users/@me/guilds, /guilds/:gid/channels, /guilds/:gid/members, /channels/:cid/messages (GET, POST, PATCH, DELETE), reactions and pins. The Python names start with bot_v1, for example get_bot_v1_guilds_by_gid_channels. The compatibility surface is a subset of Discord's, not a promise that every Discord library works unchanged. A bot posts as a member: it needs Send in the channel and obeys locked and no-chat channels. A bot only receives events for channels it can see.
Slash commands work like Discord's application commands. A bot registers them with PUT /bot/v1/applications/@me/commands (global) or /bot/v1/applications/@me/guilds/:gid/commands (one server): type 1 slash commands with options, subcommands, choices and autocomplete, type 2 user menu commands and type 3 message menu commands. Members type / to pick from a list that shows the bot each command comes from, or right click a message or member and open Bots. A run arrives on the bot gateway as INTERACTION_CREATE and the bot has three seconds to answer with POST /bot/v1/interactions/:id/:token/callback: type 4 reply, 5 deferred reply, 6 deferred update, 7 update message, 8 autocomplete choices or 9 modal. Followups, edits and deletes go through /bot/v1/webhooks/:app/:token for 15 minutes. Flag 64 makes a reply ephemeral, so only the person who ran the command sees it and it is never stored. Replies can carry buttons, select menus and embeds, and modals take text inputs. Server owners choose which roles can use each command in Server settings > Bots, or a bot can set that for its own commands with the guild command permissions routes. Python: Instance.bot_set_commands(), bot_interaction_respond() and bot_followup(), with on("INTERACTION_CREATE", ...) on the bot gateway.
A bot added from the gallery runs on many instances with one token, so its program needs one connection per instance. Ask Nookara where it is installed: GET /bonfire/bots/self/installs with Authorization: Bot TOKEN returns {"instances":[{origin, name, test, added_at, seen_at}]}. Open one /bot/gateway per origin, ignore test installs unless you are the reviewer, and poll again every few minutes for new and removed installs. velora_api.BotProgram does exactly this.
Quick start: a webhook
Webhooks post into one channel without any account. Make one with chat.create_webhook(cid, "Scores") (Manage channels; text and logs channels, 30 per community) or in the channel settings. The URL has the form https://INSTANCE/api/v1/webhooks/WID/TOKEN and the token in it is the key, so treat the whole URL as a secret. PATCH /hooks/:wid renames it, moves it to another channel (channel) or rotates the secret (new_token:true).
from velora_api import execute_webhook
execute_webhook("https://chat.ikelene.net/api/v1/webhooks/WID/TOKEN", "Build finished",
username="Build service")
The body is Discord's: {content, username, avatar_url, embeds} as JSON (up to 10 embeds), or multipart with payload_json and files (files[0], ...; an embed image can say attachment://name). ?wait=true returns the posted message, otherwise success is an empty 204. The limit is 30 posts per minute per webhook (429 with retry_after). GET on the URL returns its info and DELETE removes it. Webhook messages show a name only (author.webhook), are never signed and do not ping people who are offline. Webhook errors use Discord's {message, code} shape.
The instance gateway
Connect a websocket to wss://INSTANCE/gateway and keep to this order:
- Send
{"type":"auth","session":"SESSION"}within 10 seconds. - Wait for
{"type":"auth_success","user":{...},"instance_admin":false,"instance_owner":false}. A bad session closes the socket with code 4001. - Send
{"type":"chat_hello"}and wait for{"type":"chat_ready"}. Community events start now. - Send
{"type":"ping"}every 25 seconds. The reply ispong, and a socket idle for 60 seconds is dropped.
Client frames: chat_send {nonce, channel, message, reply_to?, attachments?, signature?} (answered by chat_ack {nonce, message} or chat_error {nonce, error}), chat_typing {channel}, chat_read {channel, message_id}, the voice frames (chat_rtc_* and voice_sound, which need the voice scope). Events you receive include chat_message, chat_message_update, chat_message_delete, chat_reactions, chat_pins_update, chat_typing, chat_channels_update, chat_member_update, chat_members_stale, chat_emojis_update, chat_server_update, chat_roles_update, chat_perms_changed, chat_mention, chat_starboard, chat_identity_update, user_update, chat_join_request, chat_join_result, chat_server_added, chat_server_removed, chat_shop_update, chat_voice_state, chat_ephemeral, the Ember Link events (game_status, game_console, game_linked, game_unlinked), instance_update and instance_restarting. Events reach a member only when they can see the channel. Presence of people is not relayed by instances; it comes from your Nookara socket. The exception is bots: chat_presence (below) reports whether a bot is online. Voice rooms are named bf_ plus the channel id and use the same frames as Voice and video signaling; direct-message calls stay on Nookara.
| Close code | Meaning | Do this |
|---|---|---|
| 4001 | Invalid or expired session | Sign in again; do not loop |
| 4003 | Banned from the instance | Stop |
| 4008 | Rate limited | Back off, then reconnect |
| 4010 | Instance restarting or restoring a backup | Reconnect; refetch server detail and discard cached ids after a restore |
import asyncio
from velora_api import APIError
async def main():
chat.login_with_velora(velora)
async with chat.gateway() as gateway: # waits for chat_ready
async for event in gateway:
if event["type"] == "chat_message":
print(event["message"]["author"]["username"], event["message"]["body"])
elif event["type"] == "gateway_ready": # emitted after every (re)connect: refetch history now
pass
# or register callbacks and call: await gateway.run()
# await gateway.send_message(channel, "hi") waits for the chat_ack and returns the message
asyncio.run(main())
The Python gateway authenticates before anything else, reconnects by itself with capped exponential backoff and jitter (1 second growing to 30), sends the ping, fails pending requests when the socket drops, and stops with an APIError on close codes 4001 and 4003. It also yields gateway_disconnected and gateway_ready markers. There is no replay: after a reconnect, refetch history over REST and dedupe messages by id.
Signed messages
Signing is optional and only works for Nookara-login instances. Every community accepts signed messages, none can require them, and unsigned messages are always accepted. It lets anyone check that a message really came from an account, independent of the instance. Every Nookara account has one Ed25519 signing key shared by all its apps. The private half is stored encrypted by Nookara and handed only to a token that holds Sign Messages (32768), which is off by default on the approval screen, so expect people to decline it and keep sending unsigned messages when they do.
- GET
/bonfire/signing-keyon Nookara returns{kid, public_key, private_key, created_at}. Keep it in memory and never write it down. - Build the payload
{v:1, iss, instance, community, channel, author, ts, nonce, body, attachments, reply_to, edit_of}:issis Nookara's address,instancethe normalized instance address,communitythe sid,channelthe cid,authoryour Nookara id as a string,tsthe time in milliseconds,nonce16 random bytes in base64url,bodythe exact text (line breaks as\n), andattachmentsthe sha256 of each uploaded file (url:URLfor a link-only Klipy GIF). - Sign the UTF-8 bytes of
"bonfire-msg-v1\n"followed by the canonical JSON of the payload (keys sorted recursively, no whitespace, integers only). The result goes insignature: {kid, sig, ts, nonce}on the message (or on a PATCH edit, withedit_ofset to the message id). - The instance fetches the key from
/bonfire/keys/kid/:kid, checks the owner, that the key was not revoked beforets, thattsis within five minutes, and the signature. A failure is400 bad_signaturewith areason; a signature from a session without thesignscope is403 insufficient_scopeand a local-account session gets400 signing_unavailable. Messages come back withsignatureandverified: true,falseornull(unsigned). Bots, webhooks and system messages never carry signatures. Editing without a signature clears it.
velora = Client(os.environ["VELORA_TOKEN"]) # Chat 2048, plus Sign Messages 32768 if allowed
chat = Instance("https://chat.ikelene.net")
chat.login_with_velora(velora, sign="auto") # signs only when the person allowed it
sent = chat.send_message(chat.channel_id("general"), "Signed from Python")
print(sent["message"]["verified"]) # True
ok, reason = chat.verify_message(sent["message"]) # check it yourself against Nookara's public key
chat.send_message(chat.channel_id("general"), "No signature on this one", sign=False)
Verify for yourself instead of trusting the verified flag. Rebuild the payload from the message (server, channel, author.velora_id, signature.ts and nonce, body, the attachment hashes, reply_to, and edit_of = the message id when it was edited and still carries a signature), fetch the public key from the public route GET /bonfire/keys/kid/:kid, require that user_id equals the author and that revoked_at is null or not earlier than ts, then check the Ed25519 signature. Signing needs the optional extra: python -m pip install "velora-api-client[signing]" (the cryptography package). Without it everything else works and sign=True raises ImportError. Rotating the key (POST /bonfire/signing-key/rotate, website session only) does not invalidate old messages. A signing failure after a rotation is solved by fetching the key again, which enable_signing(velora) does.
Names and pictures stay current
Nookara members' names and pictures follow their Nookara profile. The instance refreshes them from GET /bonfire/profiles?ids=1,2,3 and sends chat_identity_update {user, previous_username} to every community the person is in. Patch every cached author, reply, mention and member whose id equals user.id. Welcome, leave and pin notices carry subject: {id, username} and body_parts so a rename updates old lines without rewriting history; a deleted subject shows as "Deleted account". After a reconnect, resolve ids you do not know with GET /api/v1/identities?ids=v:1,b:2. Nookara's own equivalent is GET /chat/identities?ids= (Chat, up to 200 ids).
Live profile changes: when someone changes their picture, banner, colour, pronouns, bio, website, country or username, Nookara sends user_update {user, changed, previous_username?, v} on the home socket (user = {id, username, display_name, pfp_url, pfp_animated, banner_url, banner_animated, color, rank, pronouns, bio, website, country_code, bot?}; changed lists what moved, e.g. ["pfp"]). It goes to the person's own sessions, their friends, people they have a DM or group chat with and members of the same Nookara-hosted servers, never to anyone blocked either way. Friends-only profiles send everyone who is not a friend only {id, username, display_name, pfp_url, pfp_animated, color, rank, limited: true}. Rapid edits arrive as one event. Patch every cached copy of user.id (members, authors, friends, DM list). Pictures get a new URL on every upload; if the URL is the same as before, add ?v=<v> to bypass the cache. For members of instance servers (v:<id>) the instance still refreshes its own copy on its normal schedule, so apply user_update to those too.
Read-only servers
When a hosted server's paid time runs out, or a legacy server has moved, every write answers 403 {"error":"read_only"} (instances) or server_read_only with moved_to (legacy Nookara servers). Signing in and every GET still work, including exports. Show a banner and hide write controls; discovery reports read_only: true.
What Nookara adds for Ember
| Nookara route | Use | Python |
|---|---|---|
POST /bonfire/instance-token (Chat) | Short ticket for one instance | velora.instance_token(url) |
GET /.well-known/bonfire/jwks.json (public) | Nookara's identity keys | bonfire_jwks() |
GET /bonfire/signing-key (Sign Messages) | Your account signing key | velora.signing_key() |
GET /bonfire/keys/kid/:kid, /bonfire/keys/user/:userId (public) | Public keys to verify signatures | bonfire_key(kid), bonfire_user_keys(id) |
GET/PUT /bonfire/instances, PATCH .../prefs, POST .../default-joined (Chat) | The server list that follows your account across devices, plus per-server mute and push, and the official-server auto-join | bonfire_instances(), set_bonfire_instances(urls), sync_bonfire_instances(urls), bonfire_instance_prefs(), bonfire_default_joined() |
GET /bonfire/directory?q=&page= (public) | Search servers that chose to be listed | bonfire_directory(q) |
GET /bonfire/profiles?ids= (public) | Current names and pictures | bonfire_profiles(ids) |
GET /bonfire/scopes.json (public), GET /bonfire/session | What the apps ask for; what a token got | bonfire_scopes(), granted_scopes() |
GET /bonfire/server-latest.json (public) | The official server build | server_latest() |
GET /bonfire/bots/gallery and the ticket route | Bot gallery | see Bot gallery |
/bonfire/import/* (Chat) | Prepare a Discord or Fluxer server bundle for a new instance | start_bonfire_import() |
/bonfire/hosting/* | Hosting, see below | hosting helpers |
Direct messages, groups, friends, push, credits and presence stay on Nookara and are unchanged. Instances forward offline mentions to Nookara push for people with Nookara accounts; push needs the per-server consent in the instance list.
Hosting, plans and backups
Nookara can run an Ember server for you at https://SLUG-bonfire.ikelene.net. It is an ordinary instance (Nookara accounts, one community) started in managed mode, so everything in the Ember section applies. Nookara keeps no session on it: you sign in there and create the community yourself.
| Starter | Plus | |
|---|---|---|
| Price | Free, one per account | Nookara Pro's weekly credit price per week, prepaid. Free while you have Nookara Pro |
| Members | 30 | Unlimited |
| Voice per month | 3,000 participant-minutes | 30,000 |
| Upload size | 10 MB | 250 MB |
| Emoji, sounds, bots | 50, 10, 2 | Unlimited |
| Discord, Fluxer and CloudLink bridges | No | Yes |
| Own Cloudflare voice keys | No | Yes |
GET /bonfire/hosting/plans is public and returns the live numbers (null means unlimited), so read it instead of hard-coding this table.
What happens when time runs out
Plus never renews by itself. Weeks are bought in advance (1 to 52). When the paid time ends:
- Overdue for 2 days: the server keeps working normally.
- Read-only for the next 7 days: nobody can post or change anything, but members can still sign in and read. Buying weeks switches writing back on at once.
- Archived: Nookara saves a backup of the community, then removes the server and frees its container. The name stays yours for 30 days, and you can restore the backup into a new server.
Owners are notified two days before the end, and at each step. Starter servers never expire. With Nookara Pro, Plus is covered for free: remaining paid time is banked while Pro lasts and resumes afterwards (no saved time means overdue right away). Account backups are kept for 180 days, 10 per account.
Hosting routes
All need a Nookara token. Buying weeks needs Spend Credits (1024); the rest need Chat Messaging (2048). A person who declined either scope gets insufficient_scope. The server object has slug, url, name, plan, status (provisioning, running, stopped, suspended, deleted, error), billing (pro, active, overdue, read_only, archived), paid_until, read_only_at, archive_at and voice usage.
| Route | What it does | Python |
|---|---|---|
GET /bonfire/hosting/plans | Plans, limits, URL template (public) | hosting_plans() |
GET /bonfire/hosting/slug/:slug | {available, reason?}: invalid, reserved or taken | hosting_slug_available(slug) |
POST /bonfire/hosting/servers {slug,name,plan,weeks?,restore_backup?} | Create. Returns {server,url,charged}. The URL joins your instance list | create_hosting_server(slug, name, plan, weeks=) |
GET /bonfire/hosting/servers | Your servers and whether you have Pro | hosting_servers() |
POST /bonfire/hosting/servers/:slug/weeks {weeks} | Buy weeks, upgrade Starter to Plus, or leave read-only | buy_hosting_weeks(slug, weeks) |
PATCH /bonfire/hosting/servers/:slug {plan:"starter"} | Drop to the free plan now, with no refund | set_hosting_plan(slug) |
POST /bonfire/hosting/servers/:slug/restart, /backup | Restart, or take a backup now | restart_hosting_server(), backup_hosting_server() |
DELETE /bonfire/hosting/servers/:slug {confirm:slug} | Back up, then remove | delete_hosting_server(slug) |
GET /bonfire/hosting/backups, GET .../backups/:id/download, DELETE .../backups/:id | Your saved backups (reason: archived, manual, deleted or uploaded) | hosting_backups(), download_hosting_backup(id), delete_hosting_backup(id) |
POST /bonfire/hosting/backups/upload (multipart file, name, url, slug?; up to 500 MB) | Save an instance backup to your account | upload_hosting_backup(path, name, url) |
Errors you will see: slug_taken (409), slug_reserved, invalid_slug, starter_limit_reached, insufficient_balance with cost and balance, pro_covers (409, Plus is already free for you), use_weeks, backup_not_found and hosting_unavailable (503).
from velora_api import Client
velora = Client(token)
print(velora.hosting_plans()["plans"])
if velora.hosting_slug_available("camp")["available"]:
created = velora.create_hosting_server("camp", "Camp", "starter")
print(created["url"]) # https://camp-bonfire.ikelene.net
# Restoring an account backup into an existing server (owner session on the instance):
blob = velora.download_hosting_backup(backup_id)
open("restore.zip", "wb").write(blob)
chat = Instance(created["url"])
chat.login_with_velora(velora)
chat.restore_from_file("restore.zip")
To start a new server from a saved backup instead, pass restore_backup=ID when creating it; the instance imports it on first boot and members who sign in again get their roles back.
Instance administration and Nookara relays
For people who run an Ember server and for tools that manage one. Everything here uses an instance session (never a Nookara token) unless it says Nookara. Administration needs the instance admin or owner flag from GET /api/v1/me. Instance admins have no special power inside the community: they only manage the instance, and may delete the community. Roles decide the rest.
Claiming and settings
A fresh instance prints a setup code (XXXX-XXXX) on first boot. Someone signed in claims it with POST /api/v1/instance/claim {code} and becomes the owner and an admin; then the owner or an admin sets up the community once with POST /api/v1/servers or imports one. GET and PATCH /api/v1/instance/settings (admins) cover name, description, icon_url, registration (open/closed, local mode), max_upload_mb, max_backups, voice (Cloudflare keys, write-only), youtube, velora_registration (auto/off), listed and tags (up to 8, for the directory). accounts_mode, public_url and velora_url need a restart. POST /api/v1/instance/restart (admins) returns 202 and exits for the supervisor to start again. GET /api/v1/instance/update (admins) says whether the server can update itself and whether a newer build exists; POST /api/v1/instance/update asks the host agent to rebuild and recreate the container (only on servers started with BONFIRE_UPDATE_URL and BONFIRE_UPDATE_SECRET, never on Nookara-hosted ones). Ember shows this as Server settings, Danger zone, Update. GET/PUT/DELETE /api/v1/instance/admins[/:uid] (PUT and DELETE owner only) manage admins. Switching accounts_mode from velora to local answers 409 local_admin_required until a local account is an admin, so nobody is locked out; the owner makes one with POST /api/v1/instance/local-admin {username, password} (an instance admin with an admin role on the server; the settings list them in local_admins). POST /media/upload takes an optional expires_in_days.
Build, version and updates
Every instance reports the build it is running in discovery (build) and in GET /api/v1/instance/info: version, commit, commit_short, commit_date, built_at, dirty and a build_id. A server built by the release script has the commit baked in; a plain checkout reports nulls. With an admin session the same call adds runtime (Node version, uptime, platform), stats (members, channels, messages, uploads and their bytes, database size, bots, emoji, sounds; cached 30 seconds) and update: {outdated, latest, checked_at}, or null when it cannot tell. The comparison is against GET https://nookara.cc/bonfire/server-latest.json (public; {version, commit, commit_short, commit_date, built_at, build_id, dirty, message, published_at}), which the instance caches for an hour. outdated is true when the build ids differ and the published build is newer. Nookara-hosted servers are updated by the host, one at a time with a health check and rollback.
info = chat.instance_info()
print(info["version"], info["build"]["commit_short"])
print(chat.update_available()) # True / False for admins, None when unknown
print(velora.server_latest()["build_id"])
Backups, export and import
Every instance, self-hosted or hosted, can back up its community as a portable bonfire-export-v1 zip (settings, channels, roles, emoji, members, messages and files). Admins use an instance session, never a Nookara token.
backup = chat.create_backup("before the update") # POST /api/v1/instance/backups
for item in chat.backups(): # newest first: id, created_at, size, by, note
print(item["id"], item["size"], item["note"])
open("backup.zip", "wb").write(chat.download_backup(backup["id"]))
# Owner only: chat.restore_backup(backup["id"]) or chat.restore_from_file("backup.zip")
The instance keeps at most max_backups (10 by default, 1 to 50), oldest first. Restoring replaces the community inside one transaction after taking a safety backup first, then answers {ok, sid}, sends instance_restarting and closes gateway sockets with 4010. Ids are remapped, so reconnect and refetch. Errors: 404 backup_not_found, 403 owner_only, 409 no_community. The community owner can also GET /api/v1/servers/:sid/export and an admin can create the community from a zip with POST /api/v1/import (only while there is none). A Nookara-hosted instance refuses to change accounts_mode, public_url, velora_url and velora_registration (403 managed_setting).
Bringing a Discord or Fluxer server over. Nookara builds the bundle, the instance imports it. With your Nookara token (Chat): GET /bonfire/import/platforms, GET /bonfire/import/:platform/guilds and .../guilds/:gid (the preview), then POST /bonfire/import {platform, guild_id, channels, roles, options?, instance} returns {job_id, ticket, expires_at} and builds the zip in the background (one job per person; poll GET /bonfire/import/:job_id). The bundle holds channels with categories, per-role view/send/attach settings, roles, emoji, icon and banner, never members or messages. The ticket (bit_...) is a one-time secret bound to that instance; give it to POST /api/v1/import/velora {ticket} on the instance (admin, only while it has no community). Errors pass through with a message: ticket_invalid, ticket_wrong_instance, not_ready (retry), ticket_expired, velora_not_registered, velora_off.
What an instance asks Nookara for
Unless an admin sets velora_registration to off, an instance registers with Nookara (it proves control of its address with its own key) and then uses a few relays, all authenticated by the instance's key, never by a person's token. A local-account instance can use them too. Banned instances get 403 instance_banned everywhere, get no tickets and are not listed.
| Relay | What it does |
|---|---|
| Push (offline mentions) | An instance sends {user_id, kind, title, preview, url}; Nookara pushes only to people who have the server in their list with push on. Mentions are batched (one push per person and channel per 30 seconds) and held while the person is active somewhere else |
| Daily credits | Trusted instances (the official server and hosted ones) credit a person's first message of the day, the same once-a-day reward as elsewhere |
| Payments | Role shops use Nookara credits. The instance creates a pay request; the person approves it on Nookara (/payment/ID or POST /bonfire/pay-requests/:id/approve, which needs Spend Credits and the CAPTCHA); the instance checks a signed receipt offline. The owner is paid after linking their account (owner-attestation then POST /bonfire/instances/payout) |
| Voice broker | Instances without their own Cloudflare keys use Nookara's. Usage is metered per instance per month (the plan decides the cap: Starter 3,000 participant-minutes, Plus 30,000, trusted unlimited); admins see it in auth_success.voice_quota and instance_update and the instance answers voice_cap_reached at 100 percent |
| Directory | With listed on, the instance publishes name, description, icon, member count, tags and an invite link to the public directory |
| Bot gallery sync | Every 10 minutes: Nookara answers per gallery bot whether it is still valid, with fresh profile and token hash, and counts installs |
| Profiles | The public /bonfire/profiles route keeps member names and pictures current |
Bridges and extras
- Discord and Fluxer. The owner connects their own bot token per platform (PATCH
/api/v1/bridge/settings, admins; tokens are write-only). People with Manage server then link the community to one server per platform (PUT/api/v1/bridge/servers/:sid{platform, guild_id, automap?}) and individual channels (PUT/api/v1/bridge/servers/:sid/channels/:cid). Messages are mirrored both ways through a webhook named "Ember bridge"; nothing from a bridge pings anyone. GET/api/v1/bridge/platforms, GET/api/v1/bridge/:platform/guildsand GET/api/v1/bridge/servers/:sidshow the state. Not available on the Starter plan (403 plan_limit). - YouTube player. Optional, needs
yt-dlpon the server; discovery showsfeatures.youtube. POST/yt/:id/prepare, GET/yt/:id/status, POST/yt/:id/save(needs the media scope), signed stream links. - Link previews. GET
/unfurl?url=is fetched by the instance with an SSRF-safe fetcher (public addresses only, ports 80 and 443). - Maintenance. While Nookara is in maintenance,
/health, the JWKS and/bonfire/relay/*stay up, so instances keep working; new sign-in tickets wait (503 maintenance).
Managed (hosted) instances
Discovery's managed object is {plan, limits, host} on Nookara-hosted servers. Limits are enforced by the instance: member_cap_reached (with cap), plan_limit (with what: emojis, sounds, bots, bridges, custom_voice_keys and limit), upload size (file_too_large) and managed_setting. See Hosting, plans and backups.
Legacy Nookara-hosted chat
/chat/servers, /chat/channels, /chat/messages, /chat/invite, /chat/join, /chat/hooks, /chat/bridge, /chat/game and /chat/api routes, and the /chat/webhooks URLs) are legacy. A server that is marked read-only refuses new messages and changes: writes answer 403 {"error":"server_read_only","moved_to":...} where moved_to points to the Ember address that took over, when there is one. Reads, leaving and the owner's export still work, and a read-only server no longer auto-enrols accounts. Legacy servers that have moved_to set are left out of GET /chat/servers and /chat/discover. Build new work on Ember instances; the shapes are the same with an /api/v1 prefix and people are identified by principal ids (v:123) instead of usernames.| Old (Nookara) | Now (Ember instance) |
|---|---|
GET /chat/servers, /chat/servers/:sid | GET INSTANCE/api/v1/servers, /servers/:sid. One instance is one community |
/chat/channels/:cid/messages, /chat/messages/:id | /api/v1/channels/:cid/messages, /api/v1/messages/:id |
Nookara websocket chat_send and chat_* events | The instance gateway at wss://INSTANCE/gateway (auth with an instance session) |
/chat/invite/:code, /chat/join/:code | /api/v1/invite/:code, /api/v1/join/:code; invite links open at nookara.cc/chat#/i/ORIGIN/invite/CODE |
/chat/upload, /chat/media/upload for chat attachments | /api/v1/media/upload and /api/v1/media/import |
/chat/hooks, /chat/webhooks/:wid/:token | /api/v1/channels/:cid/webhooks, /api/v1/webhooks/:wid/:token |
/chat/api/v1 bot REST and gateway on Nookara | INSTANCE/bot/v1 and wss://INSTANCE/bot/gateway; gallery bots are added per instance |
/chat/bots/by-name/:username/add | POST INSTANCE/api/v1/bots/by-name/:username/add or the gallery ticket flow |
/chat/game/* | INSTANCE/api/v1/game/* (see Game servers) |
| Required scopes at sign-in | None: scopes are requested and optional (see Scopes) |
- GET
/chat/serversreturns{"servers":[...]}with an opaquesid, aread_onlyflag, andmoved_tofor servers that moved. - GET
/chat/servers/:sidreturnsserver,categories,roles,voiceand the visiblechannels. - Owners can save a legacy server with POST
/chat/servers/:sid/export-to-account(3 per hour; the zip lands in your account backups with reasonlegacy) or download it with GET/chat/servers/:sid/export(owner only), then import it into an instance (POST /api/v1/import) or a new hosted server (restore_backup).
Account-level chat features did not move: presence and activity (/chat/presence/*), /chat/settings, /chat/notify, /chat/identities, DM calls, GIF routes, the developer bot accounts (/chat/bots, used by the bot gallery) and modmail stay on Nookara and keep working. Direct messages are not part of Ember servers either: they are Nookara's Instant Messages (/im; /mail is an alias). The user websocket frames chat_* on Nookara's socket only concern legacy servers.
Game servers (Minecraft, Ember Link)
Ember Link connects a Minecraft server (Paper, Spigot, Fabric or a Velocity proxy running the Ember plugin) to an Ember server. A linked server appears in channels of the game type. On an Ember instance the routes are under INSTANCE/api/v1/game with the same shapes as the /chat/game routes written below; use the instance session instead of a Nookara token. The Nookara /chat/game routes are legacy and read-only. All routes need a session with the chat scope and obey the member and permission checks of the Ember server, except GET /game/downloads (public; an instance does not host plugin builds, so it returns empty values).
Linking
On an instance there are two ways, both started from the Minecraft server:
- Connect and pick. The server owner runs
bonfire server https://chat.example.comin the game console. The plugin keeps one outbound websocket towss://chat.example.com/game-gateway?v=1(no open ports needed) and prints a pairing tag such asABC-123. In the community, create a channel withtype: "game"(Manage channels; it starts "not set up" and is visible to managers only), then list waiting servers with GET/api/v1/game/connected(Manage server; filter withq,tag,page) and link one with POST/api/v1/game/connected/:iid/link{cid}. Pick the purpose (info,console,chat) in the channel config. - Claim code. POST
/api/v1/game/claimswith{"cid":"GAME_CHANNEL_CID"}returns{code, command, expires_at}(10 minutes, 10 per hour). Someone with console access runsbonfire link CODE. Poll GET/api/v1/game/claims/CODE, or wait for thegame_linkedevent on the instance gateway.
List linked servers with GET /api/v1/game/servers/SID/instances (Manage channels). Unlink with DELETE /api/v1/game/servers/SID/instances/IID (Manage server), or run bonfire unlink confirm on the game server. The legacy Nookara flow was GET /chat/game/unclaimed plus /chat/game/claims.
One Minecraft server can be linked to only one Ember community, and a community has a limit of 10 linked servers (too_many_instances). A server that stays unlinked and unseen for 30 days is forgotten.
Game channel config
| Field | Meaning |
|---|---|
game | Currently minecraft |
instance | The linked instance id (iid) |
purpose | info (live card), console (log and commands, visible to Manage server) or chat (synced chat and events). Several channels can share one instance |
setup, address | Setup state of the channel and the join address shown on the card |
events{} | Which game events (join, leave, death, advancement, switch, start, stop) are posted in a chat channel |
show_players, show_server_tag | Show the player list, or the backend server tag, on the card and in relayed messages |
instance_name, platform | Display name and software (paper, spigot, fabric, velocity) of the instance |
Status, console and audit
| Action | Route | Notes |
|---|---|---|
| Live status | GET /chat/game/channels/:cid/status | Returns instance, status, online, last_seen, connected and features. status has online, version, motd (segments), players (online, max, list), and optionally tps, uptime_s and backends |
| Console lines | GET /chat/game/channels/:cid/console?before=SEQ | Console channels only. Returns up to 200 lines (lines, has_more); use the lowest seq as before |
| Run a command | POST /chat/game/channels/:cid/console | Body {"command":"list"}. Manage server. Limited to 10 commands per 10 seconds, 1000 characters, leading slash removed. Returns ok, output and truncated, or ok:false with offline, console_disabled or timeout |
| Audit log | GET /chat/game/servers/:sid/audit?before=ID | Manage server. Links, unlinks and every command, including who ran it. Kept for 365 days |
| Downloads | GET /chat/game/downloads | Public. Latest plugin and mod files and the Modrinth link |
403 console_needs_bonfire on POST /chat/game/channels/:cid/console. An instance has no such rule: POST /api/v1/game/channels/:cid/console works for any session with the chat scope whose user has Manage server in the community (10 commands per 10 seconds, every command audited).Realtime events
These arrive on the instance gateway (wss://INSTANCE/gateway) after chat_hello, only for channels the user can see (a console channel's events reach Manage server only). The legacy Nookara socket sends the same frames for legacy servers.
| Event | Fields |
|---|---|
game_status | server, channel, instance, status, online, last_seen. One event per game channel of the instance |
game_console | server, channel, instance, lines. New or updated console lines |
game_linked | server, instance (the new instance view), claim, hint |
game_unlinked | server, instance |
Messages from Minecraft
Messages relayed from a game server have author.bridge: "minecraft" and author.webhook: true. When the source is a backend behind a proxy, author.bridge_from is its name. Event lines are system messages whose sys_kind is one of mc_join, mc_leave, mc_death, mc_adv, mc_switch, mc_start, mc_stop, mc_unlink or mc_skip.
for server in chat.game_connected()["instances"]: # servers waiting to be linked
print(server["iid"], server["pairing_tag"], server["motd"])
chat.game_link("g0123456789abcdef", cid="GAME_CHANNEL_CID")
card = chat.game_status("GAME_CHANNEL_CID")
print(card["online"], card["status"]["players"]["online"])
lines = chat.get_api_v1_game_channels_by_cid_console(cid="CONSOLE_CHANNEL_CID")["lines"]
Integration protocol (for plugin authors)
The Minecraft plugins talk to wss://INSTANCE/game-gateway?v=1, the instance they were pointed at with bonfire server URL (the old hard-coded wss://nookara.cc/chat/game-gateway is legacy). This is not a user or bot API and the Python library does not implement it. Each text frame is a JSON object {"op":"name","d":{...},"id":optional}, at most 64 KiB. Nookara sends hello with a nonce and a heartbeat interval; the plugin answers identify within 15 seconds with a signature made by its own key pair (the instance id is derived from that key), and Nookara replies ready. After that the plugin sends status snapshots, heartbeat, chat, event, console.log, console.result and console.command; Nookara sends config, chat, console.exec, link_result, linked, unlinked and error. Close codes 4003 (bad signature), 4004 (banned), 4005 (rate limited), 4006 (replaced), 4007 (unsupported version) and 4008 (IP limits) tell the plugin how to back off. Unlinked servers are purged after 30 days. A new game identity is trusted on first use: its Ed25519 key defines the instance id, and an address may register only 5 new ones per day.
Roles and channel permissions
Token scopes and chat role permissions are different bitfields. For example, role permission 1024 means View Channel; token scope 1024 means Currency Pay. Never use one mask as the other.
| Chat permission | Bit |
|---|---|
| Send messages | 1 |
| Manage channels | 2 |
| Manage server | 4 |
| Manage roles | 8 |
| Kick members | 16 |
| Ban members | 32 |
| Manage messages | 64 |
| Mention everyone | 128 |
| Attach files | 256 |
| Administrator | 512 |
| View channel (channel override) | 1024 |
The default everyone role permits Send + Attach (257). A server owner and Administrator have all server permissions. The official server also grants staff special moderation access. View (1024) is channel-level, rather than part of the server permission mask 1023.
On an Ember instance (members are identified by principal id such as v:123; the legacy Nookara /chat routes use usernames):
POST /api/v1/servers/SID/roles
{"name":"Reader","permissions":0,"color":"#c084fc","hoist":false,"mentionable":false}
PUT /api/v1/servers/SID/members/v:123/roles/RID
PUT /api/v1/channels/CID/perms
{"overwrites":[{"rid":"EVERYONE_ROLE_RID","allow":0,"deny":1024},
{"rid":"READER_ROLE_RID","allow":1024,"deny":1}]}
The overwrites endpoint takes the replacement list. Channel overrides affect View (1024), Send (1) and Attach (256). The server combines base roles, applies everyone deny/allow, then combines member-role denies and allows. Allow wins within the final combined role overrides. Owners/admins bypass overrides; Manage Channels users can see channels to repair settings. Other hierarchy checks still apply to role edits and moderation.
Instance administrators (the instance owner and admins) have no implicit power inside a community: only the community owner, Administrator roles and role permissions count. The one exception is that instance admins may delete the community, which returns the instance to setup.
Read roles and everyone-role identifiers from server details. Do not guess an ID or assume a user with a valid Chat token can manage a server.
User realtime protocol
wss://INSTANCE/gateway, see The instance gateway); the chat_* frames below only concern legacy Nookara-hosted servers.Connect a websocket to wss://nookara.cc/ and send UTF-8 JSON:
{"type":"auth_token","token":"YOUR_USER_TOKEN"}
// Wait for {"type":"auth_success", ...} before sending anything else.
{"type":"chat_hello"}
// Server replies {"type":"chat_ready","you":{...}}.
{"type":"chat_send","channel":"CHANNEL_CID","message":"Hello!","nonce":"unique-1"}
// Success: {"type":"chat_ack","nonce":"unique-1","message":{...}}
// Failure: {"type":"chat_error","nonce":"unique-1","request":"chat_send","error":"..."}
Comments above are explanatory and are not part of a JSON frame. Never send application commands merely because the TCP/websocket connection opened. Authentication is a separate asynchronous step. Check tos_required and granted scopes in auth_success.
| Client frame | Important fields | Result |
|---|---|---|
| chat_send | channel, message, nonce, optional server/reply_to/attachments | chat_ack or chat_error |
| chat_typing | channel, typing | Broadcast to other clients; no ack |
| chat_read | channel, id | Updates read state; no ack |
| chat_presence | username | presence_update with request=true |
| set_rich_presence | activity object | Presence broadcast; no ack |
| clear_rich_presence | None | Clears this socket's activity |
| set_custom_status | text | Saved custom status |
| im_send | to, message, nonce, optional reply_to, optional status_reply ({"text"}) | im_ack or im_error |
| dm_typing | to, typing | dm_typing for recipient |
| joinRoom | room | roomHistory; group membership checked |
| roomMessage | room, message, optional color | roomMessage broadcast |
| ping | None | pong |
REST DM sending uses message, while websocket im_send uses body. These are intentionally different wire formats. Send operations with a nonce are not automatically idempotent; the nonce correlates replies rather than deduplicating writes.
Important inbound events include chat_message, chat_message_update, chat_message_delete, chat_member_update, presence_update, im_received, im_sent, im_unread, notification_new, notifications_updated (see Notifications), group_update, group_removed, restrictions, game_status, game_console, game_linked, game_unlinked and voice/call events. See the exact observed type names and fields in the catalogue below.
Reconnect correctly
- Reconnect with bounded exponential backoff and jitter.
- Authenticate again and rejoin subscriptions/rooms.
- Refetch server state and unread/history using REST. Dedupe messages by ID.
- Restore your activity and negotiate voice again if the user still intends to join.
The user websocket has no durable sequence resume or message replay guarantee. Group room history and legacy global/room messages are held in memory. Do not use them as durable storage. Legacy username/password websocket auth and global chat frames exist for compatibility; new clients should use scoped token auth and server channels.
Activity and presence
REST works well for tools without a persistent websocket:
POST /chat/presence/activity
{"key":"my-client","name":"My game","type":"playing","state":"In the menu","ttl":600}
DELETE /chat/presence/activity/my-client
POST /chat/presence/status
{"status":"dnd"}
POST /chat/presence/custom
{"text":"Working on a client"}
REST activities accept a key, name, type, details, state, icon, image, url, app, since, duration, progress, progress_at and ttl. Name is required and limited to 80 characters; details/state to 128. Type is playing, listening, watching, competing, streaming or custom. Images/links require HTTPS. Timing fields are milliseconds. The project token's name can determine the source app label.
Activity TTL defaults to 600 seconds and clamps to 30 through 3600. Refresh before expiry. An account can have up to five keyed HTTP activities. DELETE without a key clears all its HTTP activities; use a key to avoid clearing another integration.
Websocket rich presence is scoped to that socket and clears when it disconnects. HTTP activities live until cleared or their TTL expires. Offline/invisible status, privacy and share_activity can hide activity from other users. GET /chat/presence/:username or /chat/users/:username to refetch; do not assume a cached presence is current.
Mobile presence. Every presence object (the presence_update event, chat_ready you.presence, member lists, GET /chat/presence/:username and the bot gateway) carries a boolean mobile next to status. It is true only when the account is online, idle or do-not-disturb and every connected session is a phone; any desktop, web or bot session makes it false, and offline or invisible accounts are always false. Clients report it by adding "mobile": true to the auth_token frame (omit it or send false otherwise); the Ember desktop app never reports mobile. The public profile response (GET /account/lookup/:username) also includes mobile. Ember shows a small phone icon in place of the square status dot when it is true.
Console presence. Presence objects also carry a boolean console (additive; older clients can ignore it). It is true when the account is online, idle or do-not-disturb and at least one of its live websocket connections is a game console, that is a connection that sent {"type":"arcade_join","platform":"3ds"} (the Nintendo 3DS Nookara Arcade client) and has not sent arcade_leave or closed. Console wins over desktop, web, phone and bot sessions, and when it is true mobile is false. Offline and invisible accounts are always false, so a console never reveals an invisible user. Friends-only profiles expose the flag like status. The public profile response (GET /account/lookup/:username) also includes console. Ember shows a small gamepad icon in place of the status dot when it is true.
Connected clients and last online. Presence objects can also carry sessions (the account's connected clients: state, via, version, platform, device, connected_at), last_online and last_login. They are additive and only sent to the account itself and to people with Manage users in a server they share (never to anyone else, and blocked or friends-only profiles are not widened). last_online is a millisecond timestamp of when the account last went fully offline, that is when its last active websocket closed (so null means unknown); while status is not offline the account is online now and clients show that instead. last_login is the older field and keeps its meaning (when the account last connected to the chat); new clients should use last_online.
Console activity. Activity objects (presence activities, member lists, GET /chat/presence/:username, GET /account/lookup/:username and the bot gateway) carry an additive platform field: "3ds" or absent/null. While an account has a live console socket (arcade_join with "platform":"3ds", not yet arcade_leave or closed) the server adds an automatic activity {"type":"playing","name":"Nookara Badge Arcade","platform":"3ds","source":"console","app":"Nookara","details":"<machine>"}, where details is the last arcade_where machine value (empty until sent) and since is when the console joined. Clients should render it as "Playing on 3DS" with a small 3DS icon instead of "Playing <name>". Ordering: it is listed first, ahead of any Hyperfocus game, websocket rich presence or HTTP integration activity, which stay in the list after it (so one-line subtitles show "Playing on 3DS" while the console is connected). It follows the same rules as every activity: offline or invisible accounts and share_activity: false hide it from other users, and friends-only profiles show it only to friends. It cannot be set or cleared through set_rich_presence or the REST activity routes; those ignore platform.
Auto-idle. Presence objects also carry auto_idle. When it is true, status is idle even though the account's saved status is online. It is computed, never saved: it applies only when the chosen status is online, every connected session is an Ember client with no activity for about ten minutes (the same window that routes notifications to other devices), and no game, launcher, extension or bot session is connected. Offline, invisible, do-not-disturb and a manually chosen idle are never changed. Any activity (the Ember client sends chat_active at most every 30 seconds while in use) or a new non-Bonfire session clears it and the saved status returns by itself. Both changes arrive as normal presence_update events.
Voice and video signaling
Voice media uses WebRTC through a Cloudflare SFU. A JSON join request alone does not transmit audio. Your client needs microphone capture, WebRTC peer connections, remote audio playback and device controls. Request Chat and Voice scopes, then authenticate the user websocket.
The frames below are the same on a Nookara socket (legacy servers and DM calls) and on an Ember instance gateway: on an instance, send them to wss://INSTANCE/gateway with a session that holds the voice scope (the person's Nookara Voice permission, which they may decline). The instance uses its own Cloudflare keys or Nookara's voice broker, and answers voice_unavailable or voice_cap_reached when neither is possible. DM calls (bfc_... rooms) always stay on Nookara.
A voice channel room is bf_ plus its user API cid, such as bf_c0123456789. Server membership, channel visibility, Send permission and the configured user limit determine entry. DM calls use the room returned by POST /chat/calls with {"to":"username"}; do not construct call-room identifiers yourself.
- Send
chat_rtc_joinwithroomand uniquenonce. Awaitchat_rtc_joined, containingiceServersand currentpeople. - Create two WebRTC connections with those ICE servers: one for publishing and one for receiving. Keep them separate.
- Add microphone audio to the publishing connection. Create/set a local SDP offer and wait for ICE gathering to finish. For each transceiver include its
midand atrackName. - Send
chat_rtc_publishwithroom,nonce,sessionDescription:{type,sdp}andtracks:[{mid,trackName:"audio"}]. Apply the returned SDP fromchat_rtc_publishedas the remote description. If it is an offer, create a local answer and sendchat_rtc_answerwithsession:"publish". - Wait for the publisher's WebRTC connection state to become connected. Only then send
chat_rtc_connectedwithroom. This is what announces an actually connected participant. - Handle
chat_rtc_roomsnapshots. Build the complete desired subscription list from other participants' tracks:sources:[{userId,trackName}]. Send it aschat_rtc_subscribewith room and nonce. It replaces the desired set; sending only newly added tracks can unsubscribe earlier peers. - If the reply is
chat_rtc_offer, apply its SDP to the receiving connection, create/set an answer, wait for gathering, then sendchat_rtc_answerwithsession:"receive". Awaitchat_rtc_ready. A subscription with no new allocations can return ready directly. - Play receiver tracks when they arrive. On departures or a peer rejoining, rebuild the desired snapshot, including any new SFU session mapping. Serialize SDP renegotiations to avoid overlapping offers.
- To stop one producer track, send
chat_rtc_closewithtracks:["camera"]. To leave, sendchat_rtc_leave, stop capture, close both peer connections and release playback resources.
{"type":"chat_rtc_join","room":"bf_CHANNEL_CID","nonce":"join-1"}
{"type":"chat_rtc_publish","room":"bf_CHANNEL_CID","nonce":"pub-1",
"sessionDescription":{"type":"offer","sdp":"GENERATED_SDP"},
"tracks":[{"mid":"0","trackName":"audio"}]}
{"type":"chat_rtc_connected","room":"bf_CHANNEL_CID"}
{"type":"chat_rtc_subscribe","room":"bf_CHANNEL_CID","nonce":"sub-1",
"sources":[{"userId":123,"trackName":"audio"}]}
Allowed producer track names are audio, camera, screen, and screen_audio, up to four per publish. The server returns only accepted tracks. Use chat_rtc_ice for refreshed ICE credentials. There is no separate trickle-candidate frame in this protocol, so send gathered SDP. Never expose SFU app secrets; the server holds those.
In Chromium, start decoding remote audio through an active media element. The existing extension uses a muted audio element for decoding plus Web Audio gain for playback/volume. Resume the AudioContext from a user gesture. A negotiated track with no audible output is not proof that audio transport failed.
Calls and soundboard
To ring a user into a room you joined, send voice_call with to and room. Retain the callId from voice_call_ringing or voice_call_incoming. Answer with voice_call_answer (callId, accept); the original caller cancels with voice_call_cancel (callId). Calls time out after 30 seconds. Handle incoming, accepted, answered, ended and failed events and clean up signaling and media state. Channel call-in settings and user preferences can reject a call. Legacy call_user/call_end peer signaling is a different protocol with recipient fields.
voice_sound takes sound, a sound ID from /chat/sounds. Playback is relayed to participants in the same voice/call room, with a per-user cooldown. Clients play the returned sound locally and honor deafen/output volume.
Legacy Nookara Voice relay frames (voice_connect, voice, voice_disconnect) remain in the frame inventory for existing projects. Use the RTC sequence above for Ember-compatible voice channels. The Python library transports signaling but deliberately makes no claim that a signaling-only client has joined audible voice.
Media and uploads
Ember chat attachments are uploaded to the instance, not to Nookara: POST INSTANCE/api/v1/media/upload and /media/import (see Uploads and media import). The routes below are Nookara's own media storage (profile pictures, saved media, projects).
Use multipart/form-data for files. Let your HTTP library generate the boundary; do not set a bare multipart Content-Type yourself. Send scalar form fields before file parts for chunk uploads.
| Route | Input | Important behavior |
|---|---|---|
| POST /chat/upload | file part named file | Legacy image attachment for Nookara-hosted servers; Chat + Media Upload; 12 MiB; returns attachment |
| POST /chat/media/upload | file | Saved media uploads on Nookara, image/video/audio; inspect returned item |
| POST /chat/media/temp | file; optional expires_in_days (Nookara Pro) | A file for a DM / group chat in Nookara's temporary storage. Chat scope; up to 95 MB; 2 GB per person per day. Returns { url, id, expires_at, ttl_days, fixed, pro, attachment }; put url in the message text. expires_in_days (a form field or query parameter) is for Nookara Pro members only: a number of days (at least 1 hour, clamped to the Pro maximum, 120 by default) or max; it sets a fixed expiry that loading the file does not move (fixed: true, ttl_days: null). Leave it out, or send default, for the normal expiry that resets on every load. Errors: pro_required (403, expires_in_days without Pro), invalid_expiry (400), file_too_large (413), file_type_blocked (415, Windows programs and scripts), temp_daily_quota / rate_limited (429), temp_storage_full (507). Python: api.upload_dm_file(path) |
| POST /chat/media/account | file | A file for a DM kept in your Nookara account storage instead: any type, up to 60 MB, counts toward your storage (250 MB free, 2 GB Pro) and stays until you delete it. Chat + Media Upload scopes. Returns { id, attachment }; storage_limit_exceeded (413) when it doesn't fit. Files that aren't pictures, videos or sounds are served from /uploads/files/ as downloads. Python: api.upload_dm_file(path, destination="account") |
| GET /chat/media/destinations | none | What Ember's upload picker shows: { choice, account: { available, pro, usage, limit, remaining, max_mb }, temp: { available, max_mb, pro, days, pro_days, popular_bonus, can_pick_expiry, expiry_presets, max_expiry_days, info_url } }. temp.days are your lifetimes (image, media, file, large, max; the Pro ones when you're Pro), pro_days are always the Pro ones; can_pick_expiry says whether expires_in_days is allowed, and expiry_presets are the day counts Ember offers. choice is the dm_upload_dest chat setting (ask, account or temp, PATCH /chat/settings). Python: api.upload_destinations() |
| POST /chat/media/external | file | Old name of /chat/media/temp. It used to hand files to catbox.moe; it now stores them in Nookara's temporary storage. Old catbox links in messages keep working. |
| GET /chat/media/limits | none | Returns { server_mb, saved_mb }: the biggest file for /chat/media/temp (a file sent in a conversation, 95) and for /chat/media/upload / /chat/media/account (a file kept on the Nookara account, 60). Python: api.get_chat_media_limits() |
| GET /chat/unfurl?url= | query url | Link-preview card made by Nookara, returned as { embed } with embed.type one of link, youtube, invite, profile or payment. A Nookara payment link (/pay/USERNAME, /pay/bp_TOKEN, /payment/ID) gives { type: "payment", kind: "user" | "bot" | "request", status, ... }: user has username, pfp; bot has amount, bot, description; request has amount, to, project; invalid: true when the link is dead. Python: api.get_chat_unfurl(query={"url": link}) |
| POST /media/pfp or /media/banner | file or JSON data; optional crop | Account Write scope; animated images have plan restrictions |
| POST /media/image or /media/audio | file or data URI | Media Upload scope, account storage quota; audio limit 20 MiB |
| POST /media/video/chunk | sessionId, chunkIndex, totalChunks, file part chunk | 15 MiB maximum chunk, 10 MiB recommended |
| POST /media/video/finalize | JSON sessionId, mimeType, originalName | Assembles a complete video, maximum 1 GiB and account quota |
Temporary storage (/t/)
Files sent in DMs and group chats with "Temporary storage" live at https://nookara.cc/t/ID/NAME (ID = 22 random letters and digits; NAME is only for people). No sign-in is needed to open one. Every load resets the file's expiry to now + its time to live (it never adds on top), so a file people keep opening stays and one nobody opens is deleted:
| File | Time to live after the last load |
|---|---|
| Pictures up to 10 MB | 30 days |
| Videos and sounds up to 50 MB | 14 days |
| Anything else up to 25 MB (and pictures of 10 to 25 MB) | 7 days |
| Anything bigger (up to 95 MB) | 3 days |
Nookara Pro: files sent by a Pro member (Pro at the time of the upload) live twice as long in every row and with the popularity bonus, up to 120 days instead of 60 (TEMP_FILES_PRO_MULT / TEMP_FILES_PRO_MAX_DAYS on the server). Pro members can also send expires_in_days with the upload to pick a fixed expiry instead; that date is final, loading the file never moves it. The full table, for free and Pro, is at /temp-files and as JSON at GET /t/policy: { kinds: [{ kind, max_mb, free: { base, popular_3, popular_10 }, pro: { ... } }], popular_bonus, free_max_days, pro_mult, pro_max_days, manual: { pro_only, presets, min_days, max_days, resets_on_view }, max_file_mb, daily_mb, store_gb, ... }.
Popular files live longer: x1.5 once 3 different people loaded it in the last 7 days, x2 at 10, never more than 60 days (120 with Pro). The expiry is written at most once every 10 minutes per file. When the store (8 GB) is full, the files nobody loaded for the longest go first. Pictures, videos, sounds and plain text open in the browser; everything else (HTML, SVG, scripts, PDFs, archives...) always downloads, and every response is sandboxed (Content-Security-Policy: sandbox, X-Content-Type-Options: nosniff). Add ?dl=1 to force a download. GET /t/info/ID returns { id, name, mime, size, expires_in, ttl_days, fixed, pro } without counting as a load (ttl_days is null when fixed). Expired or missing files answer 404 (temp_file_expired / not_found).
import uuid
from pathlib import Path
path = Path("video.webm")
chunk_size = 10 * 1024 * 1024
total = (path.stat().st_size + chunk_size - 1) // chunk_size
session = uuid.uuid4().hex
with path.open("rb") as source:
for index in range(total):
api.post_media_video_chunk(
data={"sessionId": session, "chunkIndex": index, "totalChunks": total},
files={"chunk": ("chunk.bin", source.read(chunk_size), "application/octet-stream")},
)
result = api.post_media_video_finalize(json={
"sessionId": session, "mimeType": "video/webm", "originalName": path.name,
})
Create a fresh random session ID, use zero-based chunk indices, keep totalChunks constant, and finalize only after all chunks succeed. Sessions expire after two hours. The API checks ownership of an existing session. Large direct base64 uploads can hit the 60 MiB HTTP JSON-body limit even when the media limit is larger.
Media and cloud storage share account quota: 250 MiB for Free and 2 GiB for Pro. GET /storage-info/info/usage returns usage and limits. Delete only your own upload IDs with /media/:id. External Catbox files have different ownership/deletion behavior; deleting a Nookara message does not delete a public third-party file.
Other upload endpoints include server/role/channel icons, bot avatars, emoji, webhook avatars and soundboard clips. Their authorization, file field and error keys are listed per route. Images can be resized/re-encoded by the server; do not assume original byte preservation.
Storage, accounts and achievements
Storage is private to the token's account and divided by your chosen storageId. It is not a globally shared bucket. Keys and values count toward the account's shared quota. Values are strings.
PUT /storage/my-client/save
{"value":"{\"level\":3,\"coins\":40}"}
GET /storage/my-client/save
// {"value":"{\"level\":3,\"coins\":40}"}
GET /storage/my-client/keys
GET /storage-info/info/usage
Use JSON serialization for structured saves. DELETE /storage/:storageId/:key removes one key; DELETE /storage/:storageId clears that entire namespace. Storage Read is 16 and Write is 32.
Account routes cover the current account, public lookup/search, profile updates, username/password changes, export, sessions and deletion. Profile privacy can limit lookup. PATCH /account/update accepts bio, pronouns, timezone, country_code, color, profile_visibility and website. pronouns is plain text of up to 40 characters (control characters and line breaks are removed; an empty string or null clears it). The public profile response (GET /account/lookup/:username), GET /account/me (profile.pronouns) and the bot REST user object (GET /bot/user/:username) return it as pronouns (a string, or null when unset). Like the bio, it is left out of lookup for friends-only profiles you cannot see. Do not assume a token with profile access should receive email or session history; sensitive fields use separate scopes and server checks.
Friends on profiles. PATCH /account/update also accepts show_friends (boolean, default on) and friends_public_notice (only true: marks the one-time "your friends list is now public" notice as seen). GET /account/me returns both in profile (show_friends, and friends_public_notice where true means the notice was already seen). When a profile is fully visible and show_friends is on, GET /account/lookup/:username adds friends (up to 200 of { username, pfp_url, pfp_animated, color }, sorted by name) and friends_count (the true total). With it off the response has friends_hidden: true and no list, except for the account itself, which still gets the list plus friends_hidden: true. Friends-only profiles you cannot see never include friends.
Hyperfocus library and joining. GET /hyperfocus/profile/:username adds library: an array of the games in the user's Hyperfocus library (the launcher stores the ids in hyperfocus/library storage, and purchases count too). Each entry has the same fields as games entries (without achievements) plus owned (bought), seconds (playtime) and play; it is sorted by playtime then name, and is [] for profiles you cannot see. When the running game allows friends to join, playing gets joinable: true; playing.joinCode is only returned to the user's friends (and the user) and never in any public output. The same joinable / joinCode pair appears in activity of friend_activity pushes and GET /hyperfocus/friends, which are friends-only.
Achievements are game-scoped. GET /achievements?game=GAME_ID lists the account's state; POST /achievements/:id/grant or /revoke uses JSON {"game":"GAME_ID"} and Project Auth scope. Badge routes describe profile badges separately from game achievements.
Credits, payments and subscriptions
Currency Read (8192) is separate from Currency Pay (1024). Balance/transactions do not authorize transfers. Payment requests provide a browser approval page for programs that cannot embed CAPTCHA.
- POST
/currency/transfer-requestwith{"to":"recipient","amount":10,"note":"Example purchase"}. - Open the returned
urlfor the user. The response includes the requestidandexpiresIn. - Poll GET
/currency/transfer-request/:idand display pending, paid, cancelled, expired or failed. - If the user cancels your UI while the request is pending, POST
/currency/transfer-request/:id/cancel.
Requests expire after ten minutes. The confirmation endpoint requires the correct signed-in account and CAPTCHA approval. Never bypass CAPTCHA or automatically confirm on behalf of the user. Direct transfer requires captcha_token unless the server recognizes a current CAPTCHA pass. Treat payment request IDs as sensitive capabilities.
The reference also covers outgoing/incoming recurring subscriptions, cancellation, daily claim, credit-purchased Pro, role shops, and store purchase/refund endpoints. Subscription periods are weekly, biweekly, monthly, bimonthly or yearly. Recurring payments and purchases change real account balances; obtain the user's intent for each appropriate action and do not retry uncertain writes blindly.
Bots, gateway and webhooks
/api/v1/bots), REST is https://INSTANCE/bot/v1, the gateway is wss://INSTANCE/bot/gateway and webhooks post to https://INSTANCE/api/v1/webhooks/WID/TOKEN. A bot you want others to add is a Nookara developer bot in the bot gallery. The sequence below is the same dialect on every instance. The Nookara-hosted bot routes (/chat/api/v1) are legacy and read-only.from velora_api import Instance
import os
bot = Instance("https://chat.ikelene.net", bot_token=os.environ["BONFIRE_BOT_TOKEN"])
print(bot.bot_discovery()) # {"api_code_version", "endpoints": {api, gateway, ...}}
print(bot.bot_me()) # the bot's own user object
for guild in bot.bot_guilds(): # the one community it is in
for channel in bot.bot_channels(guild["id"]):
print(channel["id"], channel["name"])
bot.bot_send("NUMERIC_CHANNEL_ID", "Hello from my bot!")
Bot routes use content, not the user API's message. Guild, channel, message and user ids in bot representations are numeric row ids serialized as strings; role ids have a compatibility mapping (@everyone is the guild id). Read them from bot responses and do not transform ids yourself. Bots do not hold DMs through this API. A bot posts as a member, so Send permission, locked channels and no-chat channels apply; the limit is 150 requests per bot per 10 seconds.
Bot aliases
A bot can post a message under another name and avatar, for example a narrator, a character or a relayed speaker. The alias is only how the message is shown. The real bot stays the author: author is still the bot: mentions, moderation and reports always use the real bot. Only bots can set an alias. A user or session token that sends alias gets 403 alias_bots_only; this covers POST, PATCH (even "alias": null) and the websocket chat_send.
| Field | Rule |
|---|---|
alias | Optional object on a bot's message create or edit. On create, leave it out (or null) for a normal message |
alias.name | Required inside alias. Newlines are rejected, zero-width and bidi characters are stripped, then it is cleaned like a display name and must be 1 to 32 characters |
alias.avatar_url | Optional. https:// only, at most 500 characters, no user:pass@, no whitespace. An empty string or null means no avatar and clients show a default one. There is no media proxy: the address is hot-linked like a webhook avatar, so host it somewhere stable |
alias.unmarked | Read only, on every message's alias. true when the server's owner has turned on unmarked aliases and this bot may use them (see Unmarked aliases); otherwise false |
alias.member_id | Read only, only when unmarked is true and the alias name matched exactly one member of that server. The client API gives the member's principal (and alias.member, their author object); the bot API gives a numeric user id |
Send it with the call that posts the message: bot REST POST /bot/v1/channels/:cid/messages (with content). Interaction responses (types 4 and 7), followups and edits of @original or a followup take it as data.alias; ephemeral interaction messages ignore it. The bot gateway has no message send. To change it later, PATCH /bot/v1/channels/:cid/messages/:mid on the bot's own message: leaving alias out keeps the existing one, an object replaces it and "alias": null clears it (content may be left out when only the alias changes). A bot can edit only its own messages. A value that breaks a rule above is refused with 400; through the bot API the body is {"message":"alias.name must be 1-32 characters","code":0} (the internal error code is invalid_alias).
curl -X POST "https://INSTANCE/bot/v1/channels/NUMERIC_CHANNEL_ID/messages" \
-H "Authorization: Bot BOT_TOKEN" -H "Content-Type: application/json" \
-d '{"content":"The door creaks open.","alias":{"name":"Narrator","avatar_url":"https://example.com/narrator.png"}}'
# clear the alias again
curl -X PATCH "https://INSTANCE/bot/v1/channels/NUMERIC_CHANNEL_ID/messages/MESSAGE_ID" \
-H "Authorization: Bot BOT_TOKEN" -H "Content-Type: application/json" -d '{"alias":null}'
// JavaScript (Node 18+ or a browser; keep the bot token on a server)
const api = "https://INSTANCE/bot/v1/channels/NUMERIC_CHANNEL_ID/messages";
const headers = { Authorization: "Bot " + process.env.BOT_TOKEN, "Content-Type": "application/json" };
const sent = await (await fetch(api, { method: "POST", headers, body: JSON.stringify({
content: "The door creaks open.",
alias: { name: "Narrator", avatar_url: "https://example.com/narrator.png" },
}) })).json();
console.log(sent.alias); // { name: "Narrator", avatar_url: "https://example.com/narrator.png" }
await fetch(api + "/" + sent.id, { method: "PATCH", headers, body: JSON.stringify({ alias: { name: "Storyteller" } }) });
from velora_api import Instance, make_alias # velora-api-client 0.5.8 or newer
import os
bot = Instance("https://chat.ikelene.net", bot_token=os.environ["BONFIRE_BOT_TOKEN"])
sent = bot.bot_send("NUMERIC_CHANNEL_ID", "The door creaks open.",
alias={"name": "Narrator", "avatar_url": "https://example.com/narrator.png"})
bot.bot_edit("NUMERIC_CHANNEL_ID", sent["id"], alias=make_alias("Storyteller")) # change it
bot.bot_edit("NUMERIC_CHANNEL_ID", sent["id"], alias=None) # clear it
Reading it. Every message object (history, search, pins, starboard, the websocket chat_message and chat_message_update, and the Discord-shaped MESSAGE_CREATE and MESSAGE_UPDATE of the bot gateway and Bot REST), and so do reply.alias and referenced_message.alias has alias: {"name","avatar_url","unmarked"} (plus member_id on a matched unmarked alias) or null. Messages from before the feature, from people, webhooks and the system, have null; avatar_url inside an alias can itself be null. Bots that react to messages should check author, not the alias, to tell who really wrote something.
What people see. Clients show the alias name and avatar in place of the bot's, with a small mask icon next to the name, and a tooltip "Posted by BOT as ALIAS" so nobody is misled about who is behind the message. Mentions, moderation and reports always use the real bot. In the PenguinMod extension, send [TEXT] as bot [TOKEN] to channel id [CHANNEL] on [URL] with alias [NAME] and avatar [AVATAR] posts one, and the alias name, alias avatar and alias unmarked? choices of the latest-message reporter read it. A project that includes a bot token should never be shared.
Unmarked aliases (risky, off by default)
An Ember server's owner can let bots post aliases that look exactly like a member's message. It is buried on purpose: Server settings, Danger zone, Advanced, "Allow unmarked aliases". Only the owner can change it (anyone else gets 403 owner_only), turning it on asks for confirmation, and every change is in the audit log as unmarked_aliases_update. It is the advanced.unmarked_aliases key of GET / PATCH /api/v1/servers/:sid/settings, and it is never exported or imported with a server. A bot also needs the Use unmarked aliases role permission (bit 4096, Ember servers only) or Administrator.
While both hold, the bot's aliases carry "unmarked": true. The server then looks the alias name up among that server's members only, trimmed and in any case: one member whose username matches, or else one member whose display name matches. Two or more matches count as none. A match adds member_id. It is worked out every time a message is read, so turning the setting (or the permission) off marks old messages again, and turning it on unmarks old ones. Clients show an unmarked alias with no mask, no tooltip and no BOT tag, in the matched member's name colour; the avatar is avatar_url, else the member's picture, else the bot's; clicking the name opens the member's profile (the bot's when nobody matched).
The real bot is still author and still what mentions, notifications, blocks, mutes, reports, moderation and the audit log use. People with Manage messages see the real sender under "Message info" in the message menu. Messages only ever exist in that server's channels, so an unmarked alias never reaches DMs or another server.
// is this alias pretending to be a member? check author, never the alias
if (msg.alias && msg.alias.unmarked) console.log(msg.author.username, "posted as", msg.alias.name, "matched member", msg.alias.member_id || "none");
GET /bot/discovery advertises the endpoints and GET /bot/v1/gateway returns the gateway URL without authentication; /gateway/bot needs a Bot token.
Bot gateway sequence
- Connect to
wss://INSTANCE/bot/gateway. Receive{"op":10,"d":{"heartbeat_interval":...}}. - Send Identify
{"op":2,"d":{"token":"BOT_TOKEN"}}within 20 seconds. A bad token closes with 4004. - Send opcode 1 heartbeats on the interval and track opcode 11 acknowledgements.
- Read dispatch frames
{"op":0,"t":"MESSAGE_CREATE","s":1,"d":{...}}.READYis followed byGUILD_CREATE(the whole community, also when a manager adds the bot), thenGUILD_UPDATE,GUILD_DELETE,GUILD_MEMBER_ADDandGUILD_MEMBER_REMOVE,MESSAGE_CREATE,MESSAGE_UPDATE,MESSAGE_DELETE,MESSAGE_REACTION_ADDandMESSAGE_REACTION_REMOVE. A bot only receives events for channels it can see.
The server accepts opcode 6 by re-identifying; it does not implement durable Discord-style event replay. Resync guild, channel and message state after reconnect. A missed-heartbeat session can close with 4009. Bot gateway transport is documented here and is wrapped by the Python BotGateway (one instance) and BotProgram (every instance the bot is installed on), not by RealtimeClient.
Bot presence (the status dot)
A bot is online in each community it belongs to while at least one authenticated connection to that instance's /bot/gateway has been sent READY; otherwise it is offline. Other connections and REST requests do not count, several gateway connections count independently, and the last one closing, erroring, being revoked or timing out makes the bot offline. Heartbeats expire after 2.5 times the advertised interval (41250 ms), checked every 15 seconds. Presence lives in memory on the instance and starts offline after a restart. A bot installed on several instances has one presence per instance.
- Member payload. GET
/api/v1/servers/:sid/membersand thememberofchat_member_update(includingchange: "joined") carrypresence:"online"or"offline"for bots, andnullfor people (instances do not relay human presence). - Event. Changes arrive on the instance websocket as
{"type":"chat_presence","server":"SID","user_id":"b:N","username":"BOT NAME","presence":"online"}(or"offline"). They are coalesced for 2 seconds and sent only to current members of that community; an unchanged status sends nothing, so a quick reconnect may produce no event. Update the matching member'spresenceto draw the dot. - The bot gateway does not support presence in Identify or opcode 3 (Update Presence): statuses such as idle, dnd or invisible are ignored, there is no invisible mode, and a live READY connection is online. Presence is not exposed through profiles or the Discord-shaped Bot REST user objects, only in the community member view.
Incoming webhooks
Create and list webhooks with the instance routes under /api/v1/channels/:cid/webhooks (Manage channels). Execute the returned secret URL without any token:
curl --fail-with-body -X POST "$BONFIRE_WEBHOOK_URL?wait=true" \
-H "Content-Type: application/json" \
--data '{"content":"Build finished","username":"Build service"}'
Supported body keys include content, username, avatar_url and embeds. Multipart uploads use file parts and a JSON-string payload_json field. ?wait=true returns the posted message; otherwise success is empty 204. Webhooks also support GET info and DELETE by secret URL. Never publish that URL or treat it as a harmless identifier.
Bot payments
A bot can ask a Nookara user for credits and learn whether they paid. The bot calls the Nookara API with its bot token, gets an official payment link, and sends the buyer there. The buyer signs in on nookara.cc with their normal login and presses Pay. They do not authorize the bot, no scopes are involved, and the bot never receives a user token or any access to the buyer's account. There is no webhook: the bot polls.
pay_url, in a Scratch project, web page or app. Do not log pay_url publicly: it is the only secret of the payment page.Money model
- The recipient is the bot's owner (the Nookara account that owns the developer bot). It is fixed on the request when you create it and cannot be changed or redirected. Bots hold no credits themselves; payments land in the owner's normal Nookara balance and appear as a normal transfer with the note
BOT: order ORDER_ID [bp:REQUEST_ID], and a credits notification. - The owner cannot pay their own bot (
self_payment). The owner must not be banned or suspended and the bot must not be banned from the gallery. - Fulfil an order only when
statusispaid, and compareamountandbuyer.idwith your own order.
Authentication and base URL
Authorization: Bot BOT_TOKEN on every call to https://nookara.cc/bot/payment-requests. This is the same token an Ember bot uses (create or reset it in the bot settings). A user or session token is refused with 401 invalid_bot_token. Every request you make is scoped to your bot: bot A cannot read, cancel or list the requests of bot B (404 not_found).
Create a payment request
POST /bot/payment-requests with a JSON body:
| Field | Type | Rules |
|---|---|---|
buyer | string or number | Nookara user id (digits) or username. Alias buyer_id. Required. |
amount | integer | Credits, 1 to 10000. Required. |
order_id | string | Yours, unique per bot; letters, digits and _ . : -, 1 to 100 characters. Required. |
description | string | Optional, up to 140 characters, shown to the buyer. |
return_url | string | Optional, https:// only, up to 500 characters, no credentials in the URL. |
expires_in | integer | Optional seconds, 60 to 86400, default 3600. |
metadata | string | Optional, up to 500 characters. Returned to you only, never shown to the buyer. |
The answer is 201 with the request:
{ "id": "bpr_9f2c...", "order_id": "ord-1001", "amount": 20, "status": "pending",
"description": "Premium pack", "metadata": null, "return_url": "https://shop.example/done",
"pay_url": "https://nookara.cc/pay/bp_<32 hex>",
"buyer": { "id": "260", "username": "alice" },
"created_at": "...Z", "expires_at": "...Z", "paid_at": null, "transaction_id": null }
Idempotency. The same order_id with the same buyer and amount returns the existing request with 200 and "idempotent_replay": true, whatever its status, so a retry after a network error is safe. The same order_id with a different buyer or amount is 409 order_id_conflict. To retry an order that expired, was cancelled or was declined, create a new order_id.
Read, find, list and cancel
- GET
/bot/payment-requests/:idreturns the same object. - GET
/bot/payment-requests?order_id=ORDERfinds a request by your order id (the same object,404 not_foundif none). - GET
/bot/payment-requests?limit=25&status=paidlists your latest requests as{"requests":[...]}. - POST
/bot/payment-requests/:id/cancelcancels a request that is stillpending.409 payment_in_progressif the buyer is paying right now,409 not_cancellableonce it is paid, declined or expired. Cancelling an already cancelled request is a no-op200.
Statuses
| Status | Meaning |
|---|---|
pending | Waiting for the buyer. While the buyer's payment is being processed it still reads as pending; if the transfer is refused (for example not enough credits) it goes back to pending and the buyer may retry until it expires. |
paid | Final. paid_at, transaction_id and buyer.id are set. This is the only status that means "deliver the goods". |
declined | Final. The buyer pressed Decline; reason is declined_by_buyer. |
expired | Final. expires_at passed. |
cancelled | Final. Your bot cancelled it. |
A payment claim left half-done by a server crash is settled after about 60 seconds: paid if the transfer exists, otherwise back to pending.
The hosted pay page (buyer side)
The public payment URL has the format https://nookara.cc/pay/bp_ followed by 32 random hex characters (unguessable). That is all a bot needs to know about the page; the page's own API is internal and is not part of the bot API.
- The page shows the bot (name, avatar, Verified badge from the bot gallery), the seller account (the bot owner), the amount, description, order id and expiry.
- Not signed in: "Sign in to continue" leads to the normal Nookara login and back to the page. No app or scope authorization is involved.
- Signed in as somebody other than the request's buyer: "This request is for another account". The buyer's identity is never shown to other viewers.
- Signed in as the buyer: "You are paying N credits to BOT (owner NAME)" with Decline and Pay. Pay uses the standard Nookara payment check (CAPTCHA unless the current 2-day pass is active) and moves the credits from the buyer to the owner.
- The success page shows a button, and redirects automatically after about 3.5 seconds, to
return_url?order_id=ORDER&status=paid(orstatus=declined) when you gave areturn_url. The buyer sees the host of that URL on the button. The status in the URL is informational only: always confirm with the API.
Polling
There are no webhooks. After you send the buyer to pay_url, poll GET /bot/payment-requests/:id every few seconds while they are on the page and back off over time (reads are limited to 300 per minute per bot). Stop at any status other than pending. The Python library has BotClient.wait_for_payment for this.
Errors
Errors are {"error":"code"}.
| HTTP | Code | Meaning |
|---|---|---|
| 401 | invalid_bot_token | Missing or bad Authorization: Bot .... |
| 403 | merchant_unavailable, bot_banned | The owner or the bot cannot take payments. |
| 400 | invalid_amount (also min, max), invalid_order_id, invalid_description, invalid_metadata, invalid_return_url, invalid_expires_in, invalid_buyer | Validation. |
| 404 | buyer_not_found, not_found | No such buyer / no such request of your bot. |
| 400 | buyer_is_bot, self_payment | The buyer is a bot, or is the merchant account. |
| 403 | buyer_banned, buyer_suspended, buyer_restricted | The buyer is banned, suspended, or an admin switched off spending credits for them. |
| 409 | order_id_conflict, payment_in_progress, not_cancellable | See above. |
| 429 | rate_limited, too_many_open_requests, buyer_has_too_many_open_requests | Limits below. |
Limits
60 creates per minute and 300 reads per minute per bot, 300 requests per minute per IP. At most 500 open (pending) requests per bot, 5 open per bot and buyer, and 20 open per buyer across all bots.
Security notes
- Recipient: chosen by the server from the bot's owner; a request cannot be redirected to another account.
- Paying needs the buyer's own signed-in session, a single-use CAPTCHA check, and Currency Pay not switched off by an admin; the signed-in account must equal the request's buyer.
- Double clicks and two tabs cannot charge twice: the request is claimed atomically before any credits move, and a repeated confirm after payment only returns the paid result.
- Expired, cancelled and declined requests refuse payment.
- There is no webhook to trust: never rely on
return_urlquery strings, only on the API. - The request id and
pay_urlare capabilities. Keep the bot token server-side; the PenguinMod extension has no payment blocks for this reason.
Examples
BOT="Authorization: Bot $BOT_TOKEN"
curl -sS -X POST https://nookara.cc/bot/payment-requests -H "$BOT" -H 'Content-Type: application/json' \
-d '{"buyer":"alice","amount":20,"order_id":"ord-1001","description":"Premium pack","return_url":"https://shop.example/done","expires_in":900}'
# 201 {"id":"bpr_...","pay_url":"https://nookara.cc/pay/bp_...","status":"pending",...} send the buyer to pay_url
curl -sS "https://nookara.cc/bot/payment-requests?order_id=ord-1001" -H "$BOT"
# {"status":"paid","paid_at":"...","transaction_id":"1234","buyer":{"id":"260",...},...}
curl -sS -X POST https://nookara.cc/bot/payment-requests/bpr_.../cancel -H "$BOT"
import os
from velora_api import BotClient, BuyerError, OrderConflict, PaymentTimeout, is_paid
bot = BotClient(os.environ["BOT_TOKEN"]) # velora-api-client 0.5.8
try:
request = bot.create_payment_request("alice", 20, "ord-1001", description="Premium pack",
return_url="https://shop.example/done", expires_in=900)
except BuyerError as error: # buyer_not_found, buyer_is_bot, self_payment, buyer_banned, ...
raise SystemExit("cannot charge: " + error.error)
except OrderConflict: # same order_id, different buyer or amount
raise SystemExit("use a new order_id")
print("send the buyer to", request["pay_url"])
try:
final = bot.wait_for_payment(request["id"], timeout=900, poll=3)
except PaymentTimeout:
bot.cancel_payment_request(request["id"])
else:
if is_paid(final) and final["amount"] == 20: # fulfil ONLY when paid
print("paid, transaction", final["transaction_id"])
else:
print("not paid:", final["status"])
Other Python helpers: get_payment_request(id), find_payment_request(order_id) (None if unknown), list_payment_requests(status=None, limit=None) and cancel_payment_request(id). Errors are PaymentError subclasses (InvalidBotToken, MerchantUnavailable, InvalidPaymentRequest, BuyerError, OrderConflict, PaymentInProgress, NotCancellable, PaymentNotFound, PaymentRateLimited), all still APIError. The four routes are also in the REST reference under Bot payments.
These routes are not the user-token payment requests of /currency/transfer-request, where a program asks the signed-in user to confirm a transfer from their own account.
Bot gallery (Discovery > Bots)
The bot gallery lists reviewed bots that anybody can add to an Ember server. A listed bot is verified and shows a checkmark next to its BOT tag, plus "trusted in N servers". Bot ids are the Nookara user id of the bot account as a string (the id from GET /chat/bots, which lists the developer bots you own; create one with POST /chat/bots). Errors are {"error":"code"}.
States
| State | Meaning |
|---|---|
private | Default, or after you withdrew it. Only you (and staff for review) can see or add it. |
pending | Submitted and waiting for review. |
approved | Listed and verified. Edits to its listing fields go live at once. |
rejected | Review declined. review_message says why; fix it and resubmit. |
delisted | Hidden by staff. You can resubmit. |
banned | Cannot be resubmitted. |
Public routes (no sign-in)
- GET
/bonfire/bots/gallery?q=&tag=&page=lists approved bots, 24 per page, most trusted first:{"page","page_size","has_more","results":[{id,username,description,avatar_url,owner,verified,trusted_in,tags,support_url,listed_at}]}.qmatches name, descriptions and tags;tagis exact. Limit: 120 per minute per IP. - GET
/bonfire/bots/gallery/tagsreturns the top 50 tags:{"tags":[{"tag":"music","count":3}]}. - GET
/bonfire/bots/gallery/:idreturns the card pluslong_description,links(up to 5 of{label,url}) andpermissions. A bot that is not approved answers 404bot_not_found, unless the request carries the bearer token of its owner or of staff; then you also getstate,review_message,submitted_at,reviewed_at,can_submitandcan_withdraw.
Bot owner routes (bearer, Chat scope)
The owner of the bot (or a Nookara owner-rank account) may use these.
- GET
/chat/bots/:id/galleryreturns{"gallery":{...detail, state, review_message, submitted_at, reviewed_at, can_submit, can_withdraw},"log":[{by,action,message,at}]}(last 20 log entries). - PUT
/chat/bots/:id/gallerysaves listing fields without changing the state:long_description(4000 characters),tags(up to 6, a-z 0-9 and-, 2 to 20 characters),support_url(https),links(up to 5 of{label up to 30, url https}) andpermissions(fromsend_messages, attach_files, manage_channels, manage_server, manage_roles, kick_members, ban_members, manage_messages, mention_everyone, administrator). Errors:invalid_tags,invalid_support_url,invalid_links,invalid_permissions. - POST
/chat/bots/:id/gallery/submit(optionally with the same fields; 10 per minute) movesprivate,rejectedordelistedtopending. The bot needs a description of at least 10 characters and an avatar (description_required,avatar_required), set with PATCH/chat/bots/:idand POST/chat/bots/:id/avatar. Other errors:already_pendingandalready_listed(409),gallery_banned(403). Resubmitting after a rejection or delisting uses the same route. - POST
/chat/bots/:id/gallery/withdrawreturns the bot toprivate; servers that already have it keep it.
GET /chat/bots entries also carry verified, trusted_in and gallery: {state, verified, review_message, trusted_in}.
Adding a listed bot to a server
- The person signs in with Nookara (Chat scope) and calls POST
/bonfire/bots/gallery/:id/ticketwith{"instance":"https://chat.ikelene.net"}(30 per minute). The instance must be registered and not banned. The answer is{"ticket":"JWS","expires_in":300,"bot":{id,username},"test":false}. Errors:invalid_instance,unknown_instance,instance_banned,bot_is_private,gallery_banned,bot_not_found. - The ticket is an EdDSA JWS (
typ: bonfire-botadd+jwt) signed with Nookara's key (JWKS at/.well-known/bonfire/jwks.json), valid 5 minutes, single use, and bound to that instance and that person. - Send it to the instance: POST
https://INSTANCE/api/v1/bots/gallery/addwith{"ticket":"...","sid":"COMMUNITY_SID"}(instance session, Chat scope). The person needs Manage server there. Errors includeticket_invalid,ticket_expired(410),ticket_used(409),ticket_wrong_audience,ticket_wrong_user(403),already_in_server,not_allowed(403) andgallery_needs_velora_account.
Who may add a bot: its owner (any state except banned), anybody with Manage server when it is approved, and admins for review. Everybody else gets 403 bot_is_private.
How a listed bot runs inside a server
Each instance creates its own bot account for it (BOT tag, verified checkmark, a normal member subject to roles and channel permissions). Its profile and token hash come from Nookara, so the developer connects with the same token: REST https://INSTANCE/bot/v1 and gateway wss://INSTANCE/bot/gateway with Authorization: Bot TOKEN. The bot's code needs one connection per instance it serves (in the PenguinMod extension and the Python library that is the instance URL option). Instances re-check every 10 minutes: a token reset, a delisting or a ban takes effect within about 10 minutes. On the instance, editing a gallery bot, its avatar and its token answer 403 gallery_bot_managed; managers can still remove or kick it. trusted_in counts distinct servers that have the bot.
Python
from velora_api import Client, Instance
velora = Client(token) # needs Chat (2048)
print(velora.list_gallery("music", tag="fun")["results"]) # public
velora.save_gallery_listing("258", long_description="What it does", tags=["music"], permissions=["send_messages"])
velora.submit_to_gallery("258") # state: pending
print(velora.gallery_status("258")["gallery"]["state"])
# velora.withdraw_from_gallery("258")
ticket = velora.gallery_ticket("258", "https://chat.ikelene.net")["ticket"]
chat = Instance("https://chat.ikelene.net")
chat.login_with_velora(velora)
chat.add_gallery_bot(ticket) # or sid="COMMUNITY_SID"
Bot programs: where is my bot installed?
A bot added from the gallery runs on many instances with one token. GET /bonfire/bots/self/installs with Authorization: Bot TOKEN (120 per minute per IP) answers {"instances":[{"origin":"https://x.example","name":"Server","test":false,"added_at":1792444301439,"seen_at":1792444301439}]} from the instances' 10-minute sync reports. Banned instances are left out and a banned bot gets an empty list. Open one INSTANCE/bot/gateway per origin (discovery: origin + /bot/discovery) and poll again every few minutes; skip test installs. Staff can try a bot before it is listed by adding it to a server as a test install: test installs exist, are returned here with "test":true, and are not counted (they never add to "trusted in N servers"). A bot program should not treat them as real customers. Errors: 401 invalid_bot_token.
from velora_api import BotProgram
async with BotProgram(os.environ["VELORA_BOT_TOKEN"]) as bot:
async for event in bot: # {"instance": origin, "type": "MESSAGE_CREATE", "data": {...}}
...
Staff review routes exist but are not part of this public guide.
Settings and notifications
These are account-level Nookara settings. Instances have their own per-server version: GET and PATCH /api/v1/settings and GET /api/v1/notify, PUT /api/v1/notify/:target with the same bodies.
Instances also tell you about people through GET /api/v1/identities; Nookara's /chat/identities?ids= (Chat, up to 200 ids) does the same for Nookara accounts.
GET /chat/settings returns settings and defaults. PATCH it with only the properties the user changed. Settings include show_typing, share_typing, share_activity, sounds, notifications, dm_privacy, compact, animations, link_images, server_order, daily_notice, developer_mode, allow_vc_calls, yt_mode, notify_sound, radio_enabled, radio_url and strip_tracking.
Removing tracking from links: strip_tracking is null until the user has been asked (Ember asks the first time a pasted or sent link has tracking junk in it), then true (clean links automatically) or false. When it is true, Ember removes known tracking parameters (utm_*, fbclid, gclid, YouTube/Spotify si, and similar) from links before sending; the server does not change message text, so a client that wants the same behaviour does it before it posts.
Credit balances need CURRENCY_READ: GET /chat/channels/:cid/shop (and the shop responses of the buy and take-off calls) return balance: null when the token lacks the Viewing Subscriptions scope (CURRENCY_READ); the rest of the shop works. account.credits in GET /account/me is null without that scope as well.
| Setting | Values |
|---|---|
| notifications | all, mentions, none |
| dm_privacy | everyone, friends, servers |
| yt_mode | ask, velora, youtube |
| notify_sound | short, long, classic |
| radio_url | An http(s) stream URL, up to 500 characters (default https://www.clubfmserver.be/pink.mp3) |
| server_order | Array of server sids |
| Other listed switches | Boolean |
Internet Radio (an easter egg from ScratchCord): with radio_enabled on, Ember plays radio_url and draws a visualizer behind the chat. The audio goes through Nookara so the browser may analyse it: POST /chat/radio/ticket with {"url":"..."} returns {"src":"/chat/radio/stream?t=..."}, a signed link for an audio element that is valid for 2 minutes to start. The proxy only fetches public http(s) addresses (ports 80, 443 or 1024 and up), only passes audio content types, and allows 2 streams per account. Errors: bad_radio_url, bad_ticket, too_many_streams, private_address, not_audio, radio_unreachable.
GET /chat/notify and PUT /chat/notify/:target manage per-server/channel preferences. Body: {"level":"mentions","mute_minutes":0,"push":true}. Levels are default, all, mentions or none; mute_minutes is 0 to unmute, -1 forever, or a duration in minutes. Use the server sid or channel cid as target.
Notifications (the bell)
Friend requests, credits, store sales and refunds, badges, membership, hosting and messages from the Nookara team arrive as notifications: the bell next to the account on the site and in Ember, with the full list at /me#notifications. They are separate from direct messages, message history and browser subscription state. The routes live under /account and need only a signed-in token:
GET /account/notifications?unread=1&category=friends&cursor=LAST_ID&limit=30
GET /account/notifications/unread-count -> {"unread": 3}
POST /account/notifications/read {"ids": [1234, 1235]} or {"all": true}
POST /account/notifications/unread {"ids": [1234]}
DELETE /account/notifications/:id
The list is newest first, up to 50 per page (30 by default). Pass the next_cursor you got back as cursor for the next page; it is null on the last one. All filters are optional.
{"notifications":[{"id":1234,"category":"friends","kind":"friend_request",
"title":"Friend request","body":"**alice** wants to be your friend","link":"/me#people",
"icon":"user-plus","actor":{"username":"alice","pfp_url":"https://..."},
"data":{"from_username":"alice"},"read":false,"read_at":null,"created_at":"2026-10-29T15:04:05.000Z"}],
"next_cursor":null,"unread":1}
title and body are plain text with one piece of markup, **bold**. Render it yourself and never insert either as HTML. link is a site path such as /me#credits or an https URL (or null); actor is the account that caused it, or null, in which case draw icon (a lucide icon name). kind is a finer type inside the category and may grow new values. The read, unread and delete calls return {"success":true,"unread":N} so a badge can update straight away; deleting an unknown id (or one of another account) is 404 not_found.
Categories and settings. GET /account/notification-settings returns {"categories":[{key, label, description, icon, locked, staff, email, list}]} in the order the settings page shows them. list means it lands in the bell and on the account's devices (browser push, the Ember apps); email means it is also emailed, at most one email per category every ten minutes and 20 a day. The categories are system (announcements from Nookara), moderation, credits, friends, store, membership, badges and hosting, plus staff_signups, staff_feedback and staff_alerts, which only exist for staff accounts (staff: true; other accounts never see them). system and moderation are locked: always on, and shown checked but disabled. Change switches by sending only the keys that changed:
PATCH /account/notification-settings
{"prefs":{"friends":{"list":true,"email":false},"credits":{"email":true}}}
Locked and unknown categories are ignored; the reply is {"success":true,"categories":[...]} like the GET. Any key from that list also works as the category filter of the list.
Live updates. The user websocket delivers two events to every open session of the account, so several tabs and devices stay in step:
{"type":"notification_new","notification":{ ...same shape as the list... },"unread":4}
{"type":"notifications_updated","unread":2,"read":[1234,1235]}
// read is a list of ids or "all"; instead of read you may get "unread_ids":[...] or "deleted":[...]
Apply the change to what you show and use unread as the new badge count. After a reconnect, refetch the list and the count over REST; there is no replay. The Ember Android app's notification-only socket gets notification_new as it is when its auth_token frame includes "capabilities":["notification_new"]; older builds without it get a bonfire_notice copy instead.
System DMs are gone. Nookara no longer creates direct messages from "System" (from_system): everything that used to arrive that way is a notification now, mostly in the locked system category. Old system messages stay in DM history and can still be read.
The older feed. GET /notifications (unread, up to 50), GET /notifications/count ({"count"}), PATCH /notifications/read-all and DELETE /notifications/:id still exist for the Scratch and PenguinMod extension. They read the same notifications with the ** markers removed, as {id, type, category, title, body, data, created_at}. New clients should use the /account routes above.
The /push API is for browser Web Push subscriptions and VAPID. Its switches (GET /push/state, PATCH /push/prefs) cover chat-type events such as messages, calls, mentions and achievements; friends, credits and announcements are notifications and follow the notification settings above instead. A desktop client should use its OS notification settings and display notifications from the relevant events. Do not show browser-permission controls as desktop notification settings. Respect privacy, per-conversation mute and the user's global notification choice.
Featured projects
Featured projects lists apps and games built with Nookara's services. Staff add projects by hand, and anyone signed in can submit their own; every submission waits for review. The homepage shows the same list as a carousel. The listing is public and needs no sign-in, so a launcher, website or bot can show it too.
Reading the list
GET /api/projects returns approved projects, featured ones first (then the staff order, then newest). Query: q (searches the name, tagline and creator), service (one key from GET /api/projects/services), featured=1 (only featured ones), limit (1-100, default 60) and offset. The response is { "total": 12, "limit": 60, "offset": 0, "projects": [...] }. GET /api/projects/<slug> returns { "project": {...} } for one project, or 404 not_found.
{
"id": 7, "slug": "star-racer", "title": "Star Racer", "tagline": "A racing game with Nookara sign-in",
"description": "Plain text, may contain newlines", "url": "https://example.com/star-racer",
"icon_url": "https://nookara.cc/uploads/projects/....webp", "cover_url": null, "show_logo": true, "logo_size": 40,
"services": ["login", "storage"], "featured": true,
"creator": { "username": "nat", "pfp_url": "...", "color": "#7c5cff", "profile_url": "https://nookara.cc/u/nat" },
"by": "Team Star", "page_url": "https://nookara.cc/projects/star-racer", "created_at": "2026-10-29T18:00:00.000Z"
}
show_logo is true by default: when the project has both an icon and a cover, the icon is drawn in the middle of the cover. Send false to show the cover alone. logo_size (10-90, default 40) is the logo's width as a percent of the cover's width; the logo is centered on the cover, keeps its own shape and has no background. creator is the linked Nookara account (or null) and by a free-text credit (or null); a project can have either or both. Every text field is plain text: show it as text, never as HTML. Service keys: login, storage, credits, chat, messages, friends, voice, media, cloudlink, hyperfocus, embed.
curl "https://nookara.cc/api/projects?service=login&limit=12"
from velora_api import Client
velora = Client() # no token needed to read the list
page = velora.request("GET", "/api/projects", query={"service": "login", "limit": 12}, auth=False)
for project in page["projects"]:
print(project["title"], "-", project["creator"]["username"] if project["creator"] else project["by"])
Submitting a project
POST /api/projects with a user Bearer token and { "title", "tagline", "url", "services": [...], "description"?, "icon"?, "cover"?, "show_logo"?, "logo_size"? }. The account that sends it is shown as the creator, and the project starts as pending. url has to be a full https address. Names, taglines and descriptions are plain text (anything shaped like an HTML tag is removed). icon and cover are a data:image/...;base64, upload or an https image link (PNG, JPG, WebP or GIF, 5 MB at most); Nookara re-hosts them. Limits: 3 submissions a day per account, 6 a day per connection, and 5 waiting or rejected at once (429 submit_limit, with a readable message).
GET /api/projects/mine lists your submissions in every state, with status (pending, approved, rejected or hidden) and the reject_reason staff gave. PATCH /api/projects/<id> edits a pending or rejected one (send only the fields you change) and puts it back in the queue; DELETE /api/projects/<id> withdraws it. Approved projects can only be changed by staff (409 not_editable). When staff approve or reject a submission, the submitter gets a notification in the projects category (see Settings and notifications), with the reason for a rejection.
Errors are { "error": "invalid", "message": "a readable sentence" }: invalid, rate_limited, submit_limit, bad_image, image_too_large, image_fetch_failed, not_found, not_editable. Staff review submissions in the staff panel; those routes (/admin/projects) need the Featured projects staff permission.
Other integrations and privileged routes
The endpoint inventory also includes OAuth linking, Spotify linking/profile visibility, reports/feedback, Hyperfocus profiles and achievements statistics, the embedded video-player API, desktop sign-in, child tokens, store access and Badge Arcade.
- OAuth and Spotify: start/link opens an interactive provider flow; callbacks are browser endpoints, not ordinary JSON GET requests. Use returned redirect URLs and official approval UI.
- Desktop sign-in:
/bonfire/app-codeand/app-exchangeare the official client's one-use code/deep-link protocol. Generic Python clients should use scoped/auth/ext-code, which does not assume the Ember URL handler. - Child tokens:
/auth/child-tokenis restricted to approved Hyperfocus Launcher parent sessions, and narrows the parent's grant. It is not a general token-minting endpoint. - Arcade: game requests depend on server-issued state, physics revision and account eligibility. Staff routes additionally need the configured rank. Treat the catalogue as a protocol inventory, not a way to bypass game state or payment approval.
- Staff:
/adminand other staff routes require actual server-side rank checks, often with owner-only restrictions. A user token or scope mask does not grant staff access. Destructive controls must be used only by authorized staff. - Staff notifications: POST
/admin/notifications/sendsends asystemnotification (locked, so nobody can turn it off). Body{"usernames":["a","b"],"title":"...","body":"...","link":"/me","email":false}for up to 200 accounts, or{"all":true,"confirm":"ALL", ...}for everyone, which only admins and the owner may do, once every ten minutes (429 too_soon).titleis up to 128 characters,bodyup to 2000 with**bold**,linka site path or an https URL. The reply is{"success":true,"sent":N,"emailed":false}; unknown names give404 user_not_foundwithmissing. The older POST/admin/send-vmail({username, subject, message}) still works and now creates a system notification instead of a DM.
Private service-to-service interfaces are not public client APIs: /bot (except the public bot payment API under /bot/payment-requests), the legacy external-service bot bridges, /store/internal, Hyperfocus internal mail/log callbacks, Ko-fi/payment delivery callbacks, deployment webhooks, and account-link completion callbacks. They require service credentials or trusted integration context. Those credentials, signing secrets and operational deployment interfaces are not included in the downloads.
The old /mail paths alias the documented /im routes. /storage-info mounts the same storage router; /storage-info/info/usage is its intended usage URL. Trailing-slash aliases are counted once.
Errors, limits and compatibility
| Status | Typical cause | Client behavior |
|---|---|---|
| 400 | Missing/invalid fields, invalid operation | Show useful validation; do not retry unchanged input |
| 401 | Missing, revoked or expired token | Clear invalid credentials and offer sign-in |
| 403 | Scope, rank, privacy, membership, ToS or account restriction | Explain the restriction; do not infer permissions from authentication alone |
| 404 | Unknown or hidden resource | Remove stale references; a hidden channel may deliberately appear missing |
| 409 / 410 | Conflicting state or expired upload/code | Refetch state or create a new session |
| 413 | File/body size or storage quota | Use chunks if appropriate, or reduce usage |
| 429 | Rate limit | Honor Retry-After/retry_after where supplied, then back off |
| 5xx | Service/upstream failure | Retry reads with backoff; resolve uncertain writes first |
Instances use the same shape, {"error":"snake_code"}, plus codes such as read_only, member_cap_reached (with cap), plan_limit (with what and limit), managed_setting, bad_signature (with reason), signing_unavailable, insufficient_scope, not_a_member, no_send_permission, community_exists, file_too_large (with max_mb), invalid_media_url, media_import_failed, gallery_bot_managed and the sign-in errors wrong_accounts_mode, token_expired, token_replayed, invalid_audience and banned. Nookara can be in maintenance: 503 {"error":"maintenance"} with Retry-After, which also pauses instance sign-in tickets. Instance rate limits include 30 webhook posts per minute per webhook and 150 bot requests per 10 seconds.
User REST commonly returns {"error":"insufficient_scope","required_scope":2048}, which only means the person did not grant that scope, since none is required: ask them to approve it, or hide the feature. Admin-disabled scopes return scope_disabled with disabled_by_admin. Bot/webhook errors often use {"message":"Missing Permissions","code":50013} instead. A response need not be JSON when it comes from a proxy or an upload middleware.
The current global HTTP limiter allows 150 requests per visitor/IP in 15 seconds; exceeding it causes a five-minute temporary API ban. Bot REST also limits 150 requests per bot per ten seconds. Webhook execution limits 30 per webhook per minute; external uploads 150 per account per hour. Other routes and realtime operations have additional limits. These are current implementation values, not guaranteed service capacity.
Use pagination, debounce typing, cache stable data and back off on errors. Keep IDs as strings and tolerate unknown fields/types. Most user endpoints are unversioned, so review changes when updating your client.
What was verified
The route inventory was checked against the live source snapshot of 19 October 2026 (Nookara and bonfire-server). The SDK is tested with local HTTP/websocket servers for authentication ordering, uploads, encoding, errors, nonce routing and all named REST method dispatches (Nookara and instance), including the instance login flows, the rule that a Nookara token never reaches an instance, scope handling (requested scopes, ScopeError, instance scopes from the ticket), gateway ordering and reconnect, the bot program across several instances, webhooks, invites, media import and the signing format with independent verification. Public live read-only smoke checks verify the deployed API and downloads. The notifications routes and events (29 October 2026) were added from the Nookara source before they went live. That does not mean every staff route, paid flow, provider callback or Python WebRTC implementation was exercised live. The earlier extension audit provides broader authenticated endpoint coverage; it is not a substitute for testing your application's inputs and permissions.
REST endpoint reference
Filter by feature, route, method, scope, body key or Python method name. The catalogue includes privileged and client-specific routes, labeled below. These examples never send requests from this page.
No matching operations. Clear the search or choose another category.
Authentication 27 operations
POST/auth/ext-codenone
Link to this operation · Python: api.post_auth_ext_code(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
permissions_integer, project_name
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/ext-code" \
-H "Content-Type: application/json" \
--data '{"permissions_integer":2049,"project_name":"My client"}'Python method
api.post_auth_ext_code(json={'permissions_integer': 2049, 'project_name': 'My client'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
reserved_project_name
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/auth/ext-code/heartbeatnone
Link to this operation · Python: api.get_auth_ext_code_heartbeat(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
code | Query | Sensitive pending authorization code. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/auth/ext-code/heartbeat"Python method
api.get_auth_ext_code_heartbeat(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/auth/ext-code/infonone
Link to this operation · Python: api.get_auth_ext_code_info(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
code | Query | Sensitive pending authorization code. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/auth/ext-code/info"Python method
api.get_auth_ext_code_info(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_or_expired_code, missing_code
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/ext-code/completenone
Link to this operation · Python: api.post_auth_ext_code_complete(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
code, granted_scopes, token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/ext-code/complete" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_ext_code_complete(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_granted_scopes, invalid_or_expired_code, invalid_token, missing_fields
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/auth/ext-code/statusnone
Link to this operation · Python: api.get_auth_ext_code_status(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
code | Query | Sensitive pending authorization code. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/auth/ext-code/status"Python method
api.get_auth_ext_code_status(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_or_expired_code, missing_code
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/registernone
Link to this operation · Python: api.post_auth_register(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Interactive: CAPTCHA verification or a server-recognized CAPTCHA pass is required. See the sign-in/payment guide.
Observed top-level request keys
email, password, tos_accepted, username, captcha_token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/register" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_register(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_email, invalid_username, ip_banned, missing_fields, password_too_short, server_error, tos_not_accepted, username_or_email_taken
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/register/verifynone
Link to this operation · Python: api.post_auth_register_verify(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
code, email
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/register/verify" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_register_verify(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_code, invalid_or_expired_code, missing_fields, server_error, too_many_attempts, username_or_email_taken
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/register/verify-linknone
Link to this operation · Python: api.post_auth_register_verify_link(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/register/verify-link" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_register_verify_link(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_or_expired_link, missing_fields, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/register/statusnone
Link to this operation · Python: api.post_auth_register_status(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
claim_token, email, verify_token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/register/status" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_register_status(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
expired, missing_fields, not_authorized, not_found, server_error, username_or_email_taken
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/register/resendnone
Link to this operation · Python: api.post_auth_register_resend(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Interactive: CAPTCHA verification or a server-recognized CAPTCHA pass is required. See the sign-in/payment guide.
Observed top-level request keys
email, captcha_token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/register/resend" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_register_resend(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
missing_fields, not_found, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/loginnone
Link to this operation · Python: api.post_auth_login(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Interactive: CAPTCHA verification or a server-recognized CAPTCHA pass is required. See the sign-in/payment guide.
Observed top-level request keys
password, username, captcha_token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/login" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_login(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
account_banned, account_suspended, invalid_credentials, ip_banned, missing_fields, no_password_set, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/verify-new-ipnone
Link to this operation · Python: api.post_auth_verify_new_ip(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
pending_id
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/verify-new-ip" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_verify_new_ip(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
expired_or_invalid, server_error, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/verify-email-linknone
Link to this operation · Python: api.post_auth_verify_email_link(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/verify-email-link" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_verify_email_link(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_or_expired_link, missing_fields, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/verify-ip-linknone
Link to this operation · Python: api.post_auth_verify_ip_link(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/verify-ip-link" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_verify_ip_link(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_or_expired_link, missing_fields, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/resend-new-ipnone
Link to this operation · Python: api.post_auth_resend_new_ip(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Interactive: CAPTCHA verification or a server-recognized CAPTCHA pass is required. See the sign-in/payment guide.
Observed top-level request keys
pending_id, captcha_token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/resend-new-ip" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_resend_new_ip(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
expired_or_invalid, no_email, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/validatebearer
Link to this operation · Python: api.post_auth_validate(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/validate" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_validate(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_token, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/accept-tosbearer
Link to this operation · Python: api.post_auth_accept_tos(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
version
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/accept-tos" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_accept_tos(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_tos_version, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/logoutbearer
Link to this operation · Python: api.post_auth_logout(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/logout" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_auth_logout()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/set-emailbearer
Link to this operation · Python: api.post_auth_set_email(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
email
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/set-email" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_set_email(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
email_taken, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/verify-emailbearer
Link to this operation · Python: api.post_auth_verify_email(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/verify-email" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_auth_verify_email()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/resend-verificationbearer
Link to this operation · Python: api.post_auth_resend_verification(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Interactive: CAPTCHA verification or a server-recognized CAPTCHA pass is required. See the sign-in/payment guide.
Observed top-level request keys
captcha_token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/resend-verification" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_resend_verification(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
already_verified, no_email, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/auth/sessions/:sessionIdbearer
Link to this operation · Python: api.delete_auth_sessions_by_sessionid(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
sessionId | Path (required) | Session identifier. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/auth/sessions/YOUR_SESSIONID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_auth_sessions_by_sessionid(sessionId="YOUR_SESSIONID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/auth/sessionsbearer
Link to this operation · Python: api.get_auth_sessions(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/auth/sessions" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_auth_sessions()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/auth/login-historybearer
Link to this operation · Python: api.get_auth_login_history(...)
Authentication: User Bearer token
Token scopes: PROFILE_SENSITIVE (2)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/auth/login-history" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_auth_login_history()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/forgot-passwordnone
Link to this operation · Python: api.post_auth_forgot_password(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Interactive: CAPTCHA verification or a server-recognized CAPTCHA pass is required. See the sign-in/payment guide.
Observed top-level request keys
email, captcha_token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/forgot-password" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_forgot_password(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
missing_email, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/reset-passwordnone
Link to this operation · Python: api.post_auth_reset_password(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Interactive: CAPTCHA verification or a server-recognized CAPTCHA pass is required. See the sign-in/payment guide.
Observed top-level request keys
password, token, captcha_token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/reset-password" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_reset_password(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_input, invalid_or_expired_token, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/api/tos/currentnone
Link to this operation · Python: api.get_api_tos_current(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/api/tos/current"Python method
api.get_api_tos_current()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
OAuth connections 9 operations
GET/auth/oauth/providersnone
Link to this operation · Python: api.get_auth_oauth_providers(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/auth/oauth/providers"Python method
api.get_auth_oauth_providers()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/auth/oauth/:p/startnone
Link to this operation · Python: api.get_auth_oauth_by_p_start(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
p | Path (required) | Identifier from the corresponding API response. |
ret | Query | Endpoint-specific query value. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/auth/oauth/YOUR_P/start"Python method
api.get_auth_oauth_by_p_start(p="YOUR_P", query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/oauth/:p/linkbearer
Link to this operation · Python: api.post_auth_oauth_by_p_link(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
p | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/oauth/YOUR_P/link" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_auth_oauth_by_p_link(p="YOUR_P")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
unknown_provider
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/auth/oauth/:p/callbacknone
Link to this operation · Python: api.get_auth_oauth_by_p_callback(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
p | Path (required) | Identifier from the corresponding API response. |
code | Query | Sensitive pending authorization code. |
error | Query | Endpoint-specific query value. |
state | Query | Endpoint-specific query value. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/auth/oauth/YOUR_P/callback"Python method
api.get_auth_oauth_by_p_callback(p="YOUR_P", query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/oauth/exchangenone
Link to this operation · Python: api.post_auth_oauth_exchange(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
Observed top-level request keys
code
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/oauth/exchange" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_oauth_exchange(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
account_banned, account_suspended, ip_banned, oauth_expired, oauth_no_email, password_required, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/auth/oauth/signupnone
Link to this operation · Python: api.post_auth_oauth_signup(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
Observed top-level request keys
code, tos_accepted, username
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/oauth/signup" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_oauth_signup(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
account_banned, account_suspended, already_linked, email_taken, invalid_username, ip_banned, oauth_expired, oauth_no_email, password_required, server_error, tos_not_accepted, user_not_found, username_taken
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/auth/oauth/linkedbearer
Link to this operation · Python: api.get_auth_oauth_linked(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/auth/oauth/linked" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_auth_oauth_linked()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/auth/oauth/:pbearer
Link to this operation · Python: api.patch_auth_oauth_by_p(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
p | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
show
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/auth/oauth/YOUR_P" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_auth_oauth_by_p(p="YOUR_P", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_linked
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/auth/oauth/:pbearer
Link to this operation · Python: api.delete_auth_oauth_by_p(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
p | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/auth/oauth/YOUR_P" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_auth_oauth_by_p(p="YOUR_P")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
last_login_method, not_linked
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Child tokens 1 operations
POST/auth/child-tokenbearer
Link to this operation · Python: api.post_auth_child_token(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
Observed top-level request keys
project, scopes
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/auth/child-token" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_auth_child_token(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_project, no_scopes, not_a_launcher
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Official desktop sign-in 7 operations
GET/bonfire/app-loginnone
Link to this operation · Python: api.get_bonfire_app_login(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Browser entry point of the official apps: ?state=STATE (16 to 128 URL-safe characters) and client=web|desktop|android. Redirects to the Nookara consent screen.
| Parameter | Location | Meaning |
|---|---|---|
client | Query | Endpoint-specific query value. |
done | Query | Endpoint-specific query value. |
state | Query | Endpoint-specific query value. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/app-login"Python method
api.get_bonfire_app_login(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/scopes.jsonnone
Link to this operation · Python: api.get_bonfire_scopes_json(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Public. What the official Ember apps ask for: {version, scopes: [{id, bit, required: false, since, name, reason}], permissions_integer, ...}. Nothing is required; every scope is the person's choice.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/scopes.json"Python method
api.get_bonfire_scopes_json()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/sessionbearer
Link to this operation · Python: api.get_bonfire_session(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Any token. Compares the token with what Ember asks for: {granted, effective, disabled, not_granted: [...]}. Informational: not_granted never blocks. Also works as a general "which scopes did I get?" call.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/session" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_session()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/app-exchangenone
Link to this operation · Python: api.post_bonfire_app_exchange(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Official apps: body {code, state} returns {token, username, scopes, version}. One try per code.
Observed top-level request keys
code, state
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/app-exchange" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_bonfire_app_exchange(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_code, not_allowed, rate_limited, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/replace-tokenbearer
Link to this operation · Python: api.post_bonfire_replace_token(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Official apps: revokes the app token that was replaced after a new sign-in.
Observed top-level request keys
old
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/replace-token" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_bonfire_replace_token(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/sign-outbearer
Link to this operation · Python: api.post_bonfire_sign_out(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Official apps: revokes the calling Ember app token (never a website session).
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/sign-out" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_bonfire_sign_out()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/app-codenone
Link to this operation · Python: api.post_bonfire_app_code(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Gone (410 login_again). Apps now sign in through the consent screen.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/app-code"Python method
api.post_bonfire_app_code()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
login_again
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Accounts 11 operations
GET/account/mebearer
Link to this operation · Python: api.get_account_me(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/account/me" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_account_me()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/account/change-usernamebearer
Link to this operation · Python: api.post_account_change_username(...)
Authentication: User Bearer token
Token scopes: ACCOUNT_WRITE (8)
Observed top-level request keys
username
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/account/change-username" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_account_change_username(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_username, no_free_rename, same_username, username_taken
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/account/onboarding/completebearer
Link to this operation · Python: api.post_account_onboarding_complete(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/account/onboarding/complete" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_account_onboarding_complete()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/account/exportbearer
Link to this operation · Python: api.get_account_export(...)
Authentication: User Bearer token
Token scopes: PROFILE_SENSITIVE (2)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/account/export" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_account_export()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/account/sessions/:tokenIdbearer
Link to this operation · Python: api.delete_account_sessions_by_tokenid(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
tokenId | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/account/sessions/YOUR_TOKENID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_account_sessions_by_tokenid(tokenId="YOUR_TOKENID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
cannot_revoke_current_session
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/account/searchnone
Link to this operation · Python: api.get_account_search(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
q | Query | Search text; URL encode it. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/account/search"Python method
api.get_account_search(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
rate_limited
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/account/lookup/:usernamenone
Link to this operation · Python: api.get_account_lookup_by_username(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/account/lookup/YOUR_USERNAME"Python method
api.get_account_lookup_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/account/updatebearer
Link to this operation · Python: api.patch_account_update(...)
Authentication: User Bearer token
Token scopes: ACCOUNT_WRITE (8)
Observed top-level request keys
bio, timezone, country_code, color, profile_visibility, website
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/account/update" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_account_update(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bio_too_long, invalid_pronouns, invalid_visibility, invalid_website, no_fields
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/account/change-passwordbearer
Link to this operation · Python: api.post_account_change_password(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
password
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/account/change-password" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_account_change_password(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
password_too_short, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/account/mebearer
Link to this operation · Python: api.delete_account_me(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
password
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/account/me" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.delete_account_me(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_password, missing_password, owner_cannot_delete, server_error, subscription_active, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/account/cursor-ticketbearer
Link to this operation · Python: api.get_account_cursor_ticket(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/account/cursor-ticket" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_account_cursor_ticket()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
unavailable
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Cloud storage 16 operations
GET/storage/info/usagebearer
Link to this operation · Python: api.get_storage_info_usage(...)
Authentication: User Bearer token
Token scopes: STORAGE_READ (16)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/storage/info/usage" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_storage_info_usage()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/storage/:storageIdbearer
Link to this operation · Python: api.get_storage_by_storageid(...)
Authentication: User Bearer token
Token scopes: STORAGE_READ (16)
| Parameter | Location | Meaning |
|---|---|---|
storageId | Path (required) | Your application storage namespace. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/storage/YOUR_STORAGEID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_storage_by_storageid(storageId="YOUR_STORAGEID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/storage/:storageId/keysbearer
Link to this operation · Python: api.get_storage_by_storageid_keys(...)
Authentication: User Bearer token
Token scopes: STORAGE_READ (16)
| Parameter | Location | Meaning |
|---|---|---|
storageId | Path (required) | Your application storage namespace. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/storage/YOUR_STORAGEID/keys" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_storage_by_storageid_keys(storageId="YOUR_STORAGEID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/storage/:storageId/valuesbearer
Link to this operation · Python: api.get_storage_by_storageid_values(...)
Authentication: User Bearer token
Token scopes: STORAGE_READ (16)
| Parameter | Location | Meaning |
|---|---|---|
storageId | Path (required) | Your application storage namespace. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/storage/YOUR_STORAGEID/values" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_storage_by_storageid_values(storageId="YOUR_STORAGEID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/storage/:storageId/:keybearer
Link to this operation · Python: api.get_storage_by_storageid_by_key(...)
Authentication: User Bearer token
Token scopes: STORAGE_READ (16)
| Parameter | Location | Meaning |
|---|---|---|
storageId | Path (required) | Your application storage namespace. |
key | Path (required) | Storage/activity key. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/storage/YOUR_STORAGEID/YOUR_KEY" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_storage_by_storageid_by_key(storageId="YOUR_STORAGEID", key="YOUR_KEY")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
key_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/storage/:storageId/:keybearer
Link to this operation · Python: api.put_storage_by_storageid_by_key(...)
Authentication: User Bearer token
Token scopes: STORAGE_WRITE (32)
| Parameter | Location | Meaning |
|---|---|---|
storageId | Path (required) | Your application storage namespace. |
key | Path (required) | Storage/activity key. |
Observed top-level request keys
value
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/storage/YOUR_STORAGEID/YOUR_KEY" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"value":"My saved value"}'Python method
api.put_storage_by_storageid_by_key(storageId="YOUR_STORAGEID", key="YOUR_KEY", json={'value': 'My saved value'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
missing_value, storage_limit_exceeded
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/storage/:storageId/:keybearer
Link to this operation · Python: api.delete_storage_by_storageid_by_key(...)
Authentication: User Bearer token
Token scopes: STORAGE_WRITE (32)
| Parameter | Location | Meaning |
|---|---|---|
storageId | Path (required) | Your application storage namespace. |
key | Path (required) | Storage/activity key. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/storage/YOUR_STORAGEID/YOUR_KEY" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_storage_by_storageid_by_key(storageId="YOUR_STORAGEID", key="YOUR_KEY")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/storage/:storageIdbearer
Link to this operation · Python: api.delete_storage_by_storageid(...)
Authentication: User Bearer token
Token scopes: STORAGE_WRITE (32)
| Parameter | Location | Meaning |
|---|---|---|
storageId | Path (required) | Your application storage namespace. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/storage/YOUR_STORAGEID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_storage_by_storageid(storageId="YOUR_STORAGEID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/storage-info/info/usagebearer
Link to this operation · Python: api.get_storage_info_info_usage(...)
Authentication: User Bearer token
Token scopes: STORAGE_READ (16)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/storage-info/info/usage" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_storage_info_info_usage()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/storage-info/:storageIdbearer
Link to this operation · Python: api.get_storage_info_by_storageid(...)
Authentication: User Bearer token
Token scopes: STORAGE_READ (16)
| Parameter | Location | Meaning |
|---|---|---|
storageId | Path (required) | Your application storage namespace. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/storage-info/YOUR_STORAGEID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_storage_info_by_storageid(storageId="YOUR_STORAGEID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/storage-info/:storageId/keysbearer
Link to this operation · Python: api.get_storage_info_by_storageid_keys(...)
Authentication: User Bearer token
Token scopes: STORAGE_READ (16)
| Parameter | Location | Meaning |
|---|---|---|
storageId | Path (required) | Your application storage namespace. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/storage-info/YOUR_STORAGEID/keys" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_storage_info_by_storageid_keys(storageId="YOUR_STORAGEID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/storage-info/:storageId/valuesbearer
Link to this operation · Python: api.get_storage_info_by_storageid_values(...)
Authentication: User Bearer token
Token scopes: STORAGE_READ (16)
| Parameter | Location | Meaning |
|---|---|---|
storageId | Path (required) | Your application storage namespace. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/storage-info/YOUR_STORAGEID/values" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_storage_info_by_storageid_values(storageId="YOUR_STORAGEID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/storage-info/:storageId/:keybearer
Link to this operation · Python: api.get_storage_info_by_storageid_by_key(...)
Authentication: User Bearer token
Token scopes: STORAGE_READ (16)
| Parameter | Location | Meaning |
|---|---|---|
storageId | Path (required) | Your application storage namespace. |
key | Path (required) | Storage/activity key. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/storage-info/YOUR_STORAGEID/YOUR_KEY" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_storage_info_by_storageid_by_key(storageId="YOUR_STORAGEID", key="YOUR_KEY")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
key_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/storage-info/:storageId/:keybearer
Link to this operation · Python: api.put_storage_info_by_storageid_by_key(...)
Authentication: User Bearer token
Token scopes: STORAGE_WRITE (32)
| Parameter | Location | Meaning |
|---|---|---|
storageId | Path (required) | Your application storage namespace. |
key | Path (required) | Storage/activity key. |
Observed top-level request keys
value
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/storage-info/YOUR_STORAGEID/YOUR_KEY" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.put_storage_info_by_storageid_by_key(storageId="YOUR_STORAGEID", key="YOUR_KEY", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
missing_value, storage_limit_exceeded
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/storage-info/:storageId/:keybearer
Link to this operation · Python: api.delete_storage_info_by_storageid_by_key(...)
Authentication: User Bearer token
Token scopes: STORAGE_WRITE (32)
| Parameter | Location | Meaning |
|---|---|---|
storageId | Path (required) | Your application storage namespace. |
key | Path (required) | Storage/activity key. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/storage-info/YOUR_STORAGEID/YOUR_KEY" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_storage_info_by_storageid_by_key(storageId="YOUR_STORAGEID", key="YOUR_KEY")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/storage-info/:storageIdbearer
Link to this operation · Python: api.delete_storage_info_by_storageid(...)
Authentication: User Bearer token
Token scopes: STORAGE_WRITE (32)
| Parameter | Location | Meaning |
|---|---|---|
storageId | Path (required) | Your application storage namespace. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/storage-info/YOUR_STORAGEID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_storage_info_by_storageid(storageId="YOUR_STORAGEID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Direct messages 13 operations
POST/im/sendbearer
Link to this operation · Python: api.post_im_send(...)
Authentication: User Bearer token
Token scopes: VMAIL_SEND (128)
Observed top-level request keys
message, status_reply, to
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/im/send" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"to":"USERNAME","message":"Hello!"}'Python method
api.post_im_send(json={'to': 'USERNAME', 'message': 'Hello!'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
cannot_dm_bot, cannot_reply_own_status, message_too_long, missing_fields, status_changed, too_many_recipients, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/im/status-reply/:usernamebearer
Link to this operation · Python: api.get_im_status_reply_by_username(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/im/status-reply/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_im_status_reply_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/im/conversationsbearer
Link to this operation · Python: api.get_im_conversations(...)
Authentication: User Bearer token
Token scopes: VMAIL_READ (64)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/im/conversations" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_im_conversations()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/im/with/:usernamebearer
Link to this operation · Python: api.get_im_with_by_username(...)
Authentication: User Bearer token
Token scopes: VMAIL_READ (64)
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
before | Query | Fetch history before this message ID (starboard: starred_at cursor). |
limit | Query | Maximum page size; endpoint-specific default/cap. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/im/with/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_im_with_by_username(username="YOUR_USERNAME", query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/im/with/:username/readbearer
Link to this operation · Python: api.post_im_with_by_username_read(...)
Authentication: User Bearer token
Token scopes: VMAIL_READ (64)
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/im/with/YOUR_USERNAME/read" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_im_with_by_username_read(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/imbearer
Link to this operation · Python: api.get_im(...)
Authentication: User Bearer token
Token scopes: VMAIL_READ (64)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/im" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_im()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/im/inboxbearer
Link to this operation · Python: api.get_im_inbox(...)
Authentication: User Bearer token
Token scopes: VMAIL_READ (64)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/im/inbox" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_im_inbox()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/im/sentbearer
Link to this operation · Python: api.get_im_sent(...)
Authentication: User Bearer token
Token scopes: VMAIL_READ (64)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/im/sent" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_im_sent()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/im/unread-countbearer
Link to this operation · Python: api.get_im_unread_count(...)
Authentication: User Bearer token
Token scopes: VMAIL_READ (64)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/im/unread-count" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_im_unread_count()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/im/:id/readbearer
Link to this operation · Python: api.patch_im_by_id_read(...)
Authentication: User Bearer token
Token scopes: VMAIL_READ (64)
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/im/YOUR_ID/read" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.patch_im_by_id_read(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/im/:id/editbearer
Link to this operation · Python: api.patch_im_by_id_edit(...)
Authentication: User Bearer token
Token scopes: VMAIL_SEND (128)
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
body
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/im/YOUR_ID/edit" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_im_by_id_edit(id="YOUR_ID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
message_not_found, message_too_long, missing_fields
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/im/:idbearer
Link to this operation · Python: api.delete_im_by_id(...)
Authentication: User Bearer token
Token scopes: VMAIL_SEND (128)
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/im/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_im_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/imbearer
Link to this operation · Python: api.delete_im(...)
Authentication: User Bearer token
Token scopes: VMAIL_SEND (128)
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/im" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_im()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Friends 7 operations
GET/friendsbearer
Link to this operation · Python: api.get_friends(...)
Authentication: User Bearer token
Token scopes: FRIENDS_READ (256)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/friends" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_friends()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/friends/requestsbearer
Link to this operation · Python: api.get_friends_requests(...)
Authentication: User Bearer token
Token scopes: FRIENDS_READ (256)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/friends/requests" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_friends_requests()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/friends/requestbearer
Link to this operation · Python: api.post_friends_request(...)
Authentication: User Bearer token
Token scopes: FRIENDS_MANAGE (512)
Observed top-level request keys
username
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/friends/request" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"username":"USERNAME"}'Python method
api.post_friends_request(json={'username': 'USERNAME'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
already_friends, cannot_friend_bot, invalid_target, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/friends/request/:id/acceptbearer
Link to this operation · Python: api.patch_friends_request_by_id_accept(...)
Authentication: User Bearer token
Token scopes: FRIENDS_MANAGE (512)
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/friends/request/YOUR_ID/accept" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.patch_friends_request_by_id_accept(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
request_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/friends/request/:id/declinebearer
Link to this operation · Python: api.patch_friends_request_by_id_decline(...)
Authentication: User Bearer token
Token scopes: FRIENDS_MANAGE (512)
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/friends/request/YOUR_ID/decline" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.patch_friends_request_by_id_decline(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/friends/:usernamebearer
Link to this operation · Python: api.delete_friends_by_username(...)
Authentication: User Bearer token
Token scopes: FRIENDS_MANAGE (512)
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/friends/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_friends_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/friends/status/:usernamebearer
Link to this operation · Python: api.get_friends_status_by_username(...)
Authentication: User Bearer token
Token scopes: FRIENDS_READ (256)
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/friends/status/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_friends_status_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Group chats 9 operations
GET/groupsbearer
Link to this operation · Python: api.get_groups(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/groups" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_groups()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/groupsbearer
Link to this operation · Python: api.post_groups(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Observed top-level request keys
members, name
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/groups" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"name":"Project group","members":["USERNAME"]}'Python method
api.post_groups(json={'name': 'Project group', 'members': ['USERNAME']})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/groups/:roombearer
Link to this operation · Python: api.get_groups_by_room(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
room | Path (required) | Room identifier returned by group/call APIs. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/groups/YOUR_ROOM" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_groups_by_room(room="YOUR_ROOM")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/groups/:room/messagesbearer
Link to this operation · Python: api.get_groups_by_room_messages(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
room | Path (required) | Room identifier returned by group/call APIs. |
limit | Query | Maximum page size; endpoint-specific default/cap. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/groups/YOUR_ROOM/messages" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_groups_by_room_messages(room="YOUR_ROOM", query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/groups/:room/messagesbearer
Link to this operation · Python: api.post_groups_by_room_messages(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
room | Path (required) | Room identifier returned by group/call APIs. |
Observed top-level request keys
color, message
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/groups/YOUR_ROOM/messages" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"message":"Hello group!"}'Python method
api.post_groups_by_room_messages(room="YOUR_ROOM", json={'message': 'Hello group!'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/groups/:room/membersbearer
Link to this operation · Python: api.post_groups_by_room_members(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
room | Path (required) | Room identifier returned by group/call APIs. |
Observed top-level request keys
username
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/groups/YOUR_ROOM/members" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_groups_by_room_members(room="YOUR_ROOM", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/groups/:room/members/:usernamebearer
Link to this operation · Python: api.delete_groups_by_room_members_by_username(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
room | Path (required) | Room identifier returned by group/call APIs. |
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/groups/YOUR_ROOM/members/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_groups_by_room_members_by_username(room="YOUR_ROOM", username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/groups/:roombearer
Link to this operation · Python: api.patch_groups_by_room(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
room | Path (required) | Room identifier returned by group/call APIs. |
Observed top-level request keys
name
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/groups/YOUR_ROOM" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_groups_by_room(room="YOUR_ROOM", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/groups/:roombearer
Link to this operation · Python: api.delete_groups_by_room(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
room | Path (required) | Room identifier returned by group/call APIs. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/groups/YOUR_ROOM" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_groups_by_room(room="YOUR_ROOM")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Nookara chat: legacy servers, developer bots, settings, presence 117 operations
GET/chat/invite/:codenone / legacy
Link to this operation · Python: api.get_chat_invite_by_code(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
code | Path (required) | Invite or authorization code, depending on route. For game claims, the code shown in the server settings. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/invite/YOUR_CODE"Python method
api.get_chat_invite_by_code(code="YOUR_CODE")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_invite
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/identitiesbearer
Link to this operation · Python: api.get_chat_identities(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
ids | Query | Comma separated ids. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/identities" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_identities(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_user_ids
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/server-creation-policybearer / legacy
Link to this operation · Python: api.get_chat_server_creation_policy(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/server-creation-policy" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_server_creation_policy()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/serversbearer / legacy
Link to this operation · Python: api.get_chat_servers(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/servers" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_servers()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/discoverbearer / legacy
Link to this operation · Python: api.get_chat_discover(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/discover" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_discover()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/serversbearer / legacy
Link to this operation · Python: api.post_chat_servers(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Observed top-level request keys
description, discoverable, name
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/servers" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"name":"My server","description":"","discoverable":false}'Python method
api.post_chat_servers(json={'name': 'My server', 'description': '', 'discoverable': False})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
name_required, not_a_member, too_many_joined, too_many_servers
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/servers/:sidbearer / legacy
Link to this operation · Python: api.get_chat_servers_by_sid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/servers/YOUR_SID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_servers_by_sid(sid="YOUR_SID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/chat/servers/:sidbearer / legacy
Link to this operation · Python: api.patch_chat_servers_by_sid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Observed top-level request keys
allow_accent, description, discoverable, name, new_invite
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/chat/servers/YOUR_SID" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_chat_servers_by_sid(sid="YOUR_SID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
name_required, not_a_member, not_allowed, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/chat/servers/:sid/layoutbearer / legacy
Link to this operation · Python: api.put_chat_servers_by_sid_layout(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Observed top-level request keys
categories, channels
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/chat/servers/YOUR_SID/layout" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.put_chat_servers_by_sid_layout(sid="YOUR_SID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
need_a_category, not_a_member, not_allowed, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/servers/:sid/rolesbearer / legacy
Link to this operation · Python: api.post_chat_servers_by_sid_roles(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Observed top-level request keys
color, hoist, mentionable, name, permissions
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/servers/YOUR_SID/roles" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"name":"Reader","permissions":0,"color":"#c084fc"}'Python method
api.post_chat_servers_by_sid_roles(sid="YOUR_SID", json={'name': 'Reader', 'permissions': 0, 'color': '#c084fc'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, not_allowed, role_too_high, server_read_only, too_many_roles
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/chat/servers/:sid/roles/orderbearer / legacy
Link to this operation · Python: api.put_chat_servers_by_sid_roles_order(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Observed top-level request keys
order
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/chat/servers/YOUR_SID/roles/order" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.put_chat_servers_by_sid_roles_order(sid="YOUR_SID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, not_allowed, role_too_high, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/chat/servers/:sid/roles/:ridbearer / legacy
Link to this operation · Python: api.patch_chat_servers_by_sid_roles_by_rid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
rid | Path (required) | Opaque role rid from user server details. |
Observed top-level request keys
color, hoist, icon_url, mentionable, name, permissions
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/chat/servers/YOUR_SID/roles/YOUR_RID" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_chat_servers_by_sid_roles_by_rid(sid="YOUR_SID", rid="YOUR_RID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
name_required, not_a_member, not_allowed, role_not_found, role_too_high, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/servers/:sid/roles/:ridbearer / legacy
Link to this operation · Python: api.delete_chat_servers_by_sid_roles_by_rid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
rid | Path (required) | Opaque role rid from user server details. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/servers/YOUR_SID/roles/YOUR_RID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_servers_by_sid_roles_by_rid(sid="YOUR_SID", rid="YOUR_RID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, not_allowed, role_not_found, role_too_high, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/chat/servers/:sid/members/:username/roles/:ridbearer / legacy
Link to this operation · Python: api.put_chat_servers_by_sid_members_by_username_roles_by_rid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
username | Path (required) | Nookara username, URL encoded. |
rid | Path (required) | Opaque role rid from user server details. |
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/chat/servers/YOUR_SID/members/YOUR_USERNAME/roles/YOUR_RID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.put_chat_servers_by_sid_members_by_username_roles_by_rid(sid="YOUR_SID", username="YOUR_USERNAME", rid="YOUR_RID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, not_allowed, role_not_found, role_too_high, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/servers/:sid/members/:username/roles/:ridbearer / legacy
Link to this operation · Python: api.delete_chat_servers_by_sid_members_by_username_roles_by_rid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
username | Path (required) | Nookara username, URL encoded. |
rid | Path (required) | Opaque role rid from user server details. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/servers/YOUR_SID/members/YOUR_USERNAME/roles/YOUR_RID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_servers_by_sid_members_by_username_roles_by_rid(sid="YOUR_SID", username="YOUR_USERNAME", rid="YOUR_RID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, not_allowed, role_not_found, role_too_high, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/servers/:sid/roles/:rid/iconbearer / legacy
Link to this operation · Python: api.post_chat_servers_by_sid_roles_by_rid_icon(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
rid | Path (required) | Opaque role rid from user server details. |
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/servers/YOUR_SID/roles/YOUR_RID/icon" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_chat_servers_by_sid_roles_by_rid_icon(sid="YOUR_SID", rid="YOUR_RID", files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
name_required, no_file, server_not_found, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/servers/:sid/roles/:rid/iconbearer / legacy
Link to this operation · Python: api.delete_chat_servers_by_sid_roles_by_rid_icon(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
rid | Path (required) | Opaque role rid from user server details. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/servers/YOUR_SID/roles/YOUR_RID/icon" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_servers_by_sid_roles_by_rid_icon(sid="YOUR_SID", rid="YOUR_RID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
name_required
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/channels/:cid/iconbearer / legacy
Link to this operation · Python: api.post_chat_channels_by_cid_icon(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/channels/YOUR_CID/icon" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_chat_channels_by_cid_icon(cid="YOUR_CID", files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_link, category_required, channel_not_found, name_required, no_file, not_a_member, not_allowed, role_too_high, server_not_found, server_read_only, shop_admin_role
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/servers/:sid/exportbearer / legacy
Link to this operation · Python: api.get_chat_servers_by_sid_export(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/servers/YOUR_SID/export" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_servers_by_sid_export(sid="YOUR_SID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_allowed, server_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/servers/:sid/export-to-accountbearer / legacy
Link to this operation · Python: api.post_chat_servers_by_sid_export_to_account(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/servers/YOUR_SID/export-to-account" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_chat_servers_by_sid_export_to_account(sid="YOUR_SID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_allowed, server_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/servers/:sidbearer / legacy
Link to this operation · Python: api.delete_chat_servers_by_sid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/servers/YOUR_SID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_servers_by_sid(sid="YOUR_SID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, not_allowed, owner_only, server_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/servers/:sid/joinbearer / legacy
Link to this operation · Python: api.post_chat_servers_by_sid_join(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/servers/YOUR_SID/join" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_chat_servers_by_sid_join(sid="YOUR_SID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
banned_from_server, invalid_invite, invite_required, server_full, server_not_found, server_read_only, too_many_joined
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/join/:codebearer / legacy
Link to this operation · Python: api.post_chat_join_by_code(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
code | Path (required) | Invite or authorization code, depending on route. For game claims, the code shown in the server settings. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/join/YOUR_CODE" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_chat_join_by_code(code="YOUR_CODE")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
banned_from_server, invalid_invite, invite_required, server_full, server_not_found, server_read_only, too_many_joined
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/servers/:sid/leavebearer / legacy
Link to this operation · Python: api.post_chat_servers_by_sid_leave(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/servers/YOUR_SID/leave" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_chat_servers_by_sid_leave(sid="YOUR_SID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, owner_cannot_leave
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/servers/:sid/membersbearer / legacy
Link to this operation · Python: api.get_chat_servers_by_sid_members(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/servers/YOUR_SID/members" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_servers_by_sid_members(sid="YOUR_SID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/servers/:sid/members/:usernamebearer / legacy
Link to this operation · Python: api.delete_chat_servers_by_sid_members_by_username(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
username | Path (required) | Nookara username, URL encoded. |
ban | Query | Use 1 to ban instead of kick. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/servers/YOUR_SID/members/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_servers_by_sid_members_by_username(sid="YOUR_SID", username="YOUR_USERNAME", query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, not_allowed, server_read_only, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/servers/:sid/bans/:usernamebearer / legacy
Link to this operation · Python: api.delete_chat_servers_by_sid_bans_by_username(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/servers/YOUR_SID/bans/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_servers_by_sid_bans_by_username(sid="YOUR_SID", username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, not_allowed, server_read_only, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/servers/:sid/iconbearer / legacy
Link to this operation · Python: api.post_chat_servers_by_sid_icon(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/servers/YOUR_SID/icon" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_chat_servers_by_sid_icon(sid="YOUR_SID", files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
name_required, no_file, not_a_member, not_allowed, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/servers/:sid/bannerbearer / legacy
Link to this operation · Python: api.post_chat_servers_by_sid_banner(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/servers/YOUR_SID/banner" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_chat_servers_by_sid_banner(sid="YOUR_SID", files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
name_required, no_file, not_a_member, not_allowed, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/servers/:sid/iconbearer / legacy
Link to this operation · Python: api.delete_chat_servers_by_sid_icon(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/servers/YOUR_SID/icon" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_servers_by_sid_icon(sid="YOUR_SID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
name_required, not_a_member, not_allowed, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/servers/:sid/bannerbearer / legacy
Link to this operation · Python: api.delete_chat_servers_by_sid_banner(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/servers/YOUR_SID/banner" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_servers_by_sid_banner(sid="YOUR_SID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
name_required, not_a_member, not_allowed, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/servers/:sid/channelsbearer / legacy
Link to this operation · Python: api.post_chat_servers_by_sid_channels(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Observed top-level request keys
category, config, icon, locked, name, topic, type
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/servers/YOUR_SID/channels" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"name":"general","type":"text","category":"General"}'Python method
api.post_chat_servers_by_sid_channels(sid="YOUR_SID", json={'name': 'general', 'type': 'text', 'category': 'General'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
name_required, not_a_member, not_allowed, server_read_only, too_many_channels
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/chat/channels/:cidbearer / legacy
Link to this operation · Python: api.patch_chat_channels_by_cid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Observed top-level request keys
category, config, icon, locked, name, position, topic, type
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/chat/channels/YOUR_CID" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_chat_channels_by_cid(cid="YOUR_CID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_link, category_required, channel_not_found, name_required, not_a_member, not_allowed, role_too_high, server_read_only, shop_admin_role
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/channels/:cidbearer / legacy
Link to this operation · Python: api.delete_chat_channels_by_cid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/channels/YOUR_CID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_channels_by_cid(cid="YOUR_CID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, last_channel, not_a_member, not_allowed, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/channels/:cid/cloudlinkbearer / legacy
Link to this operation · Python: api.get_chat_channels_by_cid_cloudlink(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/channels/YOUR_CID/cloudlink" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_channels_by_cid_cloudlink(cid="YOUR_CID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/channels/:cid/cloudlink/reconnectbearer / legacy
Link to this operation · Python: api.post_chat_channels_by_cid_cloudlink_reconnect(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/channels/YOUR_CID/cloudlink/reconnect" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_chat_channels_by_cid_cloudlink_reconnect(cid="YOUR_CID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/channels/:cid/messagesbearer / legacy
Link to this operation · Python: api.get_chat_channels_by_cid_messages(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
after | Query | Fetch history after this message ID. |
before | Query | Fetch history before this message ID (starboard: starred_at cursor). |
limit | Query | Maximum page size; endpoint-specific default/cap. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/channels/YOUR_CID/messages" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_channels_by_cid_messages(cid="YOUR_CID", query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/channels/:cid/messagesbearer / legacy
Link to this operation · Python: api.post_chat_channels_by_cid_messages(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Observed top-level request keys
attachments, message, reply_to
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/channels/YOUR_CID/messages" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"message":"Hello!","attachments":[]}'Python method
api.post_chat_channels_by_cid_messages(cid="YOUR_CID", json={'message': 'Hello!', 'attachments': []})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, empty_message, no_attach_permission, not_a_member, rate_limited, server_not_found, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/channels/:cid/readbearer / legacy
Link to this operation · Python: api.post_chat_channels_by_cid_read(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Observed top-level request keys
id
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/channels/YOUR_CID/read" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_chat_channels_by_cid_read(cid="YOUR_CID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/channels/:cid/searchbearer / legacy
Link to this operation · Python: api.get_chat_channels_by_cid_search(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
q | Query | Search text; URL encode it. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/channels/YOUR_CID/search" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_channels_by_cid_search(cid="YOUR_CID", query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/chat/messages/:idbearer / legacy
Link to this operation · Python: api.patch_chat_messages_by_id(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
message
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/chat/messages/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"message":"Edited text"}'Python method
api.patch_chat_messages_by_id(id="YOUR_ID", json={'message': 'Edited text'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
empty_message, message_not_found, not_allowed, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/messages/:idbearer / legacy
Link to this operation · Python: api.delete_chat_messages_by_id(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/messages/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_messages_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
message_not_found, not_allowed, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/uploadbearer / legacy
Link to this operation · Python: api.post_chat_upload(...)
Authentication: User Bearer token
Token scopes: CHAT (2048), MEDIA_UPLOAD (4096)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/upload" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_chat_upload(files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
images_only, no_file, storage_limit_exceeded, upload_suspended
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/notifybearer
Link to this operation · Python: api.get_chat_notify(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/notify" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_notify()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/chat/notify/:targetbearer
Link to this operation · Python: api.put_chat_notify_by_target(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
target | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
level, mute_minutes, push
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/chat/notify/YOUR_TARGET" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"level":"mentions","mute_minutes":0,"push":true}'Python method
api.put_chat_notify_by_target(target="YOUR_TARGET", json={'level': 'mentions', 'mute_minutes': 0, 'push': True})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/settingsbearer
Link to this operation · Python: api.get_chat_settings(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/settings" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_settings()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/chat/settingsbearer
Link to this operation · Python: api.patch_chat_settings(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Observed top-level request keys
show_typing, share_typing, share_activity, sounds, notifications, dm_privacy, compact, animations, link_images, server_order, daily_notice, developer_mode, allow_vc_calls, yt_mode
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/chat/settings" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"show_typing":true,"notifications":"mentions"}'Python method
api.patch_chat_settings(json={'show_typing': True, 'notifications': 'mentions'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/openbearer
Link to this operation · Python: api.get_chat_open(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/open" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_open()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/users/:usernamebearer
Link to this operation · Python: api.get_chat_users_by_username(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/users/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_users_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/botsbearer
Link to this operation · Python: api.get_chat_bots(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Nookara developer bots: bot accounts you own on Nookara (not tied to one server). Needs Chat. Entries carry id, username, description, verified, trusted_in and gallery {state, verified, review_message, trusted_in}.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/bots" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_bots()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/botsbearer
Link to this operation · Python: api.post_chat_bots(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Needs Chat. Body {name, description}. Returns {bot, token}; the token is shown once. The same token works on every instance the bot is added to.
Observed top-level request keys
description, name
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/bots" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_chat_bots(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/chat/bots/:idbearer
Link to this operation · Python: api.patch_chat_bots_by_id(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Needs Chat. Bot owner only. name, description.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
description, name, public
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/chat/bots/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_chat_bots_by_id(id="YOUR_ID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/bots/:id/avatarbearer
Link to this operation · Python: api.post_chat_bots_by_id_avatar(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Needs Chat. Multipart file. A listed bot needs an avatar.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/bots/YOUR_ID/avatar" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_chat_bots_by_id_avatar(id="YOUR_ID", files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/bots/:id/tokenbearer
Link to this operation · Python: api.post_chat_bots_by_id_token(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Needs Chat. Resets the token; instances pick up the new hash within about 10 minutes.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/bots/YOUR_ID/token" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_chat_bots_by_id_token(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/bots/:idbearer
Link to this operation · Python: api.delete_chat_bots_by_id(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Needs Chat. Deletes the bot account; instances remove it at their next sync.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/bots/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_bots_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/bots/by-name/:username/addbearer / legacy
Link to this operation · Python: api.post_chat_bots_by_name_by_username_add(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Observed top-level request keys
sid
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/bots/by-name/YOUR_USERNAME/add" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_chat_bots_by_name_by_username_add(username="YOUR_USERNAME", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/presence/:usernamebearer
Link to this operation · Python: api.get_chat_presence_by_username(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/presence/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_presence_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/presence/statusbearer
Link to this operation · Python: api.post_chat_presence_status(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Observed top-level request keys
status
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/presence/status" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"status":"dnd"}'Python method
api.post_chat_presence_status(json={'status': 'dnd'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/presence/custombearer
Link to this operation · Python: api.post_chat_presence_custom(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Observed top-level request keys
text
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/presence/custom" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"text":"Working"}'Python method
api.post_chat_presence_custom(json={'text': 'Working'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/presence/activitybearer
Link to this operation · Python: api.post_chat_presence_activity(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Observed top-level request keys
name, key, ttl, type, details, state, icon, image, url, app, since, duration, progress, progress_at
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/presence/activity" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"key":"my-client","name":"My game","type":"playing","ttl":600}'Python method
api.post_chat_presence_activity(json={'key': 'my-client', 'name': 'My game', 'type': 'playing', 'ttl': 600})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
name_required, too_many_activities
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/presence/activity/:key?bearer
Link to this operation · Python: api.delete_chat_presence_activity_by_key(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
key | Path (optional) | Storage/activity key. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/presence/activity/YOUR_KEY" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_presence_activity_by_key()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/gifsbearer
Link to this operation · Python: api.get_chat_gifs(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
page | Query | One-based GIF page. |
q | Query | Search text; URL encode it. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/gifs" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_gifs(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
gif_search_failed, gifs_not_configured
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/mediabearer
Link to this operation · Python: api.get_chat_media(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/media" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_media()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/media/savebearer
Link to this operation · Python: api.post_chat_media_save(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Observed top-level request keys
name, url
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/media/save" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_chat_media_save(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
cant_save_that, storage_limit_exceeded, upload_suspended
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/klipy/:kind/:slugbearer
Link to this operation · Python: api.get_chat_klipy_by_kind_by_slug(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
kind | Path (required) | Identifier from the corresponding API response. |
slug | Path (required) | Hosted server name (3 to 32 characters). |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/klipy/YOUR_KIND/YOUR_SLUG" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_klipy_by_kind_by_slug(kind="YOUR_KIND", slug="YOUR_SLUG")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_gif, gifs_not_set_up
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/media/gifbearer
Link to this operation · Python: api.post_chat_media_gif(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Observed top-level request keys
height, preview, title, url, width
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/media/gif" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_chat_media_gif(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_gif, too_many_saved
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/media/:idbearer
Link to this operation · Python: api.delete_chat_media_by_id(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/media/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_media_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/mediabearer
Link to this operation · Python: api.delete_chat_media(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
url | Query | URL to process or identify. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/media" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_media(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/media/limitsbearer
Link to this operation · Python: api.get_chat_media_limits(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/media/limits" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_media_limits()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/media/uploadbearer
Link to this operation · Python: api.post_chat_media_upload(...)
Authentication: User Bearer token
Token scopes: CHAT (2048), MEDIA_UPLOAD (4096)
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/media/upload" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_chat_media_upload(files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
no_file, storage_limit_exceeded, unsupported_file, upload_suspended
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/emojisbearer / legacy
Link to this operation · Python: api.get_chat_emojis(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/emojis" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_emojis()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/emojis/:eid/infobearer / legacy
Link to this operation · Python: api.get_chat_emojis_by_eid_info(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
eid | Path (required) | Emoji id. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/emojis/YOUR_EID/info" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_emojis_by_eid_info(eid="YOUR_EID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found, server_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/servers/:sid/emojisbearer / legacy
Link to this operation · Python: api.get_chat_servers_by_sid_emojis(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/servers/YOUR_SID/emojis" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_servers_by_sid_emojis(sid="YOUR_SID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, not_allowed, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/servers/:sid/emojisbearer / legacy
Link to this operation · Python: api.post_chat_servers_by_sid_emojis(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Observed top-level request keys
name
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/servers/YOUR_SID/emojis" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_chat_servers_by_sid_emojis(sid="YOUR_SID", files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
file_too_large, no_file, not_a_member, not_allowed, server_read_only, too_many_emojis
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/chat/servers/:sid/emojis/:eidbearer / legacy
Link to this operation · Python: api.patch_chat_servers_by_sid_emojis_by_eid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
eid | Path (required) | Emoji id. |
Observed top-level request keys
name
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/chat/servers/YOUR_SID/emojis/YOUR_EID" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_chat_servers_by_sid_emojis_by_eid(sid="YOUR_SID", eid="YOUR_EID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
name_required, not_a_member, not_allowed, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/servers/:sid/emojis/:eidbearer / legacy
Link to this operation · Python: api.delete_chat_servers_by_sid_emojis_by_eid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
eid | Path (required) | Emoji id. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/servers/YOUR_SID/emojis/YOUR_EID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_servers_by_sid_emojis_by_eid(sid="YOUR_SID", eid="YOUR_EID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, not_allowed, not_found, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/bridge/platformsbearer / legacy
Link to this operation · Python: api.get_chat_bridge_platforms(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/bridge/platforms" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_bridge_platforms()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/bridge/:platform/guildsbearer / legacy
Link to this operation · Python: api.get_chat_bridge_by_platform_guilds(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
platform | Path (required) | Linked external platform identifier. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/bridge/YOUR_PLATFORM/guilds" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_bridge_by_platform_guilds(platform="YOUR_PLATFORM")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/bridge/:platform/guilds/:gidbearer / legacy
Link to this operation · Python: api.get_chat_bridge_by_platform_guilds_by_gid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
platform | Path (required) | Linked external platform identifier. |
gid | Path (required) | Numeric guild ID from bot API, or external platform guild ID on bridge routes. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/bridge/YOUR_PLATFORM/guilds/YOUR_GID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_bridge_by_platform_guilds_by_gid(platform="YOUR_PLATFORM", gid="YOUR_GID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/bridge/:platform/guilds/:gid/importbearer / legacy
Link to this operation · Python: api.post_chat_bridge_by_platform_guilds_by_gid_import(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
platform | Path (required) | Linked external platform identifier. |
gid | Path (required) | Numeric guild ID from bot API, or external platform guild ID on bridge routes. |
Observed top-level request keys
channels, name, roles
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/bridge/YOUR_PLATFORM/guilds/YOUR_GID/import" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_chat_bridge_by_platform_guilds_by_gid_import(platform="YOUR_PLATFORM", gid="YOUR_GID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/bridge/servers/:sidbearer / legacy
Link to this operation · Python: api.get_chat_bridge_servers_by_sid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/bridge/servers/YOUR_SID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_bridge_servers_by_sid(sid="YOUR_SID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/chat/bridge/servers/:sidbearer / legacy
Link to this operation · Python: api.put_chat_bridge_servers_by_sid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Observed top-level request keys
automap, guild_id, platform
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/chat/bridge/servers/YOUR_SID" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.put_chat_bridge_servers_by_sid(sid="YOUR_SID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/chat/bridge/servers/:sidbearer / legacy
Link to this operation · Python: api.patch_chat_bridge_servers_by_sid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Observed top-level request keys
enabled, platform
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/chat/bridge/servers/YOUR_SID" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_chat_bridge_servers_by_sid(sid="YOUR_SID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/bridge/servers/:sidbearer / legacy
Link to this operation · Python: api.delete_chat_bridge_servers_by_sid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Observed top-level request keys
platform
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/bridge/servers/YOUR_SID" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.delete_chat_bridge_servers_by_sid(sid="YOUR_SID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/chat/bridge/servers/:sid/channels/:cidbearer / legacy
Link to this operation · Python: api.put_chat_bridge_servers_by_sid_channels_by_cid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Observed top-level request keys
ext_channel_id, platform
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/chat/bridge/servers/YOUR_SID/channels/YOUR_CID" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.put_chat_bridge_servers_by_sid_channels_by_cid(sid="YOUR_SID", cid="YOUR_CID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/media/externalbearer
Link to this operation · Python: api.post_chat_media_external(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Old name of POST /chat/media/temp (it used to upload to catbox.moe; it now stores the file in Nookara's temporary storage).
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/media/external" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_chat_media_external(files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
no_file, file_too_large, file_type_blocked, rate_limited, temp_daily_quota, temp_storage_full, upload_suspended
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/servers/:sid/searchbearer / legacy
Link to this operation · Python: api.get_chat_servers_by_sid_search(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
offset | Query | Search result offset. |
q | Query | Search text; URL encode it. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/servers/YOUR_SID/search" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_servers_by_sid_search(sid="YOUR_SID", query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/channels/:cid/starboardbearer / legacy
Link to this operation · Python: api.get_chat_channels_by_cid_starboard(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
before | Query | Fetch history before this message ID (starboard: starred_at cursor). |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/channels/YOUR_CID/starboard" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_channels_by_cid_starboard(cid="YOUR_CID", query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/chat/messages/:id/reactions/:emojibearer / legacy
Link to this operation · Python: api.put_chat_messages_by_id_reactions_by_emoji(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
emoji | Path (required) | URL-encoded Unicode emoji or custom emoji identifier. |
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/chat/messages/YOUR_ID/reactions/YOUR_EMOJI" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.put_chat_messages_by_id_reactions_by_emoji(id="YOUR_ID", emoji="YOUR_EMOJI")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
message_not_found, server_read_only, too_many_reactions, unknown_emoji
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/messages/:id/reactions/:emojibearer / legacy
Link to this operation · Python: api.delete_chat_messages_by_id_reactions_by_emoji(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
emoji | Path (required) | URL-encoded Unicode emoji or custom emoji identifier. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/messages/YOUR_ID/reactions/YOUR_EMOJI" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_messages_by_id_reactions_by_emoji(id="YOUR_ID", emoji="YOUR_EMOJI")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
message_not_found, server_read_only, too_many_reactions, unknown_emoji
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/chat/dm/:id/reactions/:emojibearer
Link to this operation · Python: api.put_chat_dm_by_id_reactions_by_emoji(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
emoji | Path (required) | URL-encoded Unicode emoji or custom emoji identifier. |
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/chat/dm/YOUR_ID/reactions/YOUR_EMOJI" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.put_chat_dm_by_id_reactions_by_emoji(id="YOUR_ID", emoji="YOUR_EMOJI")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/dm/:id/reactions/:emojibearer
Link to this operation · Python: api.delete_chat_dm_by_id_reactions_by_emoji(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
emoji | Path (required) | URL-encoded Unicode emoji or custom emoji identifier. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/dm/YOUR_ID/reactions/YOUR_EMOJI" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_dm_by_id_reactions_by_emoji(id="YOUR_ID", emoji="YOUR_EMOJI")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/chat/channels/:cid/permsbearer / legacy
Link to this operation · Python: api.put_chat_channels_by_cid_perms(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Observed top-level request keys
overwrites
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/chat/channels/YOUR_CID/perms" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"overwrites":[{"rid":"ROLE_RID","allow":1024,"deny":1}]}'Python method
api.put_chat_channels_by_cid_perms(cid="YOUR_CID", json={'overwrites': [{'rid': 'ROLE_RID', 'allow': 1024, 'deny': 1}]})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, not_a_member, not_allowed, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/modmailbearer
Link to this operation · Python: api.get_chat_modmail(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/modmail" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_modmail()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/modmail/readbearer
Link to this operation · Python: api.post_chat_modmail_read(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/modmail/read" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_chat_modmail_read()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/modmail/staffbearer
Link to this operation · Python: api.get_chat_modmail_staff(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/modmail/staff" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_modmail_staff()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/modmail/with/:usernamebearer
Link to this operation · Python: api.get_chat_modmail_with_by_username(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/modmail/with/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_modmail_with_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/modmail/with/:usernamebearer
Link to this operation · Python: api.post_chat_modmail_with_by_username(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Observed top-level request keys
body
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/modmail/with/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_chat_modmail_with_by_username(username="YOUR_USERNAME", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/soundsbearer / legacy
Link to this operation · Python: api.get_chat_sounds(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/sounds" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_sounds()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/servers/:sid/soundsbearer / legacy
Link to this operation · Python: api.get_chat_servers_by_sid_sounds(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/servers/YOUR_SID/sounds" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_servers_by_sid_sounds(sid="YOUR_SID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/servers/:sid/soundsbearer / legacy
Link to this operation · Python: api.post_chat_servers_by_sid_sounds(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Observed top-level request keys
name, emoji, volume
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/servers/YOUR_SID/sounds" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_chat_servers_by_sid_sounds(sid="YOUR_SID", files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/chat/servers/:sid/sounds/:idbearer / legacy
Link to this operation · Python: api.patch_chat_servers_by_sid_sounds_by_id(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
name, emoji, volume
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/chat/servers/YOUR_SID/sounds/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_chat_servers_by_sid_sounds_by_id(sid="YOUR_SID", id="YOUR_ID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/servers/:sid/sounds/:idbearer / legacy
Link to this operation · Python: api.delete_chat_servers_by_sid_sounds_by_id(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/servers/YOUR_SID/sounds/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_servers_by_sid_sounds_by_id(sid="YOUR_SID", id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/chat/messages/:id/pinbearer / legacy
Link to this operation · Python: api.put_chat_messages_by_id_pin(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/chat/messages/YOUR_ID/pin" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.put_chat_messages_by_id_pin(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, empty_message, message_not_found, no_attach_permission, not_a_member, not_allowed, rate_limited, server_read_only, too_many_pins
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/messages/:id/pinbearer / legacy
Link to this operation · Python: api.delete_chat_messages_by_id_pin(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/messages/YOUR_ID/pin" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_messages_by_id_pin(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, empty_message, message_not_found, no_attach_permission, not_a_member, not_allowed, rate_limited, server_read_only, too_many_pins
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/channels/:cid/pinsbearer / legacy
Link to this operation · Python: api.get_chat_channels_by_cid_pins(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/channels/YOUR_CID/pins" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_channels_by_cid_pins(cid="YOUR_CID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/unfurlbearer / legacy
Link to this operation · Python: api.get_chat_unfurl(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
url | Query | URL to process or identify. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/unfurl" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_unfurl(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
rate_limited
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/hf-game/:idbearer
Link to this operation · Python: api.get_chat_hf_game_by_id(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/hf-game/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_hf_game_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
rate_limited
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/callsbearer
Link to this operation · Python: api.post_chat_calls(...)
Authentication: User Bearer token
Token scopes: CHAT (2048), VOICE (16384)
Observed top-level request keys
to
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/calls" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"to":"USERNAME"}'Python method
api.post_chat_calls(json={'to': 'USERNAME'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
cannot_dm_bot, cannot_reply_own_status, message_too_long, missing_fields, status_changed, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/channels/:cid/shopbearer / legacy
Link to this operation · Python: api.get_chat_channels_by_cid_shop(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/channels/YOUR_CID/shop" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_channels_by_cid_shop(cid="YOUR_CID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, not_a_member, not_a_shop
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/channels/:cid/shop/:ridbearer / legacy
Link to this operation · Python: api.post_chat_channels_by_cid_shop_by_rid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048), CURRENCY_PAY (1024)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
rid | Path (required) | Opaque role rid from user server details. |
Observed top-level request keys
price
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/channels/YOUR_CID/shop/YOUR_RID" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_chat_channels_by_cid_shop_by_rid(cid="YOUR_CID", rid="YOUR_RID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, insufficient_balance, not_a_member, not_a_shop, price_changed, purchase_failed, role_not_found, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/channels/:cid/shop/:ridbearer / legacy
Link to this operation · Python: api.delete_chat_channels_by_cid_shop_by_rid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
rid | Path (required) | Opaque role rid from user server details. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/channels/YOUR_CID/shop/YOUR_RID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_channels_by_cid_shop_by_rid(cid="YOUR_CID", rid="YOUR_RID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, insufficient_balance, not_a_member, not_a_shop, price_changed, purchase_failed, role_not_found, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/channels/:cid/webhooksbearer / legacy
Link to this operation · Python: api.get_chat_channels_by_cid_webhooks(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/channels/YOUR_CID/webhooks" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_channels_by_cid_webhooks(cid="YOUR_CID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
no_webhooks_here, not_allowed
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/channels/:cid/webhooksbearer / legacy
Link to this operation · Python: api.post_chat_channels_by_cid_webhooks(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Observed top-level request keys
name
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/channels/YOUR_CID/webhooks" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_chat_channels_by_cid_webhooks(cid="YOUR_CID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
no_webhooks_here, not_allowed, server_read_only, too_many_webhooks
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/chat/hooks/:widbearer / legacy
Link to this operation · Python: api.patch_chat_hooks_by_wid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
wid | Path (required) | Webhook identifier. |
Observed top-level request keys
avatar, channel, name, new_token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/chat/hooks/YOUR_WID" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_chat_hooks_by_wid(wid="YOUR_WID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, no_webhooks_here, not_a_member, not_allowed, server_read_only, webhook_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/hooks/:widbearer / legacy
Link to this operation · Python: api.delete_chat_hooks_by_wid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
wid | Path (required) | Webhook identifier. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/hooks/YOUR_WID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_hooks_by_wid(wid="YOUR_WID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_allowed, server_read_only, webhook_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/hooks/:wid/avatarbearer / legacy
Link to this operation · Python: api.post_chat_hooks_by_wid_avatar(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
wid | Path (required) | Webhook identifier. |
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/hooks/YOUR_WID/avatar" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_chat_hooks_by_wid_avatar(wid="YOUR_WID", files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, images_only, no_webhooks_here, not_a_member, not_allowed, server_read_only, webhook_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Game servers (Minecraft) 10 operations
GET/chat/game/downloadsnone / legacy
Link to this operation · Python: api.get_chat_game_downloads(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/game/downloads"Python method
api.get_chat_game_downloads()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/game/servers/:sid/instancesbearer / legacy
Link to this operation · Python: api.get_chat_game_servers_by_sid_instances(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/game/servers/YOUR_SID/instances" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_game_servers_by_sid_instances(sid="YOUR_SID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, not_allowed
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/game/servers/:sid/instances/:iidbearer / legacy
Link to this operation · Python: api.delete_chat_game_servers_by_sid_instances_by_iid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
iid | Path (required) | Game server instance id (g plus 16 hex characters) from the instances list. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/game/servers/YOUR_SID/instances/YOUR_IID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_chat_game_servers_by_sid_instances_by_iid(sid="YOUR_SID", iid="YOUR_IID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, not_allowed, not_linked
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/game/unclaimedbearer / legacy
Link to this operation · Python: api.get_chat_game_unclaimed(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
page | Query | One-based GIF page. |
q | Query | Search text; URL encode it. |
sid | Query | Community sid (required). |
tag | Query | Exact tag. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/game/unclaimed" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_game_unclaimed(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, not_allowed, rate_limited
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/game/claimsbearer / legacy
Link to this operation · Python: api.post_chat_game_claims(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Observed top-level request keys
cid, hint, sid
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/game/claims" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"sid":"YOUR_SID","cid":"GAME_CHANNEL_CID"}'Python method
api.post_chat_game_claims(json={'sid': 'YOUR_SID', 'cid': 'GAME_CHANNEL_CID'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, not_a_game_channel, not_a_member, not_allowed, rate_limited, server_not_found, server_read_only, too_many_instances
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/game/claims/:codebearer / legacy
Link to this operation · Python: api.get_chat_game_claims_by_code(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
code | Path (required) | Invite or authorization code, depending on route. For game claims, the code shown in the server settings. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/game/claims/YOUR_CODE" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_game_claims_by_code(code="YOUR_CODE")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
claim_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/game/channels/:cid/statusbearer / legacy
Link to this operation · Python: api.get_chat_game_channels_by_cid_status(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/game/channels/YOUR_CID/status" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_game_channels_by_cid_status(cid="YOUR_CID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, not_a_game_channel, not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/game/channels/:cid/consolebearer / legacy
Link to this operation · Python: api.get_chat_game_channels_by_cid_console(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
before | Query | Fetch history before this message ID (starboard: starred_at cursor). |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/game/channels/YOUR_CID/console" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_game_channels_by_cid_console(cid="YOUR_CID", query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, not_a_console, not_a_game_channel, not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/game/channels/:cid/consolebearer / legacy
Link to this operation · Python: api.post_chat_game_channels_by_cid_console(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Observed top-level request keys
command
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/game/channels/YOUR_CID/console" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"command":"list"}'Python method
api.post_chat_game_channels_by_cid_console(cid="YOUR_CID", json={'command': 'list'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, console_disabled, console_needs_bonfire, empty_command, not_a_console, not_a_game_channel, not_a_member, not_allowed, offline, rate_limited, server_read_only, timeout
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/game/servers/:sid/auditbearer / legacy
Link to this operation · Python: api.get_chat_game_servers_by_sid_audit(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
sid | Path (required) | Opaque user API server sid. |
before | Query | Fetch history before this message ID (starboard: starred_at cursor). |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/game/servers/YOUR_SID/audit" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_game_servers_by_sid_audit(sid="YOUR_SID", query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, not_allowed
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Bot REST API 25 operations
GET/chat/api/discoverynone / legacy
Link to this operation · Python: api.get_chat_api_discovery(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/api/discovery"Python method
api.get_chat_api_discovery()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/api/v1/gatewaynone / legacy
Link to this operation · Python: api.get_chat_api_v1_gateway(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/api/v1/gateway"Python method
api.get_chat_api_v1_gateway()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/api/v1/gateway/botbot / legacy
Link to this operation · Python: api.get_chat_api_v1_gateway_bot(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/api/v1/gateway/bot" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_chat_api_v1_gateway_bot()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/api/v1/users/@mebot / legacy
Link to this operation · Python: api.get_chat_api_v1_users_me(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/api/v1/users/@me" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_chat_api_v1_users_me()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/api/v1/oauth2/applications/@mebot / legacy
Link to this operation · Python: api.get_chat_api_v1_oauth2_applications_me(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/api/v1/oauth2/applications/@me" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_chat_api_v1_oauth2_applications_me()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/api/v1/users/@me/guildsbot / legacy
Link to this operation · Python: api.get_chat_api_v1_users_me_guilds(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/api/v1/users/@me/guilds" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_chat_api_v1_users_me_guilds()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/api/v1/users/@me/guilds/:gidbot / legacy
Link to this operation · Python: api.delete_chat_api_v1_users_me_guilds_by_gid(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
gid | Path (required) | Numeric guild ID from bot API, or external platform guild ID on bridge routes. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/api/v1/users/@me/guilds/YOUR_GID" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.delete_chat_api_v1_users_me_guilds_by_gid(gid="YOUR_GID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, server_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/api/v1/users/:uidbot / legacy
Link to this operation · Python: api.get_chat_api_v1_users_by_uid(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
uid | Path (required) | Principal id such as v:123 (instances) or a user id. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/api/v1/users/YOUR_UID" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_chat_api_v1_users_by_uid(uid="YOUR_UID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/api/v1/users/@me/channelsbot / legacy
Link to this operation · Python: api.post_chat_api_v1_users_me_channels(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/api/v1/users/@me/channels" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.post_chat_api_v1_users_me_channels()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
cannot_dm_bot
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/api/v1/guilds/:gidbot / legacy
Link to this operation · Python: api.get_chat_api_v1_guilds_by_gid(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
gid | Path (required) | Numeric guild ID from bot API, or external platform guild ID on bridge routes. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/api/v1/guilds/YOUR_GID" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_chat_api_v1_guilds_by_gid(gid="YOUR_GID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, server_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/api/v1/guilds/:gid/rolesbot / legacy
Link to this operation · Python: api.get_chat_api_v1_guilds_by_gid_roles(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
gid | Path (required) | Numeric guild ID from bot API, or external platform guild ID on bridge routes. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/api/v1/guilds/YOUR_GID/roles" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_chat_api_v1_guilds_by_gid_roles(gid="YOUR_GID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, server_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/api/v1/guilds/:gid/channelsbot / legacy
Link to this operation · Python: api.get_chat_api_v1_guilds_by_gid_channels(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
gid | Path (required) | Numeric guild ID from bot API, or external platform guild ID on bridge routes. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/api/v1/guilds/YOUR_GID/channels" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_chat_api_v1_guilds_by_gid_channels(gid="YOUR_GID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, server_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/api/v1/guilds/:gid/members/:uidbot / legacy
Link to this operation · Python: api.get_chat_api_v1_guilds_by_gid_members_by_uid(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
gid | Path (required) | Numeric guild ID from bot API, or external platform guild ID on bridge routes. |
uid | Path (required) | Principal id such as v:123 (instances) or a user id. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/api/v1/guilds/YOUR_GID/members/YOUR_UID" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_chat_api_v1_guilds_by_gid_members_by_uid(gid="YOUR_GID", uid="YOUR_UID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, server_not_found, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/api/v1/guilds/:gid/membersbot / legacy
Link to this operation · Python: api.get_chat_api_v1_guilds_by_gid_members(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
gid | Path (required) | Numeric guild ID from bot API, or external platform guild ID on bridge routes. |
limit | Query | Maximum page size; endpoint-specific default/cap. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/api/v1/guilds/YOUR_GID/members" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_chat_api_v1_guilds_by_gid_members(gid="YOUR_GID", query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_a_member, server_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/api/v1/channels/:cidbot / legacy
Link to this operation · Python: api.get_chat_api_v1_channels_by_cid(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/api/v1/channels/YOUR_CID" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_chat_api_v1_channels_by_cid(cid="YOUR_CID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/api/v1/channels/:cid/typingbot / legacy
Link to this operation · Python: api.post_chat_api_v1_channels_by_cid_typing(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/api/v1/channels/YOUR_CID/typing" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.post_chat_api_v1_channels_by_cid_typing(cid="YOUR_CID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/api/v1/channels/:cid/messagesbot / legacy
Link to this operation · Python: api.get_chat_api_v1_channels_by_cid_messages(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
after | Query | Fetch history after this message ID. |
before | Query | Fetch history before this message ID (starboard: starred_at cursor). |
limit | Query | Maximum page size; endpoint-specific default/cap. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/api/v1/channels/YOUR_CID/messages" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_chat_api_v1_channels_by_cid_messages(cid="YOUR_CID", query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/api/v1/channels/:cid/messages/:midbot / legacy
Link to this operation · Python: api.get_chat_api_v1_channels_by_cid_messages_by_mid(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
mid | Path (required) | Message ID. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/api/v1/channels/YOUR_CID/messages/YOUR_MID" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_chat_api_v1_channels_by_cid_messages_by_mid(cid="YOUR_CID", mid="YOUR_MID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, message_not_found, not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/api/v1/channels/:cid/messagesbot / legacy
Link to this operation · Python: api.post_chat_api_v1_channels_by_cid_messages(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
Observed top-level request keys
content, embeds, message_reference, allowed_mentions, payload_json, attachments
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Multipart file fields
files[0]
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/api/v1/channels/YOUR_CID/messages" \
-H "Authorization: Bot $VELORA_BOT_TOKEN" \
-F "files[0]=@path/to/file"Python method
api.post_chat_api_v1_channels_by_cid_messages(cid="YOUR_CID", files={'files[0]': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, empty_message, not_a_member
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/chat/api/v1/channels/:cid/messages/:midbot / legacy
Link to this operation · Python: api.patch_chat_api_v1_channels_by_cid_messages_by_mid(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
mid | Path (required) | Message ID. |
Observed top-level request keys
content, allowed_mentions
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/chat/api/v1/channels/YOUR_CID/messages/YOUR_MID" \
-H "Authorization: Bot $VELORA_BOT_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_chat_api_v1_channels_by_cid_messages_by_mid(cid="YOUR_CID", mid="YOUR_MID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, empty_message, message_not_found, not_a_member, not_allowed, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/api/v1/channels/:cid/messages/:midbot / legacy
Link to this operation · Python: api.delete_chat_api_v1_channels_by_cid_messages_by_mid(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
mid | Path (required) | Message ID. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/api/v1/channels/YOUR_CID/messages/YOUR_MID" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.delete_chat_api_v1_channels_by_cid_messages_by_mid(cid="YOUR_CID", mid="YOUR_MID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, message_not_found, not_a_member, not_allowed, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/chat/api/v1/channels/:cid/messages/:mid/reactions/:emoji/@mebot / legacy
Link to this operation · Python: api.put_chat_api_v1_channels_by_cid_messages_by_mid_reactions_by_emoji_me(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
mid | Path (required) | Message ID. |
emoji | Path (required) | URL-encoded Unicode emoji or custom emoji identifier. |
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/chat/api/v1/channels/YOUR_CID/messages/YOUR_MID/reactions/YOUR_EMOJI/@me" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.put_chat_api_v1_channels_by_cid_messages_by_mid_reactions_by_emoji_me(cid="YOUR_CID", mid="YOUR_MID", emoji="YOUR_EMOJI")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, message_not_found, not_a_member, server_read_only, too_many_reactions, unknown_emoji
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/api/v1/channels/:cid/messages/:mid/reactions/:emoji/@mebot / legacy
Link to this operation · Python: api.delete_chat_api_v1_channels_by_cid_messages_by_mid_reactions_by_emoji_me(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
mid | Path (required) | Message ID. |
emoji | Path (required) | URL-encoded Unicode emoji or custom emoji identifier. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/api/v1/channels/YOUR_CID/messages/YOUR_MID/reactions/YOUR_EMOJI/@me" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.delete_chat_api_v1_channels_by_cid_messages_by_mid_reactions_by_emoji_me(cid="YOUR_CID", mid="YOUR_MID", emoji="YOUR_EMOJI")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, message_not_found, not_a_member, server_read_only, too_many_reactions, unknown_emoji
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/chat/api/v1/channels/:cid/pins/:midbot / legacy
Link to this operation · Python: api.put_chat_api_v1_channels_by_cid_pins_by_mid(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
mid | Path (required) | Message ID. |
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/chat/api/v1/channels/YOUR_CID/pins/YOUR_MID" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.put_chat_api_v1_channels_by_cid_pins_by_mid(cid="YOUR_CID", mid="YOUR_MID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, empty_message, message_not_found, no_attach_permission, not_a_member, not_allowed, rate_limited, server_read_only, too_many_pins
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/api/v1/channels/:cid/pins/:midbot / legacy
Link to this operation · Python: api.delete_chat_api_v1_channels_by_cid_pins_by_mid(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
cid | Path (required) | User API channel cid; bot routes instead use numeric channel row ID. |
mid | Path (required) | Message ID. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/api/v1/channels/YOUR_CID/pins/YOUR_MID" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.delete_chat_api_v1_channels_by_cid_pins_by_mid(cid="YOUR_CID", mid="YOUR_MID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
channel_not_found, empty_message, message_not_found, no_attach_permission, not_a_member, not_allowed, rate_limited, server_read_only, too_many_pins
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Bot payments (merchant bots) 4 operations
POST/bot/payment-requestsbot
Link to this operation · Python: api.post_bot_payment_requests(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Bot payments. Authorization: Bot TOKEN only (a user token is refused). Asks a buyer for credits; the money goes to the bot owner. Returns 201 with the request and its pay_url, or 200 with idempotent_replay true when the same order_id, buyer and amount were already created. 60 creates per minute per bot. See Bot payments in the guide.
Observed top-level request keys
buyer, buyer_id, amount, order_id, description, return_url, expires_in, metadata
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bot/payment-requests" \
-H "Authorization: Bot $VELORA_BOT_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_bot_payment_requests(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_bot_token, merchant_unavailable, bot_banned, invalid_amount, invalid_order_id, invalid_description, invalid_metadata, invalid_return_url, invalid_expires_in, invalid_buyer, buyer_not_found, buyer_is_bot, self_payment, buyer_banned, buyer_suspended, buyer_restricted, order_id_conflict, rate_limited, too_many_open_requests, buyer_has_too_many_open_requests
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bot/payment-requestsbot
Link to this operation · Python: api.get_bot_payment_requests(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Bot payments. With order_id returns that single request (404 not_found if none); otherwise lists your latest requests as {requests: [...]}, optionally filtered by status (pending, paid, declined, expired, cancelled) and limit. 300 reads per minute per bot.
| Parameter | Location | Meaning |
|---|---|---|
order_id | Query | Endpoint-specific query value. |
status | Query | Endpoint-specific query value. |
limit | Query | Maximum page size; endpoint-specific default/cap. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bot/payment-requests" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_bot_payment_requests(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_bot_token, not_found, rate_limited
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bot/payment-requests/:idbot
Link to this operation · Python: api.get_bot_payment_requests_by_id(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Bot payments. One request of your own bot (404 not_found for anything else). Fulfil an order only when status is paid.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bot/payment-requests/YOUR_ID" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_bot_payment_requests_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_bot_token, not_found, rate_limited
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bot/payment-requests/:id/cancelbot
Link to this operation · Python: api.post_bot_payment_requests_by_id_cancel(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Bot payments. Cancels a pending request. 409 payment_in_progress while the buyer is paying, 409 not_cancellable once paid, declined or expired; cancelling a cancelled request is a no-op 200.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bot/payment-requests/YOUR_ID/cancel" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.post_bot_payment_requests_by_id_cancel(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_bot_token, not_found, payment_in_progress, not_cancellable, rate_limited
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Incoming webhooks 3 operations
GET/chat/webhooks/:wid/:tokenwebhook / legacy
Link to this operation · Python: api.get_chat_webhooks_by_wid_by_token(...)
Authentication: Secret webhook path token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
wid | Path (required) | Webhook identifier. |
token | Path (required) | Secret capability token, not a public identifier. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/webhooks/YOUR_WID/YOUR_TOKEN"Python method
api.get_chat_webhooks_by_wid_by_token(wid="YOUR_WID", token="YOUR_TOKEN")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
Unknown Webhook
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/webhooks/:wid/:tokenwebhook / legacy
Link to this operation · Python: api.post_chat_webhooks_by_wid_by_token(...)
Authentication: Secret webhook path token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
wid | Path (required) | Webhook identifier. |
token | Path (required) | Secret capability token, not a public identifier. |
wait | Query | true returns the webhook message; otherwise success is 204. |
Observed top-level request keys
content, username, avatar_url, embeds, payload_json, attachments
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Multipart file fields
files[0]
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/webhooks/YOUR_WID/YOUR_TOKEN" \
-F "files[0]=@path/to/file"Python method
api.post_chat_webhooks_by_wid_by_token(wid="YOUR_WID", token="YOUR_TOKEN", query=query_values, files={'files[0]': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
Cannot send an empty message, Unknown Webhook, channel_not_found, empty_message, no_attach_permission, not_a_member, rate_limited, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/chat/webhooks/:wid/:tokenwebhook / legacy
Link to this operation · Python: api.delete_chat_webhooks_by_wid_by_token(...)
Authentication: Secret webhook path token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
wid | Path (required) | Webhook identifier. |
token | Path (required) | Secret capability token, not a public identifier. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/chat/webhooks/YOUR_WID/YOUR_TOKEN"Python method
api.delete_chat_webhooks_by_wid_by_token(wid="YOUR_WID", token="YOUR_TOKEN")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
Unknown Webhook, server_read_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Video player 4 operations
POST/chat/yt/:id/preparebearer / legacy
Link to this operation · Python: api.post_chat_yt_by_id_prepare(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/yt/YOUR_ID/prepare" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_chat_yt_by_id_prepare(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_video, server_busy
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/yt/:id/statusbearer / legacy
Link to this operation · Python: api.get_chat_yt_by_id_status(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/yt/YOUR_ID/status" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_yt_by_id_status(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_video
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/yt/:id/savebearer / legacy
Link to this operation · Python: api.post_chat_yt_by_id_save(...)
Authentication: User Bearer token
Token scopes: CHAT (2048), MEDIA_UPLOAD (4096)
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
title
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/yt/YOUR_ID/save" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_chat_yt_by_id_save(id="YOUR_ID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_video, server_busy, server_error, storage_limit_exceeded, upload_suspended
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/yt/stream/:idnone / legacy
Link to this operation · Python: api.get_chat_yt_stream_by_id(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Legacy: Nookara-hosted servers are read-only now (writes answer server_read_only, with moved_to when the server moved). Use the matching Ember instance route.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
dl | Query | Endpoint-specific query value. |
e | Query | Endpoint-specific query value. |
s | Query | Endpoint-specific query value. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/yt/stream/YOUR_ID"Python method
api.get_chat_yt_stream_by_id(id="YOUR_ID", query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
link_expired, not_ready
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Achievements 3 operations
GET/achievementsbearer
Link to this operation · Python: api.get_achievements(...)
Authentication: User Bearer token
Token scopes: PROFILE_READ (1)
| Parameter | Location | Meaning |
|---|---|---|
game | Query | Endpoint-specific query value. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/achievements" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_achievements(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/achievements/:id/grantbearer
Link to this operation · Python: api.post_achievements_by_id_grant(...)
Authentication: User Bearer token
Token scopes: PROFILE_READ (1)
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
game
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/achievements/YOUR_ID/grant" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_achievements_by_id_grant(id="YOUR_ID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
achievement_not_found, wrong_game
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/achievements/:id/revokebearer
Link to this operation · Python: api.post_achievements_by_id_revoke(...)
Authentication: User Bearer token
Token scopes: PROFILE_READ (1)
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
game
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/achievements/YOUR_ID/revoke" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_achievements_by_id_revoke(id="YOUR_ID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
achievement_not_found, wrong_game
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Credits and payments 16 operations
GET/currency/balancebearer
Link to this operation · Python: api.get_currency_balance(...)
Authentication: User Bearer token
Token scopes: CURRENCY_READ (8192)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/currency/balance" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_currency_balance()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/currency/captcha-statusbearer
Link to this operation · Python: api.get_currency_captcha_status(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/currency/captcha-status" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_currency_captcha_status()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/currency/transferbearer
Link to this operation · Python: api.post_currency_transfer(...)
Authentication: User Bearer token
Token scopes: CURRENCY_PAY (1024)
Interactive: CAPTCHA verification or a server-recognized CAPTCHA pass is required. See the sign-in/payment guide.
Observed top-level request keys
amount, note, to, captcha_token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/currency/transfer" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_currency_transfer(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
insufficient_balance, invalid_input, self_transfer, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/currency/transactionsbearer
Link to this operation · Python: api.get_currency_transactions(...)
Authentication: User Bearer token
Token scopes: CURRENCY_READ (8192)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/currency/transactions" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_currency_transactions()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/currency/subscribebearer
Link to this operation · Python: api.post_currency_subscribe(...)
Authentication: User Bearer token
Token scopes: CURRENCY_PAY (1024)
Observed top-level request keys
amount, note, period, to
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/currency/subscribe" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_currency_subscribe(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
cannot_subscribe_to_self, invalid_input, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/currency/subscribe/user/:usernamebearer
Link to this operation · Python: api.delete_currency_subscribe_user_by_username(...)
Authentication: User Bearer token
Token scopes: CURRENCY_PAY (1024)
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/currency/subscribe/user/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_currency_subscribe_user_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/currency/subscriptions/outgoingbearer
Link to this operation · Python: api.get_currency_subscriptions_outgoing(...)
Authentication: User Bearer token
Token scopes: CURRENCY_READ (8192)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/currency/subscriptions/outgoing" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_currency_subscriptions_outgoing()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/currency/subscriptions/incomingbearer
Link to this operation · Python: api.get_currency_subscriptions_incoming(...)
Authentication: User Bearer token
Token scopes: CURRENCY_READ (8192)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/currency/subscriptions/incoming" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_currency_subscriptions_incoming()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/currency/daily-claimbearer
Link to this operation · Python: api.post_currency_daily_claim(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/currency/daily-claim" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_currency_daily_claim()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
already_claimed
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/currency/credit-subbearer
Link to this operation · Python: api.get_currency_credit_sub(...)
Authentication: User Bearer token
Token scopes: CURRENCY_READ (8192)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/currency/credit-sub" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_currency_credit_sub()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/currency/credit-sub/buybearer
Link to this operation · Python: api.post_currency_credit_sub_buy(...)
Authentication: User Bearer token
Token scopes: CURRENCY_PAY (1024)
Observed top-level request keys
tier, weeks
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/currency/credit-sub/buy" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_currency_credit_sub_buy(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
already_have_tier_or_higher, insufficient_balance, invalid_input
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/currency/credit-sub/ackbearer
Link to this operation · Python: api.post_currency_credit_sub_ack(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/currency/credit-sub/ack" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_currency_credit_sub_ack()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/currency/transfer-requestbearer
Link to this operation · Python: api.post_currency_transfer_request(...)
Authentication: User Bearer token
Token scopes: CURRENCY_PAY (1024)
Observed top-level request keys
amount, note, to
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/currency/transfer-request" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"to":"USERNAME","amount":10,"note":"Example purchase"}'Python method
api.post_currency_transfer_request(json={'to': 'USERNAME', 'amount': 10, 'note': 'Example purchase'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_input, self_transfer, too_many_requests, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/currency/transfer-request/:idnone
Link to this operation · Python: api.get_currency_transfer_request_by_id(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/currency/transfer-request/YOUR_ID"Python method
api.get_currency_transfer_request_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/currency/transfer-request/:id/confirmbearer
Link to this operation · Python: api.post_currency_transfer_request_by_id_confirm(...)
Authentication: User Bearer token
Token scopes: CURRENCY_PAY (1024)
Interactive: CAPTCHA verification or a server-recognized CAPTCHA pass is required. See the sign-in/payment guide.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
captcha_token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/currency/transfer-request/YOUR_ID/confirm" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_currency_transfer_request_by_id_confirm(id="YOUR_ID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found, wrong_account
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/currency/transfer-request/:id/cancelnone
Link to this operation · Python: api.post_currency_transfer_request_by_id_cancel(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/currency/transfer-request/YOUR_ID/cancel"Python method
api.post_currency_transfer_request_by_id_cancel(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Profile badges 3 operations
GET/badges/user/:usernamenone
Link to this operation · Python: api.get_badges_user_by_username(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/badges/user/YOUR_USERNAME"Python method
api.get_badges_user_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/badges/allnone
Link to this operation · Python: api.get_badges_all(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/badges/all"Python method
api.get_badges_all()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/badges/:idnone
Link to this operation · Python: api.get_badges_by_id(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/badges/YOUR_ID"Python method
api.get_badges_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
badge_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Media and uploads 12 operations
POST/media/pfpbearer
Link to this operation · Python: api.post_media_pfp(...)
Authentication: User Bearer token
Token scopes: ACCOUNT_WRITE (8)
Observed top-level request keys
crop, data
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/media/pfp" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_media_pfp(files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_image, file_too_large, gif_pro_only, invalid_data_uri, no_file, upload_error, upload_suspended
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/media/bannerbearer
Link to this operation · Python: api.post_media_banner(...)
Authentication: User Bearer token
Token scopes: ACCOUNT_WRITE (8)
Observed top-level request keys
crop, data
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/media/banner" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_media_banner(files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_image, file_too_large, gif_pro_only, invalid_data_uri, no_file, upload_error, upload_suspended
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/media/pfpbearer
Link to this operation · Python: api.delete_media_pfp(...)
Authentication: User Bearer token
Token scopes: ACCOUNT_WRITE (8)
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/media/pfp" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_media_pfp()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/media/bannerbearer
Link to this operation · Python: api.delete_media_banner(...)
Authentication: User Bearer token
Token scopes: ACCOUNT_WRITE (8)
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/media/banner" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_media_banner()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/media/imagebearer
Link to this operation · Python: api.post_media_image(...)
Authentication: User Bearer token
Token scopes: MEDIA_UPLOAD (4096)
Observed top-level request keys
data
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/media/image" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_media_image(files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
file_too_large, invalid_data_uri, no_file, storage_limit_exceeded, upload_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/media/audiobearer
Link to this operation · Python: api.post_media_audio(...)
Authentication: User Bearer token
Token scopes: MEDIA_UPLOAD (4096)
Observed top-level request keys
data
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/media/audio" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_media_audio(files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
file_too_large, invalid_data_uri, no_data, storage_limit_exceeded, unsupported_type, upload_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/media/video/chunkbearer
Link to this operation · Python: api.post_media_video_chunk(...)
Authentication: User Bearer token
Token scopes: MEDIA_UPLOAD (4096)
Observed top-level request keys
chunkIndex, sessionId, totalChunks
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Multipart file fields
chunk
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/media/video/chunk" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "chunk=@path/to/file"Python method
api.post_media_video_chunk(files={'chunk': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
file_too_large, forbidden, missing_fields, no_chunk, pro_only, session_expired, upload_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/media/video/finalizebearer
Link to this operation · Python: api.post_media_video_finalize(...)
Authentication: User Bearer token
Token scopes: MEDIA_UPLOAD (4096)
Observed top-level request keys
mimeType, originalName, sessionId
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/media/video/finalize" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_media_video_finalize(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
file_too_large, forbidden, missing_chunk, missing_session_id, pro_only, session_expired, session_not_found, storage_limit_exceeded, unsupported_type
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/media/videobearer
Link to this operation · Python: api.post_media_video(...)
Authentication: User Bearer token
Token scopes: MEDIA_UPLOAD (4096)
Observed top-level request keys
data
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/media/video" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_media_video(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
file_too_large, invalid_data_uri, no_file, pro_only, storage_limit_exceeded, unsupported_type
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/media/listbearer
Link to this operation · Python: api.get_media_list(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/media/list" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_media_list()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/media/:idbearer
Link to this operation · Python: api.delete_media_by_id(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/media/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_media_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/dlnone
Link to this operation · Python: api.get_chat_dl(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
u | Query | Catbox download URL. |
n | Query | Suggested download filename. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/dl"Python method
api.get_chat_dl(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Notifications 4 operations
GET/account/notificationsbearer
Link to this operation · Python: api.get_account_notifications(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Newest first. Query unread=1 (only unread), category (one category key), cursor (the last id you got, for the next page), limit (up to 50). Returns {notifications: [{id, category, kind, title, body, link, icon, actor: {username, pfp_url} | null, data, read, read_at, created_at}], next_cursor, unread}. title and body are plain text with **bold** as the only markup; render it yourself, never as HTML.
| Parameter | Location | Meaning |
|---|---|---|
unread | Query | Endpoint-specific query value. |
category | Query | Endpoint-specific query value. |
cursor | Query | Endpoint-specific query value. |
limit | Query | Maximum page size; endpoint-specific default/cap. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/account/notifications" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_account_notifications(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/account/notifications/unread-countbearer
Link to this operation · Python: api.get_account_notifications_unread_count(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Returns {unread}: the number for the bell.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/account/notifications/unread-count" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_account_notifications_unread_count()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/account/notifications/readbearer
Link to this operation · Python: api.post_account_notifications_read(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Body {ids: [..]} or {all: true}. Returns {success, unread}. Your other sockets get notifications_updated.
Observed top-level request keys
all, ids
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/account/notifications/read" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"ids":[1234,1235]}'Python method
api.post_account_notifications_read(json={'ids': [1234, 1235]})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/account/notifications/unreadbearer
Link to this operation · Python: api.post_account_notifications_unread(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Body {ids: [..]}. Marks them unread again. Returns {success, unread}.
Observed top-level request keys
ids
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/account/notifications/unread" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_account_notifications_unread(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/account/notifications/:idbearer
Link to this operation · Python: api.delete_account_notifications_by_id(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Deletes one of your notifications. Returns {success, unread}, or 404 not_found.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/account/notifications/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_account_notifications_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/account/notification-settingsbearer
Link to this operation · Python: api.get_account_notification_settings(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Returns {categories: [{key, label, description, icon, locked, staff, email, list}]} in settings order. locked categories (system, moderation) are always on. staff categories only exist for staff accounts. list = it lands in the bell and on your devices; email = it is also emailed (throttled).
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/account/notification-settings" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_account_notification_settings()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/account/notification-settingsbearer
Link to this operation · Python: api.patch_account_notification_settings(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Body {prefs: {<category>: {email?: bool, list?: bool}}}. Locked and unknown categories are ignored. Returns {success, categories} like the GET.
Observed top-level request keys
prefs
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/account/notification-settings" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"prefs":{"friends":{"list":true,"email":false}}}'Python method
api.patch_account_notification_settings(json={'prefs': {'friends': {'list': True, 'email': False}}})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/notificationsbearer
Link to this operation · Python: api.get_notifications(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Older feed (the Scratch/PenguinMod extension uses it): your unread notifications, newest first, at most 50, as {notifications: [{id, type, category, title, body, data, created_at}]} with the **bold** markers removed. New clients use GET /account/notifications.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/notifications" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_notifications()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/notifications/countbearer
Link to this operation · Python: api.get_notifications_count(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Older feed: {count} of unread notifications. Same number as GET /account/notifications/unread-count.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/notifications/count" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_notifications_count()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/notifications/read-allbearer
Link to this operation · Python: api.patch_notifications_read_all(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Older feed: marks every notification read. Same as POST /account/notifications/read {all: true}.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/notifications/read-all" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.patch_notifications_read_all()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/notifications/:idbearer
Link to this operation · Python: api.delete_notifications_by_id(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Older feed: deletes one notification. Always answers {success: true}.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/notifications/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_notifications_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Game store 3 operations
GET/store/game/:idnone
Link to this operation · Python: api.get_store_game_by_id(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/store/game/YOUR_ID"Python method
api.get_store_game_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
game_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/store/game/:id/buybearer
Link to this operation · Python: api.post_store_game_by_id_buy(...)
Authentication: User Bearer token
Token scopes: CURRENCY_PAY (1024)
Interactive: CAPTCHA verification or a server-recognized CAPTCHA pass is required. See the sign-in/payment guide.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
price, captcha_token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/store/game/YOUR_ID/buy" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_store_game_by_id_buy(id="YOUR_ID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
already_owned, free_game, game_not_found, insufficient_balance, no_seller, price_changed
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/store/game/:id/refundbearer
Link to this operation · Python: api.post_store_game_by_id_refund(...)
Authentication: User Bearer token
Token scopes: CURRENCY_PAY (1024)
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/store/game/YOUR_ID/refund" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_store_game_by_id_refund(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_purchased, played_too_long
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Reports 3 operations
GET/api/report/search-usersnone
Link to this operation · Python: api.get_api_report_search_users(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
q | Query | Search text; URL encode it. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/api/report/search-users"Python method
api.get_api_report_search_users(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
Search failed, rate_limited
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/api/report/submitnone
Link to this operation · Python: api.post_api_report_submit(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
category, contact, description, location, reported_id
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Multipart file fields
evidence
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/api/report/submit" \
-F "evidence=@path/to/file"Python method
api.post_api_report_submit(files={'evidence': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
Contact email is required for guest submissions., Failed to submit report. Please try again., Missing required report fields., Reported user not found., Your IP address is permanently suspended from submitting guest reports. Please log into your Nookara account to submit a report.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/api/report/ban-guest-ipnone
Link to this operation · Python: api.get_api_report_ban_guest_ip(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
token | Query | Endpoint-specific query value. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/api/report/ban-guest-ip"Python method
api.get_api_report_ban_guest_ip(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Feedback 2 operations
POST/api/feedback/:type/submitnone
Link to this operation · Python: api.post_api_feedback_by_type_submit(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
type | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
category, description, location, title
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/api/feedback/YOUR_TYPE/submit" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_api_feedback_by_type_submit(type="YOUR_TYPE", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/api/support/submitnone
Link to this operation · Python: api.post_api_support_submit(...)
The support form. No account needed; a Bearer token is optional and, when sent, links the request to that account (and fills in username if it was left out). The request is emailed to Nookara staff with Reply-To set to email, and the answer comes back by email.
Authentication: None required (optional user Bearer token)
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Request body (JSON)
| Key | Required | Meaning |
|---|---|---|
name | Yes | Name to reply to, up to 80 characters. |
email | Yes | Reply address. Must be a valid email address. |
category | Yes | One of Account or sign-in, Billing, credits or Pro, Ember (chat), Hyperfocus launcher, Developers and the API, Privacy or data request, Something else. |
subject | Yes | Up to 120 characters. |
message | Yes | 10 to 4000 characters. |
username | No | Nookara username the request is about. |
Limits
One request per IP address per hour: a second one answers HTTP 429 with a Retry-After header and retry_after (seconds) in the body. IPs banned from the support form get HTTP 403 with a generic error.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/api/support/submit" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_api_support_submit(json=payload)Responses
200 { "success": true, "ticket": "VS-XXXXXXXX" } · 400 a readable error for a missing or invalid field · 403 banned IP · 429 rate limited · 500 server error.
Hyperfocus 6 operations
GET/hyperfocus/profile/:usernamenone
Link to this operation · Python: api.get_hyperfocus_profile_by_username(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/hyperfocus/profile/YOUR_USERNAME"Python method
api.get_hyperfocus_profile_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/hyperfocus/achievements/stats/:gamenone
Link to this operation · Python: api.get_hyperfocus_achievements_stats_by_game(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
game | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/hyperfocus/achievements/stats/YOUR_GAME"Python method
api.get_hyperfocus_achievements_stats_by_game(game="YOUR_GAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_game, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/hyperfocus/admin/remote/:usernamebearer / staff
Link to this operation · Python: api.get_hyperfocus_admin_remote_by_username(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/hyperfocus/admin/remote/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_hyperfocus_admin_remote_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found, owner_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/hyperfocus/admin/closebearer / staff
Link to this operation · Python: api.post_hyperfocus_admin_close(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Observed top-level request keys
username
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/hyperfocus/admin/close" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_hyperfocus_admin_close(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_closable, not_found, owner_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/hyperfocus/friendsbearer
Link to this operation · Python: api.get_hyperfocus_friends(...)
Authentication: User Bearer token
Token scopes: FRIENDS_READ (256)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/hyperfocus/friends" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_hyperfocus_friends()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/hyperfocus/bug-reportnone
Link to this operation · Python: api.post_hyperfocus_bug_report(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/hyperfocus/bug-report"Python method
api.post_hyperfocus_bug_report()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
mail_failed, too_many_reports, too_short
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Staff administration 56 operations
PATCH/admin/user/:username/rankbearer / staff
Link to this operation · Python: api.patch_admin_user_by_username_rank(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Observed top-level request keys
rank
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/admin/user/YOUR_USERNAME/rank" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_admin_user_by_username_rank(username="YOUR_USERNAME", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
cannot_modify_owner, insufficient_rank, invalid_rank, missing_rank, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/admin/user/:username/creditsbearer / staff
Link to this operation · Python: api.patch_admin_user_by_username_credits(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Observed top-level request keys
amount, note
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/admin/user/YOUR_USERNAME/credits" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_admin_user_by_username_credits(username="YOUR_USERNAME", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_amount, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/badgesbearer / staff
Link to this operation · Python: api.get_admin_badges(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/badges" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_badges()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/badgesbearer / staff
Link to this operation · Python: api.post_admin_badges(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Observed top-level request keys
description, icon_url, name, sort
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/badges" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_admin_badges(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
missing_fields, name_taken
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/admin/badges/:idbearer / staff
Link to this operation · Python: api.patch_admin_badges_by_id(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
description, icon_url, name, sort
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/admin/badges/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_admin_badges_by_id(id="YOUR_ID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
missing_fields, name_taken, no_fields
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/admin/badges/:idbearer / staff
Link to this operation · Python: api.delete_admin_badges_by_id(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/admin/badges/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_admin_badges_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
badge_not_found, system_badge
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/badges/:id/iconbearer / staff
Link to this operation · Python: api.post_admin_badges_by_id_icon(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
data
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/badges/YOUR_ID/icon" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_admin_badges_by_id_icon(id="YOUR_ID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_image, badge_not_found, too_big
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/badges/:id/holdersbearer / staff
Link to this operation · Python: api.get_admin_badges_by_id_holders(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/badges/YOUR_ID/holders" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_badges_by_id_holders(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/user/:username/badgesbearer / staff
Link to this operation · Python: api.get_admin_user_by_username_badges(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/user/YOUR_USERNAME/badges" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_user_by_username_badges(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/user/:username/badgesbearer / staff
Link to this operation · Python: api.post_admin_user_by_username_badges(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Observed top-level request keys
badge_id
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/user/YOUR_USERNAME/badges" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_admin_user_by_username_badges(username="YOUR_USERNAME", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
badge_not_found, missing_badge_id, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/admin/user/:username/badges/:badgeIdbearer / staff
Link to this operation · Python: api.delete_admin_user_by_username_badges_by_badgeid(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
badgeId | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/admin/user/YOUR_USERNAME/badges/YOUR_BADGEID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_admin_user_by_username_badges_by_badgeid(username="YOUR_USERNAME", badgeId="YOUR_BADGEID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/admin/user/:usernamebearer / staff
Link to this operation · Python: api.delete_admin_user_by_username(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/admin/user/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_admin_user_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
cannot_delete_owner, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/user/:username/reset-linkbearer / staff
Link to this operation · Python: api.post_admin_user_by_username_reset_link(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/user/YOUR_USERNAME/reset-link" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_admin_user_by_username_reset_link(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/usersbearer / staff
Link to this operation · Python: api.get_admin_users(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
ip | Query | Endpoint-specific query value. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/users" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_users(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/banned-usersbearer / staff
Link to this operation · Python: api.get_admin_banned_users(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/banned-users" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_banned_users()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/userinfo/:usernamebearer / staff
Link to this operation · Python: api.get_admin_userinfo_by_username(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/userinfo/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_userinfo_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/admin/user/:username/restrictionsbearer / staff
Link to this operation · Python: api.put_admin_user_by_username_restrictions(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Observed top-level request keys
disabled_scopes
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/admin/user/YOUR_USERNAME/restrictions" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.put_admin_user_by_username_restrictions(username="YOUR_USERNAME", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
cannot_restrict_owner, not_found, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/admin/user/:username/profilebearer / staff
Link to this operation · Python: api.patch_admin_user_by_username_profile(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Observed top-level request keys
bio, color, country_code, timezone
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/admin/user/YOUR_USERNAME/profile" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_admin_user_by_username_profile(username="YOUR_USERNAME", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
no_fields, server_error, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/admin/user/:username/pfpbearer / staff
Link to this operation · Python: api.delete_admin_user_by_username_pfp(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/admin/user/YOUR_USERNAME/pfp" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_admin_user_by_username_pfp(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/admin/user/:username/bannerbearer / staff
Link to this operation · Python: api.delete_admin_user_by_username_banner(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/admin/user/YOUR_USERNAME/banner" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_admin_user_by_username_banner(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/user/:username/grant-renamebearer / staff
Link to this operation · Python: api.post_admin_user_by_username_grant_rename(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Observed top-level request keys
days
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/user/YOUR_USERNAME/grant-rename" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_admin_user_by_username_grant_rename(username="YOUR_USERNAME", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/user/:username/banbearer / staff
Link to this operation · Python: api.post_admin_user_by_username_ban(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Observed top-level request keys
reason
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/user/YOUR_USERNAME/ban" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_admin_user_by_username_ban(username="YOUR_USERNAME", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
cannot_ban_owner, insufficient_rank, server_error, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/user/:username/unbanbearer / staff
Link to this operation · Python: api.post_admin_user_by_username_unban(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/user/YOUR_USERNAME/unban" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_admin_user_by_username_unban(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error, user_not_banned, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/admin/user/:username/monitorbearer / staff
Link to this operation · Python: api.patch_admin_user_by_username_monitor(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/admin/user/YOUR_USERNAME/monitor" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.patch_admin_user_by_username_monitor(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/user/:username/revoke-sessionsbearer / staff
Link to this operation · Python: api.post_admin_user_by_username_revoke_sessions(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/user/YOUR_USERNAME/revoke-sessions" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_admin_user_by_username_revoke_sessions(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/admin/user/:username/sessions/:sessionIdbearer / staff
Link to this operation · Python: api.delete_admin_user_by_username_sessions_by_sessionid(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
sessionId | Path (required) | Session identifier. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/admin/user/YOUR_USERNAME/sessions/YOUR_SESSIONID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_admin_user_by_username_sessions_by_sessionid(username="YOUR_USERNAME", sessionId="YOUR_SESSIONID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/warn/:usernamebearer / staff
Link to this operation · Python: api.post_admin_warn_by_username(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Observed top-level request keys
level, reason
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/warn/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_admin_warn_by_username(username="YOUR_USERNAME", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
cannot_warn_owner, invalid_level, missing_fields, server_error, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/warnings/:usernamebearer / staff
Link to this operation · Python: api.get_admin_warnings_by_username(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/warnings/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_warnings_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/mod-logsbearer / staff
Link to this operation · Python: api.get_admin_mod_logs(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/mod-logs" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_mod_logs()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/monitored-logsbearer / staff
Link to this operation · Python: api.get_admin_monitored_logs(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/monitored-logs" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_monitored_logs()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/mod-logs/:usernamebearer / staff
Link to this operation · Python: api.get_admin_mod_logs_by_username(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/mod-logs/YOUR_USERNAME" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_mod_logs_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/send-vmailbearer / staff
Link to this operation · Python: api.post_admin_send_vmail(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Staff. The older "system message" call. System DMs are gone: {username, subject, message} now becomes a system notification for that account.
Observed top-level request keys
message, subject, username
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/send-vmail" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_admin_send_vmail(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
missing_fields, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/notifications/sendbearer / staff
Link to this operation · Python: api.post_admin_notifications_send(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Staff. Sends a system notification (a locked category, nobody can turn it off). Body {usernames: [..]} (up to 200) or {all: true, confirm: "ALL"} (admins and the owner only, once every 10 minutes), plus title (up to 128), body (up to 2000, **bold** allowed), link (a site path or an https URL) and email (also email it). Returns {success, sent, emailed}. Errors: missing_fields, too_long, bad_link, forbidden, confirm_required, too_soon (429), too_many, user_not_found (with missing).
Observed top-level request keys
all, body, confirm, email, link, title, usernames
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/notifications/send" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_admin_notifications_send(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_link, confirm_required, forbidden, missing_fields, too_long, too_many, too_soon, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/send-emailbearer / staff
Link to this operation · Python: api.post_admin_send_email(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Observed top-level request keys
message, subject, username
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/send-email" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_admin_send_email(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
missing_fields, user_has_no_email, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/ip-banbearer / staff
Link to this operation · Python: api.post_admin_ip_ban(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Observed top-level request keys
expires_at, ip, ip_hash, reason
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/ip-ban" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_admin_ip_ban(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
missing_ip
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/admin/ip-ban/:hashbearer / staff
Link to this operation · Python: api.delete_admin_ip_ban_by_hash(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
hash | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/admin/ip-ban/YOUR_HASH" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_admin_ip_ban_by_hash(hash="YOUR_HASH")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/admin/user/:username/warn/clearbearer / staff
Link to this operation · Python: api.delete_admin_user_by_username_warn_clear(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/admin/user/YOUR_USERNAME/warn/clear" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_admin_user_by_username_warn_clear(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/ip-bansbearer / staff
Link to this operation · Python: api.get_admin_ip_bans(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/ip-bans" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_ip_bans()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/blacklisted-domainsbearer / staff
Link to this operation · Python: api.get_admin_blacklisted_domains(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/blacklisted-domains" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_blacklisted_domains()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/blacklisted-domainsbearer / staff
Link to this operation · Python: api.post_admin_blacklisted_domains(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Observed top-level request keys
domain, reason
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/blacklisted-domains" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_admin_blacklisted_domains(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_domain
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/admin/blacklisted-domains/:domainbearer / staff
Link to this operation · Python: api.delete_admin_blacklisted_domains_by_domain(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
domain | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/admin/blacklisted-domains/YOUR_DOMAIN" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_admin_blacklisted_domains_by_domain(domain="YOUR_DOMAIN")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/statsbearer / staff
Link to this operation · Python: api.get_admin_stats(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/stats" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_stats()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/tosbearer / staff
Link to this operation · Python: api.post_admin_tos(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Observed top-level request keys
content, effective_date, version
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/tos" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_admin_tos(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
missing_fields
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/monitoredbearer / staff
Link to this operation · Python: api.get_admin_monitored(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/monitored" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_monitored()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/monitored/pendingbearer / staff
Link to this operation · Python: api.get_admin_monitored_pending(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/monitored/pending" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_monitored_pending()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/monitored/pending/:id/approvebearer / staff
Link to this operation · Python: api.post_admin_monitored_pending_by_id_approve(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/monitored/pending/YOUR_ID/approve" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_admin_monitored_pending_by_id_approve(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/admin/monitored/pending/:idbearer / staff
Link to this operation · Python: api.delete_admin_monitored_pending_by_id(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/admin/monitored/pending/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_admin_monitored_pending_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/api-logsbearer / staff
Link to this operation · Python: api.get_admin_api_logs(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
limit | Query | Maximum page size; endpoint-specific default/cap. |
offset | Query | Search result offset. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/api-logs" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_api_logs(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/api-logs/topbearer / staff
Link to this operation · Python: api.get_admin_api_logs_top(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
by | Query | Endpoint-specific query value. |
hours | Query | Endpoint-specific query value. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/api-logs/top" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_api_logs_top(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/feedbackbearer / staff
Link to this operation · Python: api.get_admin_feedback(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
type | Query | Endpoint-specific query value. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/feedback" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_feedback(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/admin/feedback/:id/pinbearer / staff
Link to this operation · Python: api.patch_admin_feedback_by_id_pin(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/admin/feedback/YOUR_ID/pin" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.patch_admin_feedback_by_id_pin(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/feedback/:id/grant-badgebearer / staff
Link to this operation · Python: api.post_admin_feedback_by_id_grant_badge(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/feedback/YOUR_ID/grant-badge" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_admin_feedback_by_id_grant_badge(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found, server_error, user_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/admin/feedback/:idbearer / staff
Link to this operation · Python: api.delete_admin_feedback_by_id(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/admin/feedback/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_admin_feedback_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/admin/vpn-networksbearer / staff
Link to this operation · Python: api.get_admin_vpn_networks(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/vpn-networks" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_vpn_networks()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
network_rules_unavailable
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/vpn-networksbearer / staff
Link to this operation · Python: api.post_admin_vpn_networks(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Observed top-level request keys
action, cidr, reason
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/vpn-networks" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_admin_vpn_networks(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/admin/vpn-networks/:cidrbearer / staff
Link to this operation · Python: api.delete_admin_vpn_networks_by_cidr(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
| Parameter | Location | Meaning |
|---|---|---|
cidr | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/admin/vpn-networks/YOUR_CIDR" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_admin_vpn_networks_by_cidr(cidr="YOUR_CIDR")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
network_rule_delete_failed
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/vpn-networks/refreshbearer / staff
Link to this operation · Python: api.post_admin_vpn_networks_refresh(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/vpn-networks/refresh" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_admin_vpn_networks_refresh()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
vpn_feed_update_failed
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Spotify connection 5 operations
GET/connect/spotify/statusbearer
Link to this operation · Python: api.get_connect_spotify_status(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/connect/spotify/status" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_connect_spotify_status()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/connect/spotify/linkbearer
Link to this operation · Python: api.post_connect_spotify_link(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/connect/spotify/link" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_connect_spotify_link()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
spotify_not_configured
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/connect/spotify/callbacknone
Link to this operation · Python: api.get_connect_spotify_callback(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
code | Query | Sensitive pending authorization code. |
error | Query | Endpoint-specific query value. |
state | Query | Endpoint-specific query value. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/connect/spotify/callback"Python method
api.get_connect_spotify_callback(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/connect/spotify/profilebearer
Link to this operation · Python: api.patch_connect_spotify_profile(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
Observed top-level request keys
show
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/connect/spotify/profile" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_connect_spotify_profile(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_linked
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/connect/spotifybearer
Link to this operation · Python: api.delete_connect_spotify(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/connect/spotify" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_connect_spotify()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Browser Web Push 6 operations
GET/push/vapidnone
Link to this operation · Python: api.get_push_vapid(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/push/vapid"Python method
api.get_push_vapid()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/push/statebearer
Link to this operation · Python: api.get_push_state(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Browser push switches for chat-type events (messages, calls, mentions, achievements...). Friends, credits and announcements are notifications now and follow GET /account/notification-settings instead.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/push/state" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_push_state()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/push/subscribebearer
Link to this operation · Python: api.post_push_subscribe(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
subscription
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/push/subscribe" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_push_subscribe(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_subscription
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/push/unsubscribebearer
Link to this operation · Python: api.post_push_unsubscribe(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
endpoint
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/push/unsubscribe" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_push_unsubscribe(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/push/prefsbearer
Link to this operation · Python: api.patch_push_prefs(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Observed top-level request keys
prefs
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/push/prefs" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_push_prefs(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/push/testbearer
Link to this operation · Python: api.post_push_test(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/push/test" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_push_test()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Badge Arcade 25 operations
GET/arcade/sim.jsnone
Link to this operation · Python: api.get_arcade_sim_js(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/sim.js"Python method
api.get_arcade_sim_js()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/sim.signone
Link to this operation · Python: api.get_arcade_sim_sig(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/sim.sig"Python method
api.get_arcade_sim_sig()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/sim-versionnone
Link to this operation · Python: api.get_arcade_sim_version(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/sim-version"Python method
api.get_arcade_sim_version()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/physics.jsnone
Link to this operation · Python: api.get_arcade_physics_js(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/physics.js"Python method
api.get_arcade_physics_js()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/physics.signone
Link to this operation · Python: api.get_arcade_physics_sig(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/physics.sig"Python method
api.get_arcade_physics_sig()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/planck.jsnone
Link to this operation · Python: api.get_arcade_planck_js(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/planck.js"Python method
api.get_arcade_planck_js()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/adminnone / staff
Link to this operation · Python: api.get_arcade_admin(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/admin"Python method
api.get_arcade_admin()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/showcasenone
Link to this operation · Python: api.get_arcade_showcase(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
n | Query | Suggested download filename. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/showcase"Python method
api.get_arcade_showcase(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/atlas/indexnone
Link to this operation · Python: api.get_arcade_atlas_index(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
cell | Query | Endpoint-specific query value. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/atlas/index"Python method
api.get_arcade_atlas_index(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_cell
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/atlas/:v/:page.pngnone
Link to this operation · Python: api.get_arcade_atlas_by_v_by_page_png(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
v | Path (required) | Identifier from the corresponding API response. |
page | Path (required) | Identifier from the corresponding API response. |
cell | Query | Endpoint-specific query value. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/atlas/YOUR_V/YOUR_PAGE.png"Python method
api.get_arcade_atlas_by_v_by_page_png(v="YOUR_V", page="YOUR_PAGE", query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_cell, stale
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/thumbnone
Link to this operation · Python: api.get_arcade_thumb(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
u | Query | Catbox download URL. |
w | Query | Endpoint-specific query value. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/thumb"Python method
api.get_arcade_thumb(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_image, bad_path, bad_width, not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/statebearer
Link to this operation · Python: api.get_arcade_state(...)
Authentication: User Bearer token
Token scopes: PROFILE_READ (1)
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/state" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_arcade_state()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/machine/:idbearer
Link to this operation · Python: api.get_arcade_machine_by_id(...)
Authentication: User Bearer token
Token scopes: PROFILE_READ (1)
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/machine/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_arcade_machine_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
machine_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/arcade/machine/:id/playbearer
Link to this operation · Python: api.post_arcade_machine_by_id_play(...)
Authentication: User Bearer token
Token scopes: PROFILE_READ (1)
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
hold, seq, trace
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/arcade/machine/YOUR_ID/play" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_arcade_machine_by_id_play(id="YOUR_ID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
closed, machine_not_found, no_plays, no_practice, out_of_sync, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/arcade/machine/:id/resetbearer
Link to this operation · Python: api.post_arcade_machine_by_id_reset(...)
Authentication: User Bearer token
Token scopes: PROFILE_READ (1)
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/arcade/machine/YOUR_ID/reset" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_arcade_machine_by_id_reset(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
machine_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/arcade/checkbearer
Link to this operation · Python: api.post_arcade_check(...)
Authentication: User Bearer token
Token scopes: PROFILE_READ (1)
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/arcade/check" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_arcade_check()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/newsbearer
Link to this operation · Python: api.get_arcade_news(...)
Authentication: User Bearer token
Token scopes: PROFILE_READ (1)
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/news" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_arcade_news()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/arcade/tutorialbearer
Link to this operation · Python: api.post_arcade_tutorial(...)
Authentication: User Bearer token
Token scopes: PROFILE_READ (1)
Client-specific protocol. See the integration guide before using this endpoint.
Observed top-level request keys
done
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/arcade/tutorial" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_arcade_tutorial(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/bookbearer
Link to this operation · Python: api.get_arcade_book(...)
Authentication: User Bearer token
Token scopes: PROFILE_READ (1)
Client-specific protocol. See the integration guide before using this endpoint.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/book" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_arcade_book()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
closed
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/arcade/showcasebearer
Link to this operation · Python: api.post_arcade_showcase(...)
Authentication: User Bearer token
Token scopes: PROFILE_READ (1)
Client-specific protocol. See the integration guide before using this endpoint.
Observed top-level request keys
badges
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/arcade/showcase" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_arcade_showcase(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_owned
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/arcade/boardbearer
Link to this operation · Python: api.put_arcade_board(...)
Authentication: User Bearer token
Token scopes: ACCOUNT_WRITE (8)
Client-specific protocol. See the integration guide before using this endpoint.
Observed top-level request keys
items, kind
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/arcade/board" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.put_arcade_board(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/arcade/buybearer
Link to this operation · Python: api.post_arcade_buy(...)
Authentication: User Bearer token
Token scopes: PROFILE_READ (1)
Client-specific protocol. See the integration guide before using this endpoint.
Observed top-level request keys
bundle, machine
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/arcade/buy" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_arcade_buy(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bundle_not_found, limit_reached, machine_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/purchase/:idbearer
Link to this operation · Python: api.get_arcade_purchase_by_id(...)
Authentication: User Bearer token
Token scopes: PROFILE_READ (1)
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/purchase/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_arcade_purchase_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/arcade/purchase/:id/cancelbearer
Link to this operation · Python: api.post_arcade_purchase_by_id_cancel(...)
Authentication: User Bearer token
Token scopes: PROFILE_READ (1)
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/arcade/purchase/YOUR_ID/cancel" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_arcade_purchase_by_id_cancel(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/arcade/profile/:usernamenone
Link to this operation · Python: api.get_arcade_profile_by_username(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Client-specific protocol. See the integration guide before using this endpoint.
| Parameter | Location | Meaning |
|---|---|---|
username | Path (required) | Nookara username, URL encoded. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/arcade/profile/YOUR_USERNAME"Python method
api.get_arcade_profile_by_username(username="YOUR_USERNAME")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Service information 2 operations
GET/healthnone
Link to this operation · Python: api.get_health(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/health"Python method
api.get_health()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/stats/random-usernamesnone
Link to this operation · Python: api.get_stats_random_usernames(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/stats/random-usernames"Python method
api.get_stats_random_usernames()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Ember: identity, instance list, import 17 operations
POST/bonfire/instance-tokenbearer
Link to this operation · Python: api.post_bonfire_instance_token(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Needs Chat (2048). Body {"instance": URL}. Returns {token, expires_at, aud}: an EdDSA JWT (10 minutes, single use) made for that one instance. Its scp claim lists the instance scopes the Nookara token holds: chat (Chat), voice (Voice), media (Upload Media), sign (Sign Messages). Hand the JWT to POST INSTANCE/api/v1/auth/velora. Errors: invalid_instance, instance_banned, insufficient_scope, scope_disabled.
Observed top-level request keys
instance
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/instance-token" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_bonfire_instance_token(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
instance_banned, invalid_instance
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/keysnone
Link to this operation · Python: api.post_bonfire_keys(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Retired (410 device_keys_retired). Use GET /bonfire/signing-key.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/keys"Python method
api.post_bonfire_keys()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
device_keys_retired
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/keysbearer
Link to this operation · Python: api.get_bonfire_keys(...)
Authentication: User Bearer token
Token scopes: SIGN_MESSAGES (32768)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/keys" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_keys()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/bonfire/keys/:kidbearer
Link to this operation · Python: api.delete_bonfire_keys_by_kid(...)
Authentication: User Bearer token
Token scopes: SIGN_MESSAGES (32768)
| Parameter | Location | Meaning |
|---|---|---|
kid | Path (required) | Signing key id (k_ plus 16 hex characters). |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/bonfire/keys/YOUR_KID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_bonfire_keys_by_kid(kid="YOUR_KID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
key_not_found, website_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/keys/kid/:kidnone
Link to this operation · Python: api.get_bonfire_keys_kid_by_kid(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Public. Returns {kid, user_id, public_key, created_at, revoked_at}, or 404 key_not_found. Instances and clients use it to verify signed messages.
| Parameter | Location | Meaning |
|---|---|---|
kid | Path (required) | Signing key id (k_ plus 16 hex characters). |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/keys/kid/YOUR_KID"Python method
api.get_bonfire_keys_kid_by_kid(kid="YOUR_KID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
key_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/keys/user/:userIdnone
Link to this operation · Python: api.get_bonfire_keys_user_by_userid(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Public. Every key of one account, including revoked ones.
| Parameter | Location | Meaning |
|---|---|---|
userId | Path (required) | Numeric Nookara user id. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/keys/user/YOUR_USERID"Python method
api.get_bonfire_keys_user_by_userid(userId="YOUR_USERID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_user_id
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/instancesbearer
Link to this operation · Python: api.get_bonfire_instances(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Needs Chat. Returns {default_instance, instances: [{url, position, added_at, muted, push, auto_join}]}: the Ember servers saved on the account. The official server (default_instance) is added once per account; auto_join is true until a client confirms with POST /bonfire/instances/default-joined.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/instances" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_instances()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/instances/default-joinedbearer
Link to this operation · Python: api.post_bonfire_instances_default_joined(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Needs Chat. Body {url?}. The client confirms it joined (or chose not to join) the official server; clears auto_join.
Observed top-level request keys
url
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/instances/default-joined" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_bonfire_instances_default_joined(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_instance
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/bonfire/instancesbearer
Link to this operation · Python: api.put_bonfire_instances(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Needs Chat. Replaces the whole list in this order (at most 100 normalized origins). Muted and push settings of kept entries are preserved.
Observed top-level request keys
instances
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/bonfire/instances" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.put_bonfire_instances(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_instance, invalid_instances
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/bonfire/instances/prefsbearer
Link to this operation · Python: api.patch_bonfire_instances_prefs(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Needs Chat. Body {url, muted?, push?}: per-server push consent for offline mentions. 404 instance_not_in_list.
Observed top-level request keys
url, muted, push
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/bonfire/instances/prefs" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_bonfire_instances_prefs(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
instance_not_in_list, invalid_instance, nothing_to_change
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/instances/challengenone
Link to this operation · Python: api.post_bonfire_instances_challenge(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Instance-only: used by bonfire-server to register itself (single-use nonce). Not for clients.
Observed top-level request keys
pubkey, url
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/instances/challenge" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_bonfire_instances_challenge(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
busy, invalid_pubkey, invalid_url
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/instances/registernone
Link to this operation · Python: api.post_bonfire_instances_register(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Instance-only: a bonfire-server proves control of its key and URL here. Not for clients.
Observed top-level request keys
accounts_mode, name, nonce, pubkey, sig, url
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/instances/register" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_bonfire_instances_register(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_signature, instance_banned, invalid_accounts_mode, invalid_name, invalid_nonce, invalid_pubkey, invalid_url, url_taken, url_unverified
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/instances/payoutbearer
Link to this operation · Python: api.post_bonfire_instances_payout(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Needs Chat. Body {attestation}: the instance owner links payouts (credits from role shops) using GET INSTANCE/api/v1/instance/owner-attestation.
Observed top-level request keys
attestation
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/instances/payout" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_bonfire_instances_payout(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
instance_banned, invalid_attestation, not_owner, unknown_instance
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/instances/payoutbearer
Link to this operation · Python: api.get_bonfire_instances_payout(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Needs Chat, query url. Who receives shop payments for an instance; only the registered owner can read it.
| Parameter | Location | Meaning |
|---|---|---|
url | Query | URL to process or identify. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/instances/payout" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_instances_payout(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
forbidden, invalid_instance, unknown_instance
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/.well-known/bonfire/jwks.jsonnone
Link to this operation · Python: api.get_well_known_bonfire_jwks_json(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Public. Nookara identity keys (Ed25519, JWKS). Instances verify instance tokens, pay receipts and bot-add tickets with it.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/.well-known/bonfire/jwks.json"Python method
api.get_well_known_bonfire_jwks_json()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/server-latest.jsonnone
Link to this operation · Python: api.get_bonfire_server_latest_json(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Public. The official bonfire-server build: {version, commit, commit_short, commit_date, built_at, build_id, dirty, message, published_at}. Instances compare themselves with it (GET /api/v1/instance/info, admins).
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/server-latest.json"Python method
api.get_bonfire_server_latest_json()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/profilesnone
Link to this operation · Python: api.get_bonfire_profiles(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Public, up to 100 ids (comma separated Nookara ids). Returns {profiles: [{id, username, display_name, pfp}]}. Instances use it to keep names and pictures of Nookara members fresh.
| Parameter | Location | Meaning |
|---|---|---|
ids | Query | Comma separated ids. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/profiles"Python method
api.get_bonfire_profiles(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Ember: directory and pay requests 8 operations
GET/bonfire/import/platformsbearer
Link to this operation · Python: api.get_bonfire_import_platforms(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/import/platforms" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_import_platforms()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/import/:platform/guildsbearer
Link to this operation · Python: api.get_bonfire_import_by_platform_guilds(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
platform | Path (required) | Linked external platform identifier. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/import/YOUR_PLATFORM/guilds" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_import_by_platform_guilds(platform="YOUR_PLATFORM")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/import/:platform/guilds/:gidbearer
Link to this operation · Python: api.get_bonfire_import_by_platform_guilds_by_gid(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
platform | Path (required) | Linked external platform identifier. |
gid | Path (required) | Numeric guild ID from bot API, or external platform guild ID on bridge routes. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/import/YOUR_PLATFORM/guilds/YOUR_GID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_import_by_platform_guilds_by_gid(platform="YOUR_PLATFORM", gid="YOUR_GID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_guild
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/importbearer
Link to this operation · Python: api.post_bonfire_import(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Needs Chat. Body {platform, guild_id, channels, roles, options?, instance}. Starts a background job that builds a bonfire-export-v1 zip (channels, roles, emoji; no members or messages) and returns {job_id, ticket, instance, expires_at}. The one-time ticket goes to POST INSTANCE/api/v1/import/velora.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/import" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_bonfire_import()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bad_platform, import_running, invalid_guild, invalid_instance, invalid_selection, pick_a_channel
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/import/:job_idbearer
Link to this operation · Python: api.get_bonfire_import_by_job_id(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Needs Chat. Job state {status, progress, stage, error, instance, size, expires_at, downloaded}. Owner only.
| Parameter | Location | Meaning |
|---|---|---|
job_id | Path (required) | Import job id returned by POST /bonfire/import. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/import/YOUR_JOB_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_import_by_job_id(job_id="YOUR_JOB_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/directorynone
Link to this operation · Python: api.get_bonfire_directory(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Public, CORS open. Query q, page. Returns {page, page_size: 24, has_more, results: [{id, url, name, description, icon_url, member_count, invite_url, tags, trusted, updated_at}]}. Treat every field as untrusted text.
| Parameter | Location | Meaning |
|---|---|---|
page | Query | One-based GIF page. |
q | Query | Search text; URL encode it. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/directory"Python method
api.get_bonfire_directory(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/pay-requests/:id/approvebearer
Link to this operation · Python: api.post_bonfire_pay_requests_by_id_approve(...)
Authentication: User Bearer token
Token scopes: CURRENCY_PAY (1024)
Interactive: CAPTCHA verification or a server-recognized CAPTCHA pass is required. See the sign-in/payment guide.
Needs Currency Pay (1024) and a CAPTCHA pass. Pays a role-shop request an instance made. Do not auto-approve for the user.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
captcha_token
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/pay-requests/YOUR_ID/approve" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_bonfire_pay_requests_by_id_approve(id="YOUR_ID", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found, server_error, wrong_account
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/pay-requests/:id/declinebearer
Link to this operation · Python: api.post_bonfire_pay_requests_by_id_decline(...)
Authentication: User Bearer token
Token scopes: CURRENCY_PAY (1024)
Needs Currency Pay. Only the payer can decline.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/pay-requests/YOUR_ID/decline" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_bonfire_pay_requests_by_id_decline(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
not_found, server_error, wrong_account
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Ember: message signing keys 3 operations
GET/bonfire/signing-keybearer
Link to this operation · Python: api.get_bonfire_signing_key(...)
Authentication: User Bearer token
Token scopes: SIGN_MESSAGES (32768)
Needs Sign Messages (32768). Returns {kid, public_key, private_key, created_at} (no-store). One Ed25519 key per account, created on first use. Keep the private key in memory only.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/signing-key" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_signing_key()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/signing-key/rotatebearer
Link to this operation · Python: api.post_bonfire_signing_key_rotate(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Website session only; an app or project token is refused. Revokes the active key and returns a new {kid, public_key, created_at}. Old messages stay valid.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/signing-key/rotate" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_bonfire_signing_key_rotate()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
website_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/signing-key/infobearer
Link to this operation · Python: api.get_bonfire_signing_key_info(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Information about the signed-in account key without the private half.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/signing-key/info" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_signing_key_info()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
website_only
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Ember: hosting and backups 14 operations
GET/bonfire/hosting/plansnone
Link to this operation · Python: api.get_bonfire_hosting_plans(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/hosting/plans"Python method
api.get_bonfire_hosting_plans()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
hosting_unavailable
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/hosting/slug/:slugbearer
Link to this operation · Python: api.get_bonfire_hosting_slug_by_slug(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
slug | Path (required) | Hosted server name (3 to 32 characters). |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/hosting/slug/YOUR_SLUG" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_hosting_slug_by_slug(slug="YOUR_SLUG")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
hosting_unavailable
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/hosting/serversbearer
Link to this operation · Python: api.post_bonfire_hosting_servers(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Observed top-level request keys
slug, name, plan, weeks, restore_backup
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/hosting/servers" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_bonfire_hosting_servers(json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
backup_not_found, busy, hostd_unreachable, hosting_failed, hosting_unavailable, insufficient_balance, insufficient_scope, invalid_plan, invalid_weeks, slug_taken, starter_limit_reached
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/hosting/serversbearer
Link to this operation · Python: api.get_bonfire_hosting_servers(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/hosting/servers" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_hosting_servers()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
hosting_unavailable
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/hosting/servers/by-urlbearer
Link to this operation · Python: api.get_bonfire_hosting_servers_by_url(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
url | Query | URL to process or identify. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/hosting/servers/by-url" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_hosting_servers_by_url(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
hostd_unreachable, hosting_unavailable, not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/hosting/servers/:slug/weeksbearer
Link to this operation · Python: api.post_bonfire_hosting_servers_by_slug_weeks(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
| Parameter | Location | Meaning |
|---|---|---|
slug | Path (required) | Hosted server name (3 to 32 characters). |
Observed top-level request keys
weeks
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/hosting/servers/YOUR_SLUG/weeks" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.post_bonfire_hosting_servers_by_slug_weeks(slug="YOUR_SLUG", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
hostd_unreachable, hosting_failed, hosting_unavailable, insufficient_balance, insufficient_scope, invalid_weeks, not_found, pro_covers, suspended
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PATCH/bonfire/hosting/servers/:slugbearer
Link to this operation · Python: api.patch_bonfire_hosting_servers_by_slug(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
slug | Path (required) | Hosted server name (3 to 32 characters). |
Observed top-level request keys
plan
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PATCH "https://nookara.cc/bonfire/hosting/servers/YOUR_SLUG" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.patch_bonfire_hosting_servers_by_slug(slug="YOUR_SLUG", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
hostd_unreachable, hosting_failed, hosting_unavailable, invalid_plan, not_found, starter_limit_reached, suspended, use_weeks
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/hosting/servers/:slug/restartbearer
Link to this operation · Python: api.post_bonfire_hosting_servers_by_slug_restart(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
slug | Path (required) | Hosted server name (3 to 32 characters). |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/hosting/servers/YOUR_SLUG/restart" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_bonfire_hosting_servers_by_slug_restart(slug="YOUR_SLUG")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
hostd_unreachable, hosting_failed, hosting_unavailable, not_found, suspended
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/hosting/backups/uploadbearer
Link to this operation · Python: api.post_bonfire_hosting_backups_upload(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Observed top-level request keys
name, url, slug
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Multipart file fields
file
Send other fields with form-data. Bot/webhook multi-file posts can use payload_json plus file parts. Do not set the multipart boundary manually.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/hosting/backups/upload" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-F "file=@path/to/file"Python method
api.post_bonfire_hosting_backups_upload(files={'file': "path/to/file"})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
file_too_large, hosting_unavailable, invalid_instance, invalid_multipart, invalid_name, invalid_slug, no_file
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/hosting/servers/:slug/backupbearer
Link to this operation · Python: api.post_bonfire_hosting_servers_by_slug_backup(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
slug | Path (required) | Hosted server name (3 to 32 characters). |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/hosting/servers/YOUR_SLUG/backup" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_bonfire_hosting_servers_by_slug_backup(slug="YOUR_SLUG")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
backup_failed, hostd_unreachable, hosting_unavailable, not_found, nothing_to_back_up
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/hosting/backupsbearer
Link to this operation · Python: api.get_bonfire_hosting_backups(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/hosting/backups" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_hosting_backups()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
hosting_unavailable
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/hosting/backups/:id/downloadbearer
Link to this operation · Python: api.get_bonfire_hosting_backups_by_id_download(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/hosting/backups/YOUR_ID/download" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_hosting_backups_by_id_download(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
hosting_unavailable, not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/bonfire/hosting/backups/:idbearer
Link to this operation · Python: api.delete_bonfire_hosting_backups_by_id(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/bonfire/hosting/backups/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.delete_bonfire_hosting_backups_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
hosting_unavailable, not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
DELETE/bonfire/hosting/servers/:slugbearer
Link to this operation · Python: api.delete_bonfire_hosting_servers_by_slug(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
| Parameter | Location | Meaning |
|---|---|---|
slug | Path (required) | Hosted server name (3 to 32 characters). |
Observed top-level request keys
confirm
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X DELETE "https://nookara.cc/bonfire/hosting/servers/YOUR_SLUG" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonPython method
api.delete_bonfire_hosting_servers_by_slug(slug="YOUR_SLUG", json=payload)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
backup_failed, confirm_required, hostd_unreachable, hosting_failed, hosting_unavailable, not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Maintenance mode 3 operations
GET/admin/maintenancebearer / staff
Link to this operation · Python: api.get_admin_maintenance(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/admin/maintenance" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_admin_maintenance()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/admin/maintenancebearer / staff
Link to this operation · Python: api.put_admin_maintenance(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/admin/maintenance" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.put_admin_maintenance()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_message, invalid_on, server_error
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/admin/maintenance/bypassbearer / staff
Link to this operation · Python: api.post_admin_maintenance_bypass(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Privileged: staff or route-specific account rank is required. Owner-only restrictions may apply.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/admin/maintenance/bypass" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_admin_maintenance_bypass()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Ember: bot gallery (Discovery > Bots) 9 operations
GET/bonfire/bots/gallerynone
Link to this operation · Python: api.get_bonfire_bots_gallery(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Public bot gallery, approved bots only. No login needed.
| Parameter | Location | Meaning |
|---|---|---|
q | Query | Search text; URL encode it. |
tag | Query | Exact tag. |
page | Query | One-based GIF page. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/bots/gallery"Python method
api.get_bonfire_bots_gallery(query=query_values)Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/bots/gallery/tagsnone
Link to this operation · Python: api.get_bonfire_bots_gallery_tags(...)
Authentication: No standard Authorization middleware; endpoint may require a code/capability or interactive context
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Public bot gallery, approved bots only. No login needed.
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/bots/gallery/tags"Python method
api.get_bonfire_bots_gallery_tags()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/bots/gallery/:idbearer
Link to this operation · Python: api.get_bonfire_bots_gallery_by_id(...)
Authentication: User Bearer token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Public for approved bots. Send the optional bearer token of the bot owner (or staff) to also see a bot that is not listed, with state, review_message and the can_submit / can_withdraw flags.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/bots/gallery/YOUR_ID" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_bonfire_bots_gallery_by_id(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bot_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/bonfire/bots/gallery/:id/ticketbearer
Link to this operation · Python: api.post_bonfire_bots_gallery_by_id_ticket(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Returns a single-use add-ticket (JWS, 5 minutes) for one Ember instance: hand it to POST INSTANCE/api/v1/bots/gallery/add with { ticket, sid }.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
instance
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/bonfire/bots/gallery/YOUR_ID/ticket" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"instance":"https://chat.ikelene.net"}'Python method
api.post_bonfire_bots_gallery_by_id_ticket(id="YOUR_ID", json={'instance': 'https://chat.ikelene.net'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bot_is_private, gallery_banned, instance_banned, invalid_instance, unknown_instance
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/bonfire/bots/self/installsbot
Link to this operation · Python: api.get_bonfire_bots_self_installs(...)
Authentication: Bot token
Token scopes: No explicit scope middleware on this route; other authorization checks still apply.
Bot program, not a person: Authorization: Bot TOKEN (the Nookara bot account token). Lists the Ember instances the bot is installed on (from the instances' 10-minute sync reports; banned instances and banned bots are left out). Each entry has test: true or false; staff test installs are included with test: true and are not counted as real installs, so skip them. Open one INSTANCE/bot/gateway connection per entry and poll again every few minutes. 120 per minute per IP. Errors: invalid_bot_token (401).
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/bonfire/bots/self/installs" \
-H "Authorization: Bot $VELORA_BOT_TOKEN"Python method
api.get_bonfire_bots_self_installs()Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
invalid_bot_token
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
GET/chat/bots/:id/gallerybearer
Link to this operation · Python: api.get_chat_bots_by_id_gallery(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Bot owner only (or Nookara rank owner). :id is the bot account id. Gallery states: private, pending, approved (verified), rejected, delisted, banned.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X GET "https://nookara.cc/chat/bots/YOUR_ID/gallery" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.get_chat_bots_by_id_gallery(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bot_not_found
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
PUT/chat/bots/:id/gallerybearer
Link to this operation · Python: api.put_chat_bots_by_id_gallery(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Bot owner only (or Nookara rank owner). :id is the bot account id. Gallery states: private, pending, approved (verified), rejected, delisted, banned.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
long_description, tags, support_url, links, permissions
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X PUT "https://nookara.cc/chat/bots/YOUR_ID/gallery" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"long_description":"What the bot does","tags":["music"],"permissions":["send_messages"]}'Python method
api.put_chat_bots_by_id_gallery(id="YOUR_ID", json={'long_description': 'What the bot does', 'tags': ['music'], 'permissions': ['send_messages']})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bot_not_found, description_too_long, invalid_links, invalid_permissions, invalid_support_url, invalid_tags
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/bots/:id/gallery/submitbearer
Link to this operation · Python: api.post_chat_bots_by_id_gallery_submit(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Bot owner only (or Nookara rank owner). :id is the bot account id. Gallery states: private, pending, approved (verified), rejected, delisted, banned.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Observed top-level request keys
long_description, tags, support_url, links, permissions
These keys are not all required. Complex values and validation depend on the endpoint. See the feature guide and examples; the permissive schema does not assert unspecified types or defaults.
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/bots/YOUR_ID/gallery/submit" \
-H "Authorization: Bearer $VELORA_TOKEN" \
-H "Content-Type: application/json" \
--data '{"tags":["music","fun"],"support_url":"https://example.com/help"}'Python method
api.post_chat_bots_by_id_gallery_submit(id="YOUR_ID", json={'tags': ['music', 'fun'], 'support_url': 'https://example.com/help'})Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
already_listed, already_pending, avatar_required, bot_not_found, description_required, description_too_long, gallery_banned, invalid_links, invalid_permissions, invalid_support_url, invalid_tags, long_description_required
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
POST/chat/bots/:id/gallery/withdrawbearer
Link to this operation · Python: api.post_chat_bots_by_id_gallery_withdraw(...)
Authentication: User Bearer token
Token scopes: CHAT (2048)
Bot owner only (or Nookara rank owner). :id is the bot account id. Gallery states: private, pending, approved (verified), rejected, delisted, banned.
| Parameter | Location | Meaning |
|---|---|---|
id | Path (required) | Identifier from the corresponding API response. |
Raw request template
curl --fail-with-body -X POST "https://nookara.cc/chat/bots/YOUR_ID/gallery/withdraw" \
-H "Authorization: Bearer $VELORA_TOKEN"Python method
api.post_chat_bots_by_id_gallery_withdraw(id="YOUR_ID")Replace YOUR_* placeholders. Define payload/query_values for your intended operation. Use a Bot-configured Client for bot routes and Client() for webhook execution. Requests shown are templates; submitting a POST/PUT/PATCH/DELETE can change account/server state.
Observed error codes
bot_not_found, gallery_banned
Success bodies vary by endpoint. Scope/authentication, membership, role, privacy, plan/quota and upstream errors may add further outcomes. Generic handlers can also return non-JSON errors. See the feature guide for verified common response formats.
Ember instance REST (API v1) 210 operations
These routes are served by every Ember instance (replace YOUR_INSTANCE with its address, for example chat.ikelene.net). The catalogue is instance-catalogue.json.
Bots
GET/bot/discoverynone
Link to this operation · Python: chat.get_bot_discovery(...) on an Instance
Authentication: None (public or secret path token)
GET/bot/v1/applications/:app/commandsbot
Link to this operation · Python: chat.get_bot_v1_applications_by_app_commands(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
app | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/applications/YOUR_APP/commands" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Slash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
POST/bot/v1/applications/:app/commandsbot
Link to this operation · Python: chat.post_bot_v1_applications_by_app_commands(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
app | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/bot/v1/applications/YOUR_APP/commands" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonSlash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
PUT/bot/v1/applications/:app/commandsbot
Link to this operation · Python: chat.put_bot_v1_applications_by_app_commands(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
app | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/bot/v1/applications/YOUR_APP/commands" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonSlash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
GET/bot/v1/applications/:app/commands/:cidbot
Link to this operation · Python: chat.get_bot_v1_applications_by_app_commands_by_cid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
app | Path (required) |
cid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/applications/YOUR_APP/commands/YOUR_CID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Slash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
PATCH/bot/v1/applications/:app/commands/:cidbot
Link to this operation · Python: chat.patch_bot_v1_applications_by_app_commands_by_cid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
app | Path (required) |
cid | Path (required) |
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/bot/v1/applications/YOUR_APP/commands/YOUR_CID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonSlash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
DELETE/bot/v1/applications/:app/commands/:cidbot
Link to this operation · Python: chat.delete_bot_v1_applications_by_app_commands_by_cid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
app | Path (required) |
cid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/bot/v1/applications/YOUR_APP/commands/YOUR_CID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Slash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
GET/bot/v1/applications/:app/guilds/:gid/commandsbot
Link to this operation · Python: chat.get_bot_v1_applications_by_app_guilds_by_gid_commands(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
app | Path (required) |
gid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/applications/YOUR_APP/guilds/YOUR_GID/commands" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Slash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
POST/bot/v1/applications/:app/guilds/:gid/commandsbot
Link to this operation · Python: chat.post_bot_v1_applications_by_app_guilds_by_gid_commands(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
app | Path (required) |
gid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/bot/v1/applications/YOUR_APP/guilds/YOUR_GID/commands" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonSlash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
PUT/bot/v1/applications/:app/guilds/:gid/commandsbot
Link to this operation · Python: chat.put_bot_v1_applications_by_app_guilds_by_gid_commands(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
app | Path (required) |
gid | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/bot/v1/applications/YOUR_APP/guilds/YOUR_GID/commands" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonSlash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
GET/bot/v1/applications/:app/guilds/:gid/commands/:cidbot
Link to this operation · Python: chat.get_bot_v1_applications_by_app_guilds_by_gid_commands_by_cid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
app | Path (required) |
gid | Path (required) |
cid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/applications/YOUR_APP/guilds/YOUR_GID/commands/YOUR_CID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Slash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
PATCH/bot/v1/applications/:app/guilds/:gid/commands/:cidbot
Link to this operation · Python: chat.patch_bot_v1_applications_by_app_guilds_by_gid_commands_by_cid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
app | Path (required) |
gid | Path (required) |
cid | Path (required) |
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/bot/v1/applications/YOUR_APP/guilds/YOUR_GID/commands/YOUR_CID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonSlash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
DELETE/bot/v1/applications/:app/guilds/:gid/commands/:cidbot
Link to this operation · Python: chat.delete_bot_v1_applications_by_app_guilds_by_gid_commands_by_cid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
app | Path (required) |
gid | Path (required) |
cid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/bot/v1/applications/YOUR_APP/guilds/YOUR_GID/commands/YOUR_CID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Slash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
GET/bot/v1/applications/@mebot
Link to this operation · Python: chat.get_bot_v1_applications_me(...) on an Instance
Authentication: Bot token
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/applications/@me" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Slash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
GET/bot/v1/applications/:app/guilds/:gid/commands/permissionsbot
Link to this operation · Python: chat.get_bot_v1_applications_by_app_guilds_by_gid_commands_permissions(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
app | Path (required) |
gid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/applications/YOUR_APP/guilds/YOUR_GID/commands/permissions" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Slash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
GET/bot/v1/applications/:app/guilds/:gid/commands/:cid/permissionsbot
Link to this operation · Python: chat.get_bot_v1_applications_by_app_guilds_by_gid_commands_by_cid_permissions(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
app | Path (required) |
gid | Path (required) |
cid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/applications/YOUR_APP/guilds/YOUR_GID/commands/YOUR_CID/permissions" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Slash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
PUT/bot/v1/applications/:app/guilds/:gid/commands/:cid/permissionsbot
Link to this operation · Python: chat.put_bot_v1_applications_by_app_guilds_by_gid_commands_by_cid_permissions(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
app | Path (required) |
gid | Path (required) |
cid | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/bot/v1/applications/YOUR_APP/guilds/YOUR_GID/commands/YOUR_CID/permissions" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonSlash commands and interactions follow Discord's application command API; see the slash commands section of the instance protocol (PROTOCOL.md 14.2).
POST/bot/v1/interactions/:id/:token/callbacknone
Link to this operation · Python: chat.post_bot_v1_interactions_by_id_by_token_callback(...) on an Instance
Authentication: None (public or secret path token)
| Parameter | Location |
|---|---|
id | Path (required) |
token | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/bot/v1/interactions/YOUR_ID/YOUR_TOKEN/callback" \
-H "Content-Type: application/json" \
--data @payload.jsonAuthenticated by the interaction or webhook token in the path, no bot token needed. An interaction token works for 15 minutes.
POST/bot/v1/webhooks/:app/:tokennone
Link to this operation · Python: chat.post_bot_v1_webhooks_by_app_by_token(...) on an Instance
Authentication: None (public or secret path token)
| Parameter | Location |
|---|---|
app | Path (required) |
token | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/bot/v1/webhooks/YOUR_APP/YOUR_TOKEN" \
-H "Content-Type: application/json" \
--data @payload.jsonAuthenticated by the interaction or webhook token in the path, no bot token needed. An interaction token works for 15 minutes.
GET/bot/v1/webhooks/:app/:token/messages/:midnone
Link to this operation · Python: chat.get_bot_v1_webhooks_by_app_by_token_messages_by_mid(...) on an Instance
Authentication: None (public or secret path token)
| Parameter | Location |
|---|---|
app | Path (required) |
token | Path (required) |
mid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/webhooks/YOUR_APP/YOUR_TOKEN/messages/YOUR_MID"Authenticated by the interaction or webhook token in the path, no bot token needed. An interaction token works for 15 minutes.
PATCH/bot/v1/webhooks/:app/:token/messages/:midnone
Link to this operation · Python: chat.patch_bot_v1_webhooks_by_app_by_token_messages_by_mid(...) on an Instance
Authentication: None (public or secret path token)
| Parameter | Location |
|---|---|
app | Path (required) |
token | Path (required) |
mid | Path (required) |
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/bot/v1/webhooks/YOUR_APP/YOUR_TOKEN/messages/YOUR_MID" \
-H "Content-Type: application/json" \
--data @payload.jsonAuthenticated by the interaction or webhook token in the path, no bot token needed. An interaction token works for 15 minutes.
DELETE/bot/v1/webhooks/:app/:token/messages/:midnone
Link to this operation · Python: chat.delete_bot_v1_webhooks_by_app_by_token_messages_by_mid(...) on an Instance
Authentication: None (public or secret path token)
| Parameter | Location |
|---|---|
app | Path (required) |
token | Path (required) |
mid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/bot/v1/webhooks/YOUR_APP/YOUR_TOKEN/messages/YOUR_MID"Authenticated by the interaction or webhook token in the path, no bot token needed. An interaction token works for 15 minutes.
GET/api/v1/servers/:sid/commandsbearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid_commands(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/commands" \
-H "Authorization: Bearer $BONFIRE_SESSION"Used by Ember clients: the instance checks membership and who may run each command.
POST/api/v1/servers/:sid/interactionsbearer
Link to this operation · Python: chat.post_api_v1_servers_by_sid_interactions(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/interactions" \
-H "Authorization: Bearer $BONFIRE_SESSION" \
-H "Content-Type: application/json" \
--data @payload.jsonUsed by Ember clients: the instance checks membership and who may run each command.
DELETE/api/v1/servers/:sid/interactions/messages/:idbearer
Link to this operation · Python: chat.delete_api_v1_servers_by_sid_interactions_messages_by_id(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
id | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/interactions/messages/YOUR_ID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Used by Ember clients: the instance checks membership and who may run each command.
GET/api/v1/servers/:sid/commands/managebearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid_commands_manage(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/commands/manage" \
-H "Authorization: Bearer $BONFIRE_SESSION"Used by Ember clients: the instance checks membership and who may run each command.
PUT/api/v1/servers/:sid/commands/permissionsbearer
Link to this operation · Python: chat.put_api_v1_servers_by_sid_commands_permissions(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/commands/permissions" \
-H "Authorization: Bearer $BONFIRE_SESSION" \
-H "Content-Type: application/json" \
--data @payload.jsonUsed by Ember clients: the instance checks membership and who may run each command.
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/discovery"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/bot/v1/gateway/botbot
Link to this operation · Python: chat.get_bot_v1_gateway_bot(...) on an Instance
Authentication: Bot token
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/gateway/bot" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/bot/v1/users/@mebot
Link to this operation · Python: chat.get_bot_v1_users_me(...) on an Instance
Authentication: Bot token
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/users/@me" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/bot/v1/oauth2/applications/@mebot
Link to this operation · Python: chat.get_bot_v1_oauth2_applications_me(...) on an Instance
Authentication: Bot token
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/oauth2/applications/@me" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/bot/v1/users/@me/guildsbot
Link to this operation · Python: chat.get_bot_v1_users_me_guilds(...) on an Instance
Authentication: Bot token
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/users/@me/guilds" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/bot/v1/users/@me/guilds/:gidbot
Link to this operation · Python: chat.delete_bot_v1_users_me_guilds_by_gid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
gid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/bot/v1/users/@me/guilds/YOUR_GID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/bot/v1/users/@me/channelsbot
Link to this operation · Python: chat.post_bot_v1_users_me_channels(...) on an Instance
Authentication: Bot token
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/bot/v1/users/@me/channels" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/bot/v1/users/:uidbot
Link to this operation · Python: chat.get_bot_v1_users_by_uid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
uid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/users/YOUR_UID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/bot/v1/guilds/:gidbot
Link to this operation · Python: chat.get_bot_v1_guilds_by_gid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
gid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/guilds/YOUR_GID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/bot/v1/guilds/:gid/rolesbot
Link to this operation · Python: chat.get_bot_v1_guilds_by_gid_roles(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
gid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/guilds/YOUR_GID/roles" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/bot/v1/guilds/:gid/channelsbot
Link to this operation · Python: chat.get_bot_v1_guilds_by_gid_channels(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
gid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/guilds/YOUR_GID/channels" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/bot/v1/guilds/:gid/members/:uidbot
Link to this operation · Python: chat.get_bot_v1_guilds_by_gid_members_by_uid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
gid | Path (required) |
uid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/guilds/YOUR_GID/members/YOUR_UID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/bot/v1/guilds/:gid/membersbot
Link to this operation · Python: chat.get_bot_v1_guilds_by_gid_members(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
gid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/guilds/YOUR_GID/members" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PUT/bot/v1/guilds/:gid/members/:uid/roles/:ridbot
Link to this operation · Python: chat.put_bot_v1_guilds_by_gid_members_by_uid_roles_by_rid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
gid | Path (required) |
uid | Path (required) |
rid | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/bot/v1/guilds/YOUR_GID/members/YOUR_UID/roles/YOUR_RID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/bot/v1/guilds/:gid/members/:uid/roles/:ridbot
Link to this operation · Python: chat.delete_bot_v1_guilds_by_gid_members_by_uid_roles_by_rid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
gid | Path (required) |
uid | Path (required) |
rid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/bot/v1/guilds/YOUR_GID/members/YOUR_UID/roles/YOUR_RID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/bot/v1/channels/:cidbot
Link to this operation · Python: chat.get_bot_v1_channels_by_cid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/channels/YOUR_CID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/bot/v1/channels/:cid/typingbot
Link to this operation · Python: chat.post_bot_v1_channels_by_cid_typing(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/bot/v1/channels/YOUR_CID/typing" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/bot/v1/channels/:cid/messagesbot
Link to this operation · Python: chat.get_bot_v1_channels_by_cid_messages(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/channels/YOUR_CID/messages" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/bot/v1/channels/:cid/messages/:midbot
Link to this operation · Python: chat.get_bot_v1_channels_by_cid_messages_by_mid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
cid | Path (required) |
mid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/channels/YOUR_CID/messages/YOUR_MID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/bot/v1/channels/:cid/messagesbot
Link to this operation · Python: chat.post_bot_v1_channels_by_cid_messages(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/bot/v1/channels/YOUR_CID/messages" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PATCH/bot/v1/channels/:cid/messages/:midbot
Link to this operation · Python: chat.patch_bot_v1_channels_by_cid_messages_by_mid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
cid | Path (required) |
mid | Path (required) |
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/bot/v1/channels/YOUR_CID/messages/YOUR_MID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/bot/v1/channels/:cid/messages/:midbot
Link to this operation · Python: chat.delete_bot_v1_channels_by_cid_messages_by_mid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
cid | Path (required) |
mid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/bot/v1/channels/YOUR_CID/messages/YOUR_MID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PUT/bot/v1/channels/:cid/messages/:mid/reactions/:emoji/@mebot
Link to this operation · Python: chat.put_bot_v1_channels_by_cid_messages_by_mid_reactions_by_emoji_me(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
cid | Path (required) |
mid | Path (required) |
emoji | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/bot/v1/channels/YOUR_CID/messages/YOUR_MID/reactions/YOUR_EMOJI/@me" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/bot/v1/channels/:cid/messages/:mid/reactions/:emoji/@mebot
Link to this operation · Python: chat.delete_bot_v1_channels_by_cid_messages_by_mid_reactions_by_emoji_me(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
cid | Path (required) |
mid | Path (required) |
emoji | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/bot/v1/channels/YOUR_CID/messages/YOUR_MID/reactions/YOUR_EMOJI/@me" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PUT/bot/v1/channels/:cid/pins/:midbot
Link to this operation · Python: chat.put_bot_v1_channels_by_cid_pins_by_mid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
cid | Path (required) |
mid | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/bot/v1/channels/YOUR_CID/pins/YOUR_MID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/bot/v1/channels/:cid/pins/:midbot
Link to this operation · Python: chat.delete_bot_v1_channels_by_cid_pins_by_mid(...) on an Instance
Authentication: Bot token
| Parameter | Location |
|---|---|
cid | Path (required) |
mid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/bot/v1/channels/YOUR_CID/pins/YOUR_MID" \
-H "Authorization: Bot $BONFIRE_BOT_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/bot/v1/gatewaynone
Link to this operation · Python: chat.get_bot_v1_gateway(...) on an Instance
Authentication: None (public or secret path token)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/bot/v1/gateway"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/botsbearer
Link to this operation · Python: chat.get_api_v1_bots(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/bots" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/botsbearer
Link to this operation · Python: chat.post_api_v1_bots(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/bots" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/bots/gallery/addbearer
Link to this operation · Python: chat.post_api_v1_bots_gallery_add(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/bots/gallery/add" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/bots/by-name/:usernamebearer
Link to this operation · Python: chat.get_api_v1_bots_by_name_by_username(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
username | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/bots/by-name/YOUR_USERNAME" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/bots/by-name/:username/addbearer
Link to this operation · Python: chat.post_api_v1_bots_by_name_by_username_add(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
username | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/bots/by-name/YOUR_USERNAME/add" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PATCH/api/v1/bots/:idbearer
Link to this operation · Python: chat.patch_api_v1_bots_by_id(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
id | Path (required) |
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/api/v1/bots/YOUR_ID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/bots/:id/avatarbearer
Link to this operation · Python: chat.post_api_v1_bots_by_id_avatar(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
id | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/bots/YOUR_ID/avatar" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/bots/:id/tokenbearer
Link to this operation · Python: chat.post_api_v1_bots_by_id_token(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
id | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/bots/YOUR_ID/token" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/bots/:idbearer
Link to this operation · Python: chat.delete_api_v1_bots_by_id(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
id | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/bots/YOUR_ID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Invites and join requests
GET/api/v1/invite/:codenone
Link to this operation · Python: chat.get_api_v1_invite_by_code(...) on an Instance
Authentication: None (public or secret path token)
| Parameter | Location |
|---|---|
code | Path (required) |
Moderation and server settings
GET/api/v1/servers/:sid/settingsbearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid_settings(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/settings" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PATCH/api/v1/servers/:sid/settingsbearer
Link to this operation · Python: chat.patch_api_v1_servers_by_sid_settings(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/settings" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/servers/:sid/reportsbearer
Link to this operation · Python: chat.post_api_v1_servers_by_sid_reports(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/reports" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/servers/:sid/reportsbearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid_reports(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/reports" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PATCH/api/v1/servers/:sid/reports/:idbearer
Link to this operation · Python: chat.patch_api_v1_servers_by_sid_reports_by_id(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
id | Path (required) |
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/reports/YOUR_ID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/servers/:sid/timeoutsbearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid_timeouts(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/timeouts" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/servers/:sid/timeoutsbearer
Link to this operation · Python: chat.post_api_v1_servers_by_sid_timeouts(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/timeouts" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/servers/:sid/timeouts/:uidbearer
Link to this operation · Python: chat.delete_api_v1_servers_by_sid_timeouts_by_uid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
uid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/timeouts/YOUR_UID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/servers/:sid/auditbearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid_audit(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/audit" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/servers/:sid/dashboardbearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid_dashboard(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/dashboard" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/invite/YOUR_CODE"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/join/:codebearer
Link to this operation · Python: chat.post_api_v1_join_by_code(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
code | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/join/YOUR_CODE" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/servers/:sid/requestsbearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid_requests(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/requests" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/servers/:sid/requests/:uid/acceptbearer
Link to this operation · Python: chat.post_api_v1_servers_by_sid_requests_by_uid_accept(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
uid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/requests/YOUR_UID/accept" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/servers/:sid/requests/:uid/denybearer
Link to this operation · Python: chat.post_api_v1_servers_by_sid_requests_by_uid_deny(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
uid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/requests/YOUR_UID/deny" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/servers/:sid/invitesbearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid_invites(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/invites" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/servers/:sid/invitesbearer
Link to this operation · Python: chat.post_api_v1_servers_by_sid_invites(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/invites" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/invites/:codebearer
Link to this operation · Python: chat.delete_api_v1_invites_by_code(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
code | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/invites/YOUR_CODE" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Members and roles
GET/api/v1/identitiesbearer
Link to this operation · Python: chat.get_api_v1_identities(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/identities" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/servers/:sid/membersbearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid_members(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/members" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/servers/:sid/members/:uidbearer
Link to this operation · Python: chat.delete_api_v1_servers_by_sid_members_by_uid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
uid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/members/YOUR_UID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/servers/:sid/bansbearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid_bans(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/bans" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/servers/:sid/bans/:uidbearer
Link to this operation · Python: chat.delete_api_v1_servers_by_sid_bans_by_uid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
uid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/bans/YOUR_UID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/servers/:sid/rolesbearer
Link to this operation · Python: chat.post_api_v1_servers_by_sid_roles(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/roles" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PUT/api/v1/servers/:sid/roles/orderbearer
Link to this operation · Python: chat.put_api_v1_servers_by_sid_roles_order(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/roles/order" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PATCH/api/v1/servers/:sid/roles/:ridbearer
Link to this operation · Python: chat.patch_api_v1_servers_by_sid_roles_by_rid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
rid | Path (required) |
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/roles/YOUR_RID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/servers/:sid/roles/:ridbearer
Link to this operation · Python: chat.delete_api_v1_servers_by_sid_roles_by_rid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
rid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/roles/YOUR_RID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PUT/api/v1/servers/:sid/members/:uid/roles/:ridbearer
Link to this operation · Python: chat.put_api_v1_servers_by_sid_members_by_uid_roles_by_rid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
uid | Path (required) |
rid | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/members/YOUR_UID/roles/YOUR_RID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/servers/:sid/members/:uid/roles/:ridbearer
Link to this operation · Python: chat.delete_api_v1_servers_by_sid_members_by_uid_roles_by_rid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
uid | Path (required) |
rid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/members/YOUR_UID/roles/YOUR_RID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/servers/:sid/roles/:rid/iconbearer
Link to this operation · Python: chat.post_api_v1_servers_by_sid_roles_by_rid_icon(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
rid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/roles/YOUR_RID/icon" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/servers/:sid/roles/:rid/iconbearer
Link to this operation · Python: chat.delete_api_v1_servers_by_sid_roles_by_rid_icon(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
rid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/roles/YOUR_RID/icon" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Personal settings and notifications
GET/api/v1/settingsbearer
Link to this operation · Python: chat.get_api_v1_settings(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/settings" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PATCH/api/v1/settingsbearer
Link to this operation · Python: chat.patch_api_v1_settings(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/api/v1/settings" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/notifybearer
Link to this operation · Python: chat.get_api_v1_notify(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/notify" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PUT/api/v1/notify/:targetbearer
Link to this operation · Python: chat.put_api_v1_notify_by_target(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
target | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/api/v1/notify/YOUR_TARGET" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Community
GET/api/v1/serversbearer
Link to this operation · Python: chat.get_api_v1_servers(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/discoverbearer
Link to this operation · Python: chat.get_api_v1_discover(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/discover" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/serversbearer
Link to this operation · Python: chat.post_api_v1_servers(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/servers/:sidbearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PATCH/api/v1/servers/:sidbearer
Link to this operation · Python: chat.patch_api_v1_servers_by_sid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/servers/:sidbearer
Link to this operation · Python: chat.delete_api_v1_servers_by_sid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/servers/:sid/joinbearer
Link to this operation · Python: chat.post_api_v1_servers_by_sid_join(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/join" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/servers/:sid/leavebearer
Link to this operation · Python: chat.post_api_v1_servers_by_sid_leave(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/leave" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/servers/:sid/iconbearer
Link to this operation · Python: chat.post_api_v1_servers_by_sid_icon(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/icon" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/servers/:sid/bannerbearer
Link to this operation · Python: chat.post_api_v1_servers_by_sid_banner(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/banner" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/servers/:sid/iconbearer
Link to this operation · Python: chat.delete_api_v1_servers_by_sid_icon(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/icon" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/servers/:sid/bannerbearer
Link to this operation · Python: chat.delete_api_v1_servers_by_sid_banner(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/banner" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Channels
PUT/api/v1/servers/:sid/layoutbearer
Link to this operation · Python: chat.put_api_v1_servers_by_sid_layout(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/layout" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/servers/:sid/channelsbearer
Link to this operation · Python: chat.post_api_v1_servers_by_sid_channels(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/channels" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PATCH/api/v1/channels/:cidbearer
Link to this operation · Python: chat.patch_api_v1_channels_by_cid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/channels/:cidbearer
Link to this operation · Python: chat.delete_api_v1_channels_by_cid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PUT/api/v1/channels/:cid/permsbearer
Link to this operation · Python: chat.put_api_v1_channels_by_cid_perms(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/perms" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/channels/:cid/iconbearer
Link to this operation · Python: chat.post_api_v1_channels_by_cid_icon(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/icon" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/channels/:cid/shopbearer
Link to this operation · Python: chat.get_api_v1_channels_by_cid_shop(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/shop" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/channels/:cid/shop/:ridbearer
Link to this operation · Python: chat.post_api_v1_channels_by_cid_shop_by_rid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
rid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/shop/YOUR_RID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/channels/:cid/shop/:rid/statusbearer
Link to this operation · Python: chat.get_api_v1_channels_by_cid_shop_by_rid_status(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
rid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/shop/YOUR_RID/status" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/channels/:cid/shop/:ridbearer
Link to this operation · Python: chat.delete_api_v1_channels_by_cid_shop_by_rid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
rid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/shop/YOUR_RID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/channels/:cid/starboardbearer
Link to this operation · Python: chat.get_api_v1_channels_by_cid_starboard(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/starboard" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Emoji, sounds, previews and YouTube
GET/api/v1/emojisbearer
Link to this operation · Python: chat.get_api_v1_emojis(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/emojis" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/servers/:sid/emojisbearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid_emojis(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/emojis" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/servers/:sid/emojisbearer
Link to this operation · Python: chat.post_api_v1_servers_by_sid_emojis(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/emojis" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PATCH/api/v1/servers/:sid/emojis/:eidbearer
Link to this operation · Python: chat.patch_api_v1_servers_by_sid_emojis_by_eid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
eid | Path (required) |
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/emojis/YOUR_EID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/servers/:sid/emojis/:eidbearer
Link to this operation · Python: chat.delete_api_v1_servers_by_sid_emojis_by_eid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
eid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/emojis/YOUR_EID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/emojis/:eid/infobearer
Link to this operation · Python: chat.get_api_v1_emojis_by_eid_info(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
eid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/emojis/YOUR_EID/info" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/soundsbearer
Link to this operation · Python: chat.get_api_v1_sounds(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/sounds" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/servers/:sid/soundsbearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid_sounds(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/sounds" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/servers/:sid/soundsbearer
Link to this operation · Python: chat.post_api_v1_servers_by_sid_sounds(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/sounds" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PATCH/api/v1/servers/:sid/sounds/:idbearer
Link to this operation · Python: chat.patch_api_v1_servers_by_sid_sounds_by_id(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
id | Path (required) |
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/sounds/YOUR_ID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/servers/:sid/sounds/:idbearer
Link to this operation · Python: chat.delete_api_v1_servers_by_sid_sounds_by_id(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
id | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/sounds/YOUR_ID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/unfurlbearer
Link to this operation · Python: chat.get_api_v1_unfurl(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/unfurl" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/yt/stream/:idnone
Link to this operation · Python: chat.get_api_v1_yt_stream_by_id(...) on an Instance
Authentication: None (public or secret path token)
| Parameter | Location |
|---|---|
id | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/yt/stream/YOUR_ID"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/yt/:id/preparebearer
Link to this operation · Python: chat.post_api_v1_yt_by_id_prepare(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
id | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/yt/YOUR_ID/prepare" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/yt/:id/statusbearer
Link to this operation · Python: chat.get_api_v1_yt_by_id_status(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
id | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/yt/YOUR_ID/status" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/yt/:id/savebearer
Link to this operation · Python: chat.post_api_v1_yt_by_id_save(...) on an Instance
Authentication: Instance session (Bearer)
Instance scope: media (the person may have declined it; the instance answers insufficient_scope)
| Parameter | Location |
|---|---|
id | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/yt/YOUR_ID/save" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Webhooks
GET/api/v1/channels/:cid/webhooksbearer
Link to this operation · Python: chat.get_api_v1_channels_by_cid_webhooks(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/webhooks" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/channels/:cid/webhooksbearer
Link to this operation · Python: chat.post_api_v1_channels_by_cid_webhooks(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/webhooks" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PATCH/api/v1/hooks/:widbearer
Link to this operation · Python: chat.patch_api_v1_hooks_by_wid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
wid | Path (required) |
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/api/v1/hooks/YOUR_WID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/hooks/:widbearer
Link to this operation · Python: chat.delete_api_v1_hooks_by_wid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
wid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/hooks/YOUR_WID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/hooks/:wid/avatarbearer
Link to this operation · Python: chat.post_api_v1_hooks_by_wid_avatar(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
wid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/hooks/YOUR_WID/avatar" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/webhooks/:wid/:tokennone
Link to this operation · Python: chat.get_api_v1_webhooks_by_wid_by_token(...) on an Instance
Authentication: None (public or secret path token)
| Parameter | Location |
|---|---|
wid | Path (required) |
token | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/webhooks/YOUR_WID/YOUR_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/webhooks/:wid/:tokennone
Link to this operation · Python: chat.post_api_v1_webhooks_by_wid_by_token(...) on an Instance
Authentication: None (public or secret path token)
| Parameter | Location |
|---|---|
wid | Path (required) |
token | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/webhooks/YOUR_WID/YOUR_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/webhooks/:wid/:tokennone
Link to this operation · Python: chat.delete_api_v1_webhooks_by_wid_by_token(...) on an Instance
Authentication: None (public or secret path token)
| Parameter | Location |
|---|---|
wid | Path (required) |
token | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/webhooks/YOUR_WID/YOUR_TOKEN"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Discovery and build info
GET/.well-known/bonfirenone
Link to this operation · Python: chat.get_well_known_bonfire(...) on an Instance
Authentication: None (public or secret path token)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/.well-known/bonfire"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/healthnone
Link to this operation · Python: chat.get_health(...) on an Instance
Authentication: None (public or secret path token)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/health"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/instance/infonone
Link to this operation · Python: chat.get_api_v1_instance_info(...) on an Instance
Authentication: None (public or secret path token)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/instance/info"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Sign-in and session
POST/api/v1/auth/veloranone
Link to this operation · Python: chat.post_api_v1_auth_velora(...) on an Instance
Authentication: None (public or secret path token)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/auth/velora"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/auth/registernone
Link to this operation · Python: chat.post_api_v1_auth_register(...) on an Instance
Authentication: None (public or secret path token)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/auth/register"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/auth/loginnone
Link to this operation · Python: chat.post_api_v1_auth_login(...) on an Instance
Authentication: None (public or secret path token)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/auth/login"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/auth/logoutbearer
Link to this operation · Python: chat.post_api_v1_auth_logout(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/auth/logout" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/mebearer
Link to this operation · Python: chat.get_api_v1_me(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/me" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Instance administration
POST/api/v1/instance/claimbearer
Link to this operation · Python: chat.post_api_v1_instance_claim(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/instance/claim" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/instance/settingsbearer
Link to this operation · Python: chat.get_api_v1_instance_settings(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/instance/settings" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PATCH/api/v1/instance/settingsbearer
Link to this operation · Python: chat.patch_api_v1_instance_settings(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/api/v1/instance/settings" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/instance/velora/registerbearer
Link to this operation · Python: chat.post_api_v1_instance_velora_register(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/instance/velora/register" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/instance/owner-attestationbearer
Link to this operation · Python: chat.get_api_v1_instance_owner_attestation(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/instance/owner-attestation" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/instance/restartbearer
Link to this operation · Python: chat.post_api_v1_instance_restart(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/instance/restart" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/instance/updatebearer
Link to this operation · Python: chat.get_api_v1_instance_update(...) on an Instance
Authentication: Instance session (Bearer)
Admins. Whether this server can update itself and to what: {supported, reason?, current, latest?, running?, outdated?, update?, reachable?, error?}. supported is false (reason not_configured or managed) unless the server was started with BONFIRE_UPDATE_URL and BONFIRE_UPDATE_SECRET; update is the host's run state (idle, running, done, failed).
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/instance/update" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/instance/updatebearer
Link to this operation · Python: chat.post_api_v1_instance_update(...) on an Instance
Authentication: Instance session (Bearer)
Admins. Asks the host agent (bonfire-hostd) to rebuild and recreate this server's container. Answers {ok: true, update} before the server goes away; poll GET until current.build_id changes. Errors: 501 update_not_supported / update_managed, 409 update_in_progress, 502 update_service_unreachable / update_service_rejected / update_service_error.
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/instance/update" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/instance/adminsbearer
Link to this operation · Python: chat.get_api_v1_instance_admins(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/instance/admins" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PUT/api/v1/instance/admins/:uidbearer
Link to this operation · Python: chat.put_api_v1_instance_admins_by_uid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
uid | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/api/v1/instance/admins/YOUR_UID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/instance/admins/:uidbearer
Link to this operation · Python: chat.delete_api_v1_instance_admins_by_uid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
uid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/instance/admins/YOUR_UID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/instance/local-adminbearer
Link to this operation · Python: chat.post_api_v1_instance_local_admin(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/instance/local-admin" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Backups, export and import
POST/api/v1/import/velorabearer
Link to this operation · Python: chat.post_api_v1_import_velora(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/import/velora" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/servers/:sid/exportbearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid_export(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/export" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/importbearer
Link to this operation · Python: chat.post_api_v1_import(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/import" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/instance/backupsbearer
Link to this operation · Python: chat.get_api_v1_instance_backups(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/instance/backups" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/instance/backupsbearer
Link to this operation · Python: chat.post_api_v1_instance_backups(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/instance/backups" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/instance/backups/:id/downloadbearer
Link to this operation · Python: chat.get_api_v1_instance_backups_by_id_download(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
id | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/instance/backups/YOUR_ID/download" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/instance/backups/:idbearer
Link to this operation · Python: chat.delete_api_v1_instance_backups_by_id(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
id | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/instance/backups/YOUR_ID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/instance/backups/:id/restorebearer
Link to this operation · Python: chat.post_api_v1_instance_backups_by_id_restore(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
id | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/instance/backups/YOUR_ID/restore" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/instance/restorebearer
Link to this operation · Python: chat.post_api_v1_instance_restore(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/instance/restore" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Messages
GET/api/v1/channels/:cid/messagesbearer
Link to this operation · Python: chat.get_api_v1_channels_by_cid_messages(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/messages" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/channels/:cid/messagesbearer
Link to this operation · Python: chat.post_api_v1_channels_by_cid_messages(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/messages" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/channels/:cid/readbearer
Link to this operation · Python: chat.post_api_v1_channels_by_cid_read(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/read" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/channels/:cid/searchbearer
Link to this operation · Python: chat.get_api_v1_channels_by_cid_search(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/search" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/servers/:sid/searchbearer
Link to this operation · Python: chat.get_api_v1_servers_by_sid_search(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/servers/YOUR_SID/search" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/channels/:cid/pinsbearer
Link to this operation · Python: chat.get_api_v1_channels_by_cid_pins(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/pins" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PATCH/api/v1/messages/:idbearer
Link to this operation · Python: chat.patch_api_v1_messages_by_id(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
id | Path (required) |
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/api/v1/messages/YOUR_ID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/messages/:idbearer
Link to this operation · Python: chat.delete_api_v1_messages_by_id(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
id | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/messages/YOUR_ID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PUT/api/v1/messages/:id/reactions/:emojibearer
Link to this operation · Python: chat.put_api_v1_messages_by_id_reactions_by_emoji(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
id | Path (required) |
emoji | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/api/v1/messages/YOUR_ID/reactions/YOUR_EMOJI" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/messages/:id/reactions/:emojibearer
Link to this operation · Python: chat.delete_api_v1_messages_by_id_reactions_by_emoji(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
id | Path (required) |
emoji | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/messages/YOUR_ID/reactions/YOUR_EMOJI" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PUT/api/v1/messages/:id/pinbearer
Link to this operation · Python: chat.put_api_v1_messages_by_id_pin(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
id | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/api/v1/messages/YOUR_ID/pin" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/messages/:id/pinbearer
Link to this operation · Python: chat.delete_api_v1_messages_by_id_pin(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
id | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/messages/YOUR_ID/pin" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Uploads and media import
POST/api/v1/media/uploadbearer
Link to this operation · Python: chat.post_api_v1_media_upload(...) on an Instance
Authentication: Instance session (Bearer)
Instance scope: media (the person may have declined it; the instance answers insufficient_scope)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/media/upload" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/media/importbearer
Link to this operation · Python: chat.post_api_v1_media_import(...) on an Instance
Authentication: Instance session (Bearer)
Instance scope: media (the person may have declined it; the instance answers insufficient_scope)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/media/import" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Bridges
GET/api/v1/bridge/settingsbearer
Link to this operation · Python: chat.get_api_v1_bridge_settings(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/bridge/settings" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PATCH/api/v1/bridge/settingsbearer
Link to this operation · Python: chat.patch_api_v1_bridge_settings(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/api/v1/bridge/settings" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/bridge/platformsbearer
Link to this operation · Python: chat.get_api_v1_bridge_platforms(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/bridge/platforms" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/bridge/:platform/guildsbearer
Link to this operation · Python: chat.get_api_v1_bridge_by_platform_guilds(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
platform | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/bridge/YOUR_PLATFORM/guilds" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/bridge/servers/:sidbearer
Link to this operation · Python: chat.get_api_v1_bridge_servers_by_sid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/bridge/servers/YOUR_SID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PUT/api/v1/bridge/servers/:sidbearer
Link to this operation · Python: chat.put_api_v1_bridge_servers_by_sid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/api/v1/bridge/servers/YOUR_SID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PATCH/api/v1/bridge/servers/:sidbearer
Link to this operation · Python: chat.patch_api_v1_bridge_servers_by_sid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X PATCH "https://YOUR_INSTANCE/api/v1/bridge/servers/YOUR_SID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/bridge/servers/:sidbearer
Link to this operation · Python: chat.delete_api_v1_bridge_servers_by_sid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/bridge/servers/YOUR_SID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
PUT/api/v1/bridge/servers/:sid/channels/:cidbearer
Link to this operation · Python: chat.put_api_v1_bridge_servers_by_sid_channels_by_cid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
cid | Path (required) |
Raw request template
curl --fail-with-body -X PUT "https://YOUR_INSTANCE/api/v1/bridge/servers/YOUR_SID/channels/YOUR_CID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/channels/:cid/cloudlinkbearer
Link to this operation · Python: chat.get_api_v1_channels_by_cid_cloudlink(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/cloudlink" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/channels/:cid/cloudlink/reconnectbearer
Link to this operation · Python: chat.post_api_v1_channels_by_cid_cloudlink_reconnect(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/channels/YOUR_CID/cloudlink/reconnect" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Ember Link (Minecraft)
GET/api/v1/game/downloadsnone
Link to this operation · Python: chat.get_api_v1_game_downloads(...) on an Instance
Authentication: None (public or secret path token)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/game/downloads"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/game/servers/:sid/instancesbearer
Link to this operation · Python: chat.get_api_v1_game_servers_by_sid_instances(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/game/servers/YOUR_SID/instances" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
DELETE/api/v1/game/servers/:sid/instances/:iidbearer
Link to this operation · Python: chat.delete_api_v1_game_servers_by_sid_instances_by_iid(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
iid | Path (required) |
Raw request template
curl --fail-with-body -X DELETE "https://YOUR_INSTANCE/api/v1/game/servers/YOUR_SID/instances/YOUR_IID" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/game/unclaimedbearer
Link to this operation · Python: chat.get_api_v1_game_unclaimed(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/game/unclaimed" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/game/connectedbearer
Link to this operation · Python: chat.get_api_v1_game_connected(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/game/connected" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/game/connected/:iid/linkbearer
Link to this operation · Python: chat.post_api_v1_game_connected_by_iid_link(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
iid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/game/connected/YOUR_IID/link" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/game/claimsbearer
Link to this operation · Python: chat.post_api_v1_game_claims(...) on an Instance
Authentication: Instance session (Bearer)
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/game/claims" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/game/claims/:codebearer
Link to this operation · Python: chat.get_api_v1_game_claims_by_code(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
code | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/game/claims/YOUR_CODE" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/game/channels/:cid/statusbearer
Link to this operation · Python: chat.get_api_v1_game_channels_by_cid_status(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/game/channels/YOUR_CID/status" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/game/channels/:cid/consolebearer
Link to this operation · Python: chat.get_api_v1_game_channels_by_cid_console(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/game/channels/YOUR_CID/console" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
POST/api/v1/game/channels/:cid/consolebearer
Link to this operation · Python: chat.post_api_v1_game_channels_by_cid_console(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
cid | Path (required) |
Raw request template
curl --fail-with-body -X POST "https://YOUR_INSTANCE/api/v1/game/channels/YOUR_CID/console" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
GET/api/v1/game/servers/:sid/auditbearer
Link to this operation · Python: chat.get_api_v1_game_servers_by_sid_audit(...) on an Instance
Authentication: Instance session (Bearer)
| Parameter | Location |
|---|---|
sid | Path (required) |
Raw request template
curl --fail-with-body -X GET "https://YOUR_INSTANCE/api/v1/game/servers/YOUR_SID/audit" \
-H "Authorization: Bearer $BONFIRE_SESSION"Request and response shapes follow the instance protocol (bonfire-server/PROTOCOL.md) and match the old Nookara chat routes of the same name. Membership, roles, plan limits and read-only mode are checked by the instance.
Websocket frame inventory
Fields below are observed in the source, not an exhaustive schema or direction guarantee for every compatibility path. See the realtime and voice guides for state/order requirements. Legacy frames are included for compatibility; new chat clients should use scoped token auth and server channel messaging.
Client commands
| type | Fields | Direct reply/event types observed |
|---|---|---|
auth_token | capabilities, fingerprint, mobile, notification_only, passive, token | auth_error, auth_success, bonfire_notification_config, im_unread, user_joined |
auth | pass, user | auth_failed, auth_success, user_joined |
bonfire_visibility | active | |
setStatus | ||
set_status | persist, status | status_changed |
getOnlinePlayers | onlinePlayers | |
globalMessage | color, message | globalMessage |
imageMessage | url | imageMessage |
getGlobalHistory | globalHistory | |
typing | typing | |
stopTyping | stopTyping | |
joinRoom | room | error, roomHistory |
roomMessage | color, message, reply_to, room | error |
call_user | callId, to | call_error, call_incoming |
call_accept | callId, to | call_accepted |
call_signal | callId, signal, to | call_signal |
call_end | callId, to | call_ended |
mic_state | muted, to | mic_state |
set_activity | activity | friend_activity |
voice_connect | ||
voice | msg | |
user_update | changed, previous_username, type, user, v | |
voice_sound | room, sound | chat_error, voice_sound, voice_sound_failed |
voice_disconnect | ||
voice_call | room, to | voice_call_failed |
voice_call_answer | accept, callId | |
voice_call_cancel | callId | |
hf_hello | caps, version | |
im_send | message, nonce, reply_to, status_reply, to | im_ack, im_error |
dm_typing | to, typing | dm_typing |
chat_active | ||
ping | pong | |
chat_hello | chat_ready | |
chat_send | attachments, channel, message, nonce, reply_to, server | chat_ack |
chat_typing | channel, server, typing | chat_typing |
chat_read | channel, id | |
chat_presence | username | presence_update |
set_rich_presence | activity | |
clear_rich_presence | ||
set_custom_status | text | |
chat_rtc_join | nonce, room | chat_rtc_joined |
chat_rtc_publish | nonce, room, sessionDescription, tracks | chat_rtc_published |
chat_rtc_connected | room | |
chat_rtc_subscribe | nonce, room, sources | chat_rtc_offer, chat_rtc_ready |
chat_rtc_answer | nonce, session, sessionDescription | chat_rtc_ready |
chat_rtc_close | nonce, room, tracks | chat_rtc_ready |
chat_rtc_ice | nonce, room | chat_rtc_ready |
chat_rtc_leave | ||
arcade_join | version | arcade_denied, arcade_welcome |
arcade_where | machine | |
arcade_leave |
Server event shapes
| type | Observed fields |
|---|---|
account_updated | fields |
arcade_alert | text |
arcade_announce | news |
arcade_bundles_changed | |
arcade_converted | machine, plays |
arcade_denied | message, reason |
arcade_kicked | message, reason |
arcade_notice | notice |
arcade_purchase | id, plays, status |
arcade_settings | settings |
arcade_wallet | wallet |
arcade_welcome | firstVisit, panel, settings, simVersion, staff, username, wallet |
auth_error | error |
auth_failed | error |
auth_success | disabled_scopes, passive_supported, scopes, tos_required, user |
balance_changed | delta |
call_accepted | by, callId |
call_ended | by, callId |
call_error | error |
call_incoming | callId, from |
call_signal | callId, from, signal |
chat_ack | message, nonce |
chat_call_state | answered_at, ended, room, started_at, users, with |
chat_channels_update | categories, channels, server |
chat_emojis_update | emojis, server |
chat_ephemeral | amount, body, channel, kind, server |
chat_error | disabled_by_admin, error, nonce, request, required_scope |
chat_identity_update | previous_username, user |
chat_member_update | change, member, member_count, server, user_id, username |
chat_members_stale | server |
chat_mention | body, channel, cid, from, pfp, server, sid |
chat_message | message |
chat_message_delete | channel, id, server |
chat_message_update | message |
chat_perms_changed | server |
chat_pins_update | channel, server |
chat_reactions | add, channel, emoji, id, reactions, server, user_id, username |
chat_ready | you |
chat_roles_update | roles, server |
chat_rtc_joined | iceServers, nonce, people, room |
chat_rtc_offer | nonce, room, session, sessionDescription, tracks |
chat_rtc_published | nonce, room, sessionDescription, tracks |
chat_rtc_ready | iceServers, nonce, room, session |
chat_rtc_room | people, room |
chat_server_removed | reason, server |
chat_server_update | server |
chat_typing | channel, server, typing, username |
chat_voice_state | channel, server, users |
dm_typing | from, typing |
error | disabled_by_admin, error, required_scope, room |
friend_activity | activity, started, username |
friend_request | from |
friend_request_accepted | by |
game_console | channel, instance, lines, server |
game_linked | claim, hint, instance, server |
game_status | channel, instance, last_seen, online, server, status |
game_unlinked | instance, server |
globalHistory | messages |
globalMessage | color, message, rank, timestamp, user |
group_removed | room |
group_update | group |
im_ack | delivered, message, nonce |
im_edited | body, edited_at, id, with |
im_error | error, nonce |
im_received | message |
im_sent | message |
im_unread | count |
kicked | reason, room |
mail_received | mail |
mic_state | from, muted |
notification | body, title |
notification_new | notification, unread |
notifications_updated | deleted, read, unread, unread_ids |
onlinePlayers | players |
pong | |
presence_update | presence, request, username |
restrictions | disabled_scopes, scopes |
roomHistory | messages, room |
roomMessage | color, id, message, rank, room, timestamp, user |
status_changed | status, username |
user_joined | rank, username |
user_left | username |
voice_call_accepted | callId, from, room |
voice_call_answered | accepted, by, callId |
voice_call_ended | callId, reason |
voice_call_failed | reason, to |
voice_call_incoming | callId, from, room |
voice_call_ringing | callId, room, to |
voice_closed | reason |
voice_open | id, room |
voice_sound | by, sound |
voice_sound_failed | reason |
Python transport dependency: websockets documentation. Packaging: Python Packaging User Guide.
Direct messages, groups and friends
Direct messages are Nookara's Instant Messages and are separate from Ember servers; they are the same whichever Ember server you are looking at. They use
/im;/mailis a compatibility alias with the same router (the old vMail name). Read requires Read Instant Messages (64), send/edit/delete requires Send Instant Messages (128); a person may decline either. A recipient's friends-only privacy still applies.DM history is chronological; limit defaults to 50 and clamps to 200. The send response includes
messageanddelivered; false means saved but the recipient was not online for immediate delivery. Websocketim_sendsupportsreply_to; the current HTTP send route does not forward that field. Both routes acceptstatus_reply.Replying to a status. Ember can answer someone's custom status. Call
GET /im/status-reply/:usernamefirst: it returns{"can":true,"text":"..."}, or{"can":false,"reason":"own|bot|no_status|friends_only|not_found"}. Then send the DM withstatus_reply:{"text": <that status>}(RESTPOST /im/sendor websocketim_send). The server checks the text against the person's status right now and that you can see it (offline, invisible and friends-only profiles hide it) and answersstatus_changed(HTTP 409) if it does not match;cannot_reply_own_statusanddm_privacy(HTTP 403, see DM privacy) also apply. The saved message carriesstatus_reply: {"text"}(ornull) in DM history,im_received/im_sentevents and conversation lists. Push and notification text for such a message is "NAME replied to your status: MESSAGE".Blocking users
Blocking is mutual in effect: if A blocks B, neither can see the other's profile, message, call, pay, subscribe to or friend the other, and each looks offline to the other. Only the blocker can unblock. Nookara staff (owner, admin, mod) cannot be blocked. Blocks never remove anyone from a shared Ember server, and channel messages keep flowing there, but a blocked pair get no mention, reply or push notifications from each other.
Blocking removes any friendship and pending friend requests between the two accounts and ends any DM call. Errors:
cannot_block_self(400),cannot_block_staff(403),user_not_found(404). A websocketblocks_changedevent ({"blocked","on"}) tells your other sessions that your block list changed.GET /chat/users/:username(the profile card behind Ember) includesblocked_by_me, true when you have blocked that account; it is how a client picks Block or Unblock. Python (0.5.6):velora.get_blocks(),velora.block_user("alice"),velora.unblock_user("alice"). PenguinMod extension (1.7.1): block user, unblock user, blocked users (JSON) and is [user] blocked? in the Blocking section.DM privacy: who can message you
everyoneis the default.friendslets only your friends message or call you.serversalso lets in people who share at least one Ember server with you. It is the same value as thedm_privacychat setting (/chat/settings). Nookara staff (owner, admin, mod), bot accounts and system messages always get through. It applies to starting a DM, sending a DM message (POST /im/send, websocketim_send) and DM calls (POST /chat/calls). A sender it stops getsdm_privacy(HTTP 403) with the message "Failed to send this message due to the users privacy settings"; the websocket answersim_errorwith the sameerrorandmessage. This replaces the olddms_friends_onlyerror. An invalid value getsinvalid_dm_privacy(400). Python (0.5.6):velora.get_dm_privacy(),velora.set_dm_privacy("friends"). PenguinMod extension (1.9.3): set DM privacy to and DM privacy.What a blocked pair see.
GET /account/lookup/:username,/hyperfocus/profile/:username,/badges/user/:username,/arcade/profile/:usernameand the user searches answer exactly like a username that does not exist (404), so a block is never revealed to the person it was set on. Direct messages, group-chat adds, DM reactions and DM calls answer403 {"error":"user_blocked","message":"You can't message this user"}; websocketim_sendsendsim_errorwithuser_blocked, and a voice call attempt fails withvoice_call_failedreasonblocked. Payments (/currency/transfer,/currency/transfer-requestand its confirmation, subscriptions, Bot payments, the chat bots' send commands and store purchases from a blocked seller) answer403 {"error":"user_blocked","message":"You can't send credits to this user"}. A friend request to someone who blocked you answersuser_not_found; if you blocked them it isuser_blocked. Existing conversations with a blocked account disappear from/im/conversations, the inbox and the thread routes until it is unblocked.Account notices
One-time "what's new" popups. Each notice has an id; a client shows it once and then marks it seen, which dismisses it for the account on every surface (the dashboard and all Ember clients). Some notices only go to accounts created before a cutoff.
Any signed-in token works. Marking seen is idempotent; an unknown id answers
404 {"error":"unknown_notice"}. Current ids:privacy-settings-2026-10(blocking and DM privacy; accounts created before 2026-10-29).Free received-message capacity is 100; Pro capacity is 50,000. A full inbox evicts older messages when new ones arrive. Design clients to reflect server state rather than assuming permanent infinite history.
Group REST endpoints require Chat. Owners control renaming/member additions/deleting the group; ordinary members can leave. Group messages use in-memory room history, so they do not have the persistence guarantees of server messages or DMs. Use the group
roomreturned by the API. Friend request acceptance uses its requestid, not a username.