Developer guide

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.

Nookara moved to nookara.cc. velora.ikelene.net keeps working for now, but update your base URL; old addresses will be retired later.

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.

Reference snapshot: 21 October 2026. Covers 478 Nookara REST operations and 210 Ember instance operations, with user websocket frames, the instance gateway and bot gateway. Schemas describe observed request keys, not exhaustive validation rules. Private service integrations are listed separately below.

How the pieces fit

PieceWhereWhat it does
Nookarahttps://nookara.ccAccounts, direct messages, groups, friends, credits and payments, push, instance tokens, signing keys, your saved list of Ember servers, the public directory, and hosting
Ember instanceits own address, such as https://chat.ikelene.netOne community: channels, messages, members, roles, emoji, webhooks, bots, uploads, voice and backups
Nookara-hosted instancehttps://SLUG-bonfire.ikelene.netAn ordinary instance that Nookara runs for you on a free Starter or a prepaid Plus plan
Self-hosted instanceyour own domainThe 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

  1. Find the server. GET https://INSTANCE/.well-known/bonfire (no sign-in) names the software, accounts_mode, features, build and the community. See Discover an instance.
  2. 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.
  3. 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.
  4. Use the instance. REST under /api/v1, live events on wss://INSTANCE/gateway, uploads and media import, invites, webhooks, optional signed messages that anyone can verify against Nookara's public keys.
  5. 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 caseAddressAuthentication
Nookara RESThttps://nookara.ccAuthorization: Bearer TOKEN (a Nookara token)
Nookara realtime (DMs, groups, presence)wss://nookara.cc/First JSON frame: auth_token
Instance discoveryhttps://INSTANCE/.well-known/bonfireNone
Nookara identity keyshttps://nookara.cc/.well-known/bonfire/jwks.jsonNone (public)
Instance RESThttps://INSTANCE/api/v1/...Authorization: Bearer SESSION (an instance session, never a Nookara token)
Instance gatewaywss://INSTANCE/gatewayFirst JSON frame: auth with the session
Instance bot RESThttps://INSTANCE/bot/v1Authorization: Bot TOKEN
Instance bot gatewaywss://INSTANCE/bot/gatewayIdentify, opcode 2
Instance webhookhttps://INSTANCE/api/v1/webhooks/WID/TOKENThe secret webhook URL
Where is my bot installed?https://nookara.cc/bonfire/bots/self/installsAuthorization: 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

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.

The Python package provides REST, the user and instance websockets and the bot gateway. It does not capture/play audio, implement WebRTC or render a UI. Voice signaling can be sent with 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.

  1. POST /auth/ext-code with {"permissions_integer":2049,"project_name":"My client"} (the scopes you request; the person can decline any). The response is {"code":"..."}. Names that start with Ember ( are reserved and answer 400 reserved_project_name.
  2. Open https://nookara.cc/login?code=CODE&project=My%20client&permissions=2049 in the user's browser. URL encode every query value. The code is sensitive while authorization is pending.
  3. Poll GET /auth/ext-code/status?code=CODE about once every 1.5 seconds. Pending is {"ready":false,"alive":true}; completed is {"ready":true,"token":"..."}.
  4. Keep the returned token private and use Authorization: Bearer TOKEN on 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/:sessionId or /account/sessions/:tokenId.
  • POST /auth/validate accepts 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/logout currently 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_disabled and realtime restrictions updates. A person who declined a scope will get insufficient_scope from 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.

ScopeBitIdentifierConsent screenInstance scopeUsed for
View Basic Profile1PROFILE_READTickedUsername, rank, badges, picture, balance
View Sensitive Info2PROFILE_SENSITIVEUnticked (risky)Email, login history, linked accounts
Project Auth4PROJECT_AUTHTickedVerify identity for a project, project achievements
Modify Settings8ACCOUNT_WRITEUnticked (risky)Profile, settings, picture changes
Read Storage16STORAGE_READTickedRead project key/value data
Write Storage32STORAGE_WRITEUnticked (risky)Save and delete project data
Read Instant Messages64VMAIL_READTickedRead direct messages (Instant Messages)
Send Instant Messages128VMAIL_SENDTickedSend and delete direct messages
View Friends256FRIENDS_READTickedFriends list and status
Manage Friends512FRIENDS_MANAGEUnticked (risky)Send, accept and decline friend requests
Spend Credits1024CURRENCY_PAYUnticked (risky)Transfers, subscriptions, role-shop and hosting payments
Chat Messaging2048CHATTickedchatEmber: your server list, instance tickets, group chats, bot management
Upload Media4096MEDIA_UPLOADTickedmediaUpload images, audio and video (Nookara and instances)
View Subscriptions8192CURRENCY_READTickedBalance and transactions
Nookara Voice16384VOICETickedvoiceJoin voice rooms and call people
Sign Messages32768SIGN_MESSAGESUnticked (risky)signFetch 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/session works for any token: {granted, effective, disabled, not_granted, ...}. granted is what the person approved, effective also drops services an administrator switched off for the account.
  • The user websocket's auth_success carries scopes and disabled_scopes. GET /account/me lists the account's sessions with their scopes and scope_list.
  • GET /bonfire/scopes.json is public and describes what the official Ember apps ask for: {version, scopes: [{id, bit, required: false, since, name, reason}], permissions_integer}. required is 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

WhereWhat you getMeaning
Nookara REST403 {"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 REST403 {"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 accountThe same two cases for realtime frames
Instance REST403 {"error":"insufficient_scope"}The instance session lacks chat, media, voice or sign (below)
Instance gatewaychat_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 scopescpWhat it lets the session do on an instance
Chat Messaging (2048)chatSign 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)mediaPOST /media/upload, POST /media/import, saving a YouTube video as an upload
Nookara Voice (16384)voiceThe chat_rtc_* voice frames and soundboard plays
Sign Messages (32768)signPosting 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.

FieldMeaning
software, version, protocol"bonfire-server" and the protocol number (1). Refuse anything else
name, description, icon_url, public_urlMirror the community once it exists
accounts_modevelora (sign in with a Nookara ticket) or local (username and password)
veloraFor Nookara mode: {issuer, jwks_url}, the identity provider this instance trusts
claimed, registrationWhether an owner claimed it; open or closed sign-ups (local mode)
featuressigning, voice, uploads, youtube, minecraft and bridges ({discord, fluxer, cloudlink}). Hide controls for what is false
buildThe 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_onlyUpload 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_idThe 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

ModeWho it is forHow 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.

AreaRoutesPython helpers
CommunityGET/POST /servers, GET/PATCH/DELETE /servers/:sid, POST /servers/:sid/join and /leave, GET /discoverservers() / joined_communities(), server(), update_community(), join(), leave()
Invites and requestsGET /invite/:code (public), POST /join/:code, GET/POST /servers/:sid/invites, DELETE /invites/:code, GET /servers/:sid/requests, POST .../requests/:uid/accept and /denyjoin_invite(), invite_info(), invites(), create_invite(), join_requests()
ChannelsPOST /servers/:sid/channels, PATCH/DELETE /channels/:cid, PUT /channels/:cid/perms, PUT /servers/:sid/layoutchannels(), channel_id("#general"), create_channel(), set_channel_permissions()
MessagesGET/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/readmessages(), send_message(), edit_message(), delete_message(), react(), pin(), search(), mark_read()
Members and rolesGET /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/:ridmembers(), kick(), bans(), create_role(), assign_role()
PeopleGET /identities?ids= (principal ids to user objects), GET/PATCH /settings, GET /notify, PUT /notify/:targetidentities(), user_settings(), set_notify()
Emoji and sounds/emojis, /servers/:sid/emojis, /servers/:sid/sounds, GET /soundsemojis()
UploadsPOST /media/upload?sid=SID&cid=CID (multipart file), POST /media/import?sid=SID&cid=CID ({url})upload(), import_media()
WebhooksGET/POST /channels/:cid/webhooks, PATCH/DELETE /hooks/:wid; execute at /webhooks/:wid/:tokenwebhooks(), create_webhook(), execute_webhook()
Bots/bots, /bots/by-name/:username/add, /bots/:id/token, POST /bots/gallery/addbots(), create_bot(), add_bot(), add_gallery_bot()
Link previews, shop, starboardGET /unfurl?url=, /channels/:cid/shop, /channels/:cid/starboard, /yt/:id/*named methods
Moderation and server settingsGET/PATCH /servers/:sid/settings, /servers/:sid/reports, /servers/:sid/timeouts, GET /servers/:sid/audit and /dashboardserver_settings(), update_server_settings(), report(), reports(), time_out(), remove_timeout(), audit_log(), dashboard(); see Server settings and moderation
Administration/instance/*, /bridge/*, /game/*, import and exportsee Instance administration

Joining, invites and requests

  • The community has a join_policy: open or request. POST /servers/:sid/join follows it: with request the 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/:code with no body. GET /invite/:code is 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 permanent invite_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/requests returns {requests:[{user, message, created_at}]}; the gateway sends chat_join_request to people who can accept and chat_join_result to the requester. On a Nookara-hosted server a full community answers 403 member_cap_reached with cap.

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 of join_policy, join_password and the sections join (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) and uploads (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 carries plan (a hosted plan's caps, else null).
  • Joining: join_policy can also be password (POST /servers/:sid/join {password}, else password_required / wrong_password), allowlist (not_on_allowlist) or invite (invite_only). A full server answers server_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 gateway chat_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/:uid lifts one. A timed-out member can't post, react (403 timed_out {until}), join voice or play sounds, and gets gateway chat_timeout {server, until, reason?}. Server and member views carry timeout_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

ActionRouteJSON body
Create the community (once, owner or admin)POST /api/v1/servers{"name":"My server","description":""}. A second one answers 409 community_exists
Create channelPOST /api/v1/servers/:sid/channels{"name":"general","type":"text","topic":"","category":"General"}
Edit messagePATCH /api/v1/messages/:id{"message":"Edited text"}
ReplyPOST /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 readPOST /api/v1/channels/:cid/read{"message_id":"LAST_MESSAGE_ID"}
Reorder sidebarPUT /api/v1/servers/:sid/layout{"categories":["General"],"channels":[{"cid":"CHANNEL_ID","category":"General"}]}
Invite joinPOST /api/v1/join/:codeNo 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

TypeConfigBehavior
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=CID with multipart field file.
  • POST /api/v1/media/import?sid=SID&cid=CID with 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 with max_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 botNookara developer bot (gallery)
LivesOn one instance. A principal b:N, a normal member, no login, no DMsOn your Nookara account (/chat/bots). Each instance creates a local bot account for it
Created withServer settings, Bots, or chat.create_bot("pingbot", "Answers !ping") (Manage server). Returns {bot, token} oncePOST /chat/bots or Ember settings; list it in the gallery so others can add it
TokenInstance-only: base64url(N).40 random characters. POST /bots/:id/token replaces itOne token for every instance. The instance keeps only its hash, which Nookara hands over in the add ticket
Added to a community withPOST /bots/by-name/:username/add {sid} (Manage server), roles and channel permissions then applyA single-use ticket: POST /bonfire/bots/gallery/:id/ticket then POST INSTANCE/api/v1/bots/gallery/add (see Bot gallery)
Managed byThe instance's Manage server peopleNookara: 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:

  1. Send {"type":"auth","session":"SESSION"} within 10 seconds.
  2. Wait for {"type":"auth_success","user":{...},"instance_admin":false,"instance_owner":false}. A bad session closes the socket with code 4001.
  3. Send {"type":"chat_hello"} and wait for {"type":"chat_ready"}. Community events start now.
  4. Send {"type":"ping"} every 25 seconds. The reply is pong, 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 codeMeaningDo this
4001Invalid or expired sessionSign in again; do not loop
4003Banned from the instanceStop
4008Rate limitedBack off, then reconnect
4010Instance restarting or restoring a backupReconnect; 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.

  1. GET /bonfire/signing-key on Nookara returns {kid, public_key, private_key, created_at}. Keep it in memory and never write it down.
  2. Build the payload {v:1, iss, instance, community, channel, author, ts, nonce, body, attachments, reply_to, edit_of}: iss is Nookara's address, instance the normalized instance address, community the sid, channel the cid, author your Nookara id as a string, ts the time in milliseconds, nonce 16 random bytes in base64url, body the exact text (line breaks as \n), and attachments the sha256 of each uploaded file (url:URL for a link-only Klipy GIF).
  3. 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 in signature: {kid, sig, ts, nonce} on the message (or on a PATCH edit, with edit_of set to the message id).
  4. The instance fetches the key from /bonfire/keys/kid/:kid, checks the owner, that the key was not revoked before ts, that ts is within five minutes, and the signature. A failure is 400 bad_signature with a reason; a signature from a session without the sign scope is 403 insufficient_scope and a local-account session gets 400 signing_unavailable. Messages come back with signature and verified: true, false or null (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 routeUsePython
POST /bonfire/instance-token (Chat)Short ticket for one instancevelora.instance_token(url)
GET /.well-known/bonfire/jwks.json (public)Nookara's identity keysbonfire_jwks()
GET /bonfire/signing-key (Sign Messages)Your account signing keyvelora.signing_key()
GET /bonfire/keys/kid/:kid, /bonfire/keys/user/:userId (public)Public keys to verify signaturesbonfire_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-joinbonfire_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 listedbonfire_directory(q)
GET /bonfire/profiles?ids= (public)Current names and picturesbonfire_profiles(ids)
GET /bonfire/scopes.json (public), GET /bonfire/sessionWhat the apps ask for; what a token gotbonfire_scopes(), granted_scopes()
GET /bonfire/server-latest.json (public)The official server buildserver_latest()
GET /bonfire/bots/gallery and the ticket routeBot gallerysee Bot gallery
/bonfire/import/* (Chat)Prepare a Discord or Fluxer server bundle for a new instancestart_bonfire_import()
/bonfire/hosting/*Hosting, see belowhosting 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.

StarterPlus
PriceFree, one per accountNookara Pro's weekly credit price per week, prepaid. Free while you have Nookara Pro
Members30Unlimited
Voice per month3,000 participant-minutes30,000
Upload size10 MB250 MB
Emoji, sounds, bots50, 10, 2Unlimited
Discord, Fluxer and CloudLink bridgesNoYes
Own Cloudflare voice keysNoYes

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:

  1. Overdue for 2 days: the server keeps working normally.
  2. 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.
  3. 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.

RouteWhat it doesPython
GET /bonfire/hosting/plansPlans, limits, URL template (public)hosting_plans()
GET /bonfire/hosting/slug/:slug{available, reason?}: invalid, reserved or takenhosting_slug_available(slug)
POST /bonfire/hosting/servers {slug,name,plan,weeks?,restore_backup?}Create. Returns {server,url,charged}. The URL joins your instance listcreate_hosting_server(slug, name, plan, weeks=)
GET /bonfire/hosting/serversYour servers and whether you have Prohosting_servers()
POST /bonfire/hosting/servers/:slug/weeks {weeks}Buy weeks, upgrade Starter to Plus, or leave read-onlybuy_hosting_weeks(slug, weeks)
PATCH /bonfire/hosting/servers/:slug {plan:"starter"}Drop to the free plan now, with no refundset_hosting_plan(slug)
POST /bonfire/hosting/servers/:slug/restart, /backupRestart, or take a backup nowrestart_hosting_server(), backup_hosting_server()
DELETE /bonfire/hosting/servers/:slug {confirm:slug}Back up, then removedelete_hosting_server(slug)
GET /bonfire/hosting/backups, GET .../backups/:id/download, DELETE .../backups/:idYour 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 accountupload_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.

RelayWhat 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 creditsTrusted instances (the official server and hosted ones) credit a person's first message of the day, the same once-a-day reward as elsewhere
PaymentsRole 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 brokerInstances 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
DirectoryWith listed on, the instance publishes name, description, icon, member count, tags and an invite link to the public directory
Bot gallery syncEvery 10 minutes: Nookara answers per gallery bot whether it is still valid, with fresh profile and token hash, and counts installs
ProfilesThe 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/guilds and GET /api/v1/bridge/servers/:sid show the state. Not available on the Starter plan (403 plan_limit).
  • YouTube player. Optional, needs yt-dlp on the server; discovery shows features.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

Legacy and read-only. Chat servers that used to live on Nookara (the /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/:sidGET 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_* eventsThe 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 NookaraINSTANCE/bot/v1 and wss://INSTANCE/bot/gateway; gallery bots are added per instance
/chat/bots/by-name/:username/addPOST 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-inNone: scopes are requested and optional (see Scopes)
  1. GET /chat/servers returns {"servers":[...]} with an opaque sid, a read_only flag, and moved_to for servers that moved.
  2. GET /chat/servers/:sid returns server, categories, roles, voice and the visible channels.
  3. 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 reason legacy) 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:

  1. Connect and pick. The server owner runs bonfire server https://chat.example.com in the game console. The plugin keeps one outbound websocket to wss://chat.example.com/game-gateway?v=1 (no open ports needed) and prints a pairing tag such as ABC-123. In the community, create a channel with type: "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 with q, tag, page) and link one with POST /api/v1/game/connected/:iid/link {cid}. Pick the purpose (info, console, chat) in the channel config.
  2. Claim code. POST /api/v1/game/claims with {"cid":"GAME_CHANNEL_CID"} returns {code, command, expires_at} (10 minutes, 10 per hour). Someone with console access runs bonfire link CODE. Poll GET /api/v1/game/claims/CODE, or wait for the game_linked event 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

FieldMeaning
gameCurrently minecraft
instanceThe linked instance id (iid)
purposeinfo (live card), console (log and commands, visible to Manage server) or chat (synced chat and events). Several channels can share one instance
setup, addressSetup 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_tagShow the player list, or the backend server tag, on the card and in relayed messages
instance_name, platformDisplay name and software (paper, spigot, fabric, velocity) of the instance

Status, console and audit

ActionRouteNotes
Live statusGET /chat/game/channels/:cid/statusReturns 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 linesGET /chat/game/channels/:cid/console?before=SEQConsole channels only. Returns up to 200 lines (lines, has_more); use the lowest seq as before
Run a commandPOST /chat/game/channels/:cid/consoleBody {"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 logGET /chat/game/servers/:sid/audit?before=IDManage server. Links, unlinks and every command, including who ran it. Kept for 365 days
DownloadsGET /chat/game/downloadsPublic. Latest plugin and mod files and the Modrinth link
Limitation (legacy Nookara routes only): running a console command through Nookara is only allowed from the Nookara website or the Ember desktop app; tokens created by a project, extension or the Python library get 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.

EventFields
game_statusserver, channel, instance, status, online, last_seen. One event per game channel of the instance
game_consoleserver, channel, instance, lines. New or updated console lines
game_linkedserver, instance (the new instance view), claim, hint
game_unlinkedserver, 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 permissionBit
Send messages1
Manage channels2
Manage server4
Manage roles8
Kick members16
Ban members32
Manage messages64
Mention everyone128
Attach files256
Administrator512
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

Nookara's socket is for accounts, not for Ember chat. Presence, activity, direct messages, groups, calls and notifications use this socket. Ember servers have their own gateway (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 frameImportant fieldsResult
chat_sendchannel, message, nonce, optional server/reply_to/attachmentschat_ack or chat_error
chat_typingchannel, typingBroadcast to other clients; no ack
chat_readchannel, idUpdates read state; no ack
chat_presenceusernamepresence_update with request=true
set_rich_presenceactivity objectPresence broadcast; no ack
clear_rich_presenceNoneClears this socket's activity
set_custom_statustextSaved custom status
im_sendto, message, nonce, optional reply_to, optional status_reply ({"text"})im_ack or im_error
dm_typingto, typingdm_typing for recipient
joinRoomroomroomHistory; group membership checked
roomMessageroom, message, optional colorroomMessage broadcast
pingNonepong

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

  1. Reconnect with bounded exponential backoff and jitter.
  2. Authenticate again and rejoin subscriptions/rooms.
  3. Refetch server state and unread/history using REST. Dedupe messages by ID.
  4. 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.

  1. Send chat_rtc_join with room and unique nonce. Await chat_rtc_joined, containing iceServers and current people.
  2. Create two WebRTC connections with those ICE servers: one for publishing and one for receiving. Keep them separate.
  3. 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 mid and a trackName.
  4. Send chat_rtc_publish with room, nonce, sessionDescription:{type,sdp} and tracks:[{mid,trackName:"audio"}]. Apply the returned SDP from chat_rtc_published as the remote description. If it is an offer, create a local answer and send chat_rtc_answer with session:"publish".
  5. Wait for the publisher's WebRTC connection state to become connected. Only then send chat_rtc_connected with room. This is what announces an actually connected participant.
  6. Handle chat_rtc_room snapshots. Build the complete desired subscription list from other participants' tracks: sources:[{userId,trackName}]. Send it as chat_rtc_subscribe with room and nonce. It replaces the desired set; sending only newly added tracks can unsubscribe earlier peers.
  7. If the reply is chat_rtc_offer, apply its SDP to the receiving connection, create/set an answer, wait for gathering, then send chat_rtc_answer with session:"receive". Await chat_rtc_ready. A subscription with no new allocations can return ready directly.
  8. 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.
  9. To stop one producer track, send chat_rtc_close with tracks:["camera"]. To leave, send chat_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.

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; /mail is 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.

POST /im/send
{"to":"username","message":"Hello!"}

GET /im/status-reply/username
POST /im/send
{"to":"username","message":"Same!","status_reply":{"text":"their current custom status"}}

GET /im/conversations
GET /im/with/username?before=123&limit=50
POST /im/with/username/read

POST /groups
{"name":"Project group","members":["alice","bob"]}

POST /groups/ROOM/messages
{"message":"Hello everyone!"}

POST /friends/request
{"username":"alice"}

DM history is chronological; limit defaults to 50 and clamps to 200. The send response includes message and delivered; false means saved but the recipient was not online for immediate delivery. Websocket im_send supports reply_to; the current HTTP send route does not forward that field. Both routes accept status_reply.

Replying to a status. Ember can answer someone's custom status. Call GET /im/status-reply/:username first: it returns {"can":true,"text":"..."}, or {"can":false,"reason":"own|bot|no_status|friends_only|not_found"}. Then send the DM with status_reply: {"text": <that status>} (REST POST /im/send or websocket im_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 answers status_changed (HTTP 409) if it does not match; cannot_reply_own_status and dm_privacy (HTTP 403, see DM privacy) also apply. The saved message carries status_reply: {"text"} (or null) in DM history, im_received/im_sent events 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.

GET    /account/blocks                 -> {"blocks":[{"username","pfp_url","color","created_at"}]}   (needs Friends read)
POST   /account/blocks                 {"username":"alice"}   -> {"success":true,"blocked":"alice"}   (needs Friends manage)
DELETE /account/blocks/alice           -> {"success":true,"was_blocked":true}

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 websocket blocks_changed event ({"blocked","on"}) tells your other sessions that your block list changed.

GET /chat/users/:username (the profile card behind Ember) includes blocked_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

GET   /account/dm-privacy              -> {"dm_privacy":"everyone","options":["everyone","friends","servers"]}   (needs Chat)
PATCH /account/dm-privacy              {"dm_privacy":"servers"}   -> {"success":true,"dm_privacy":"servers"}

everyone is the default. friends lets only your friends message or call you. servers also lets in people who share at least one Ember server with you. It is the same value as the dm_privacy chat 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, websocket im_send) and DM calls (POST /chat/calls). A sender it stops gets dm_privacy (HTTP 403) with the message "Failed to send this message due to the users privacy settings"; the websocket answers im_error with the same error and message. This replaces the old dms_friends_only error. An invalid value gets invalid_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/:username and 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 answer 403 {"error":"user_blocked","message":"You can't message this user"}; websocket im_send sends im_error with user_blocked, and a voice call attempt fails with voice_call_failed reason blocked. Payments (/currency/transfer, /currency/transfer-request and its confirmation, subscriptions, Bot payments, the chat bots' send commands and store purchases from a blocked seller) answer 403 {"error":"user_blocked","message":"You can't send credits to this user"}. A friend request to someone who blocked you answers user_not_found; if you blocked them it is user_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.

GET  /account/notices                   -> {"notices":["privacy-settings-2026-10"]}
POST /account/notices/privacy-settings-2026-10/seen   -> {"success":true}

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 room returned by the API. Friend request acceptance uses its request id, not a username.

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.

RouteInputImportant behavior
POST /chat/uploadfile part named fileLegacy image attachment for Nookara-hosted servers; Chat + Media Upload; 12 MiB; returns attachment
POST /chat/media/uploadfileSaved media uploads on Nookara, image/video/audio; inspect returned item
POST /chat/media/tempfile; 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/accountfileA 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/destinationsnoneWhat 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/externalfileOld 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/limitsnoneReturns { 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 urlLink-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/bannerfile or JSON data; optional cropAccount Write scope; animated images have plan restrictions
POST /media/image or /media/audiofile or data URIMedia Upload scope, account storage quota; audio limit 20 MiB
POST /media/video/chunksessionId, chunkIndex, totalChunks, file part chunk15 MiB maximum chunk, 10 MiB recommended
POST /media/video/finalizeJSON sessionId, mimeType, originalNameAssembles 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:

FileTime to live after the last load
Pictures up to 10 MB30 days
Videos and sounds up to 50 MB14 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.

  1. POST /currency/transfer-request with {"to":"recipient","amount":10,"note":"Example purchase"}.
  2. Open the returned url for the user. The response includes the request id and expiresIn.
  3. Poll GET /currency/transfer-request/:id and display pending, paid, cancelled, expired or failed.
  4. 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

Instances first. Bots and webhooks for Ember servers are documented in Ember servers: instance bot tokens are made on the instance (/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.

FieldRule
aliasOptional object on a bot's message create or edit. On create, leave it out (or null) for a normal message
alias.nameRequired 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_urlOptional. 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.unmarkedRead 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_idRead 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

  1. Connect to wss://INSTANCE/bot/gateway. Receive {"op":10,"d":{"heartbeat_interval":...}}.
  2. Send Identify {"op":2,"d":{"token":"BOT_TOKEN"}} within 20 seconds. A bad token closes with 4004.
  3. Send opcode 1 heartbeats on the interval and track opcode 11 acknowledgements.
  4. Read dispatch frames {"op":0,"t":"MESSAGE_CREATE","s":1,"d":{...}}. READY is followed by GUILD_CREATE (the whole community, also when a manager adds the bot), then GUILD_UPDATE, GUILD_DELETE, GUILD_MEMBER_ADD and GUILD_MEMBER_REMOVE, MESSAGE_CREATE, MESSAGE_UPDATE, MESSAGE_DELETE, MESSAGE_REACTION_ADD and MESSAGE_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/members and the member of chat_member_update (including change: "joined") carry presence: "online" or "offline" for bots, and null for 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's presence to 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.

Security note. Bot tokens must stay on a server you control. The PenguinMod / Scratch Nookara extension has no payment blocks on purpose: a bot token placed in a Scratch project is public to everyone who opens the project. Never put a bot token, or a 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 status is paid, and compare amount and buyer.id with 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:

FieldTypeRules
buyerstring or numberNookara user id (digits) or username. Alias buyer_id. Required.
amountintegerCredits, 1 to 10000. Required.
order_idstringYours, unique per bot; letters, digits and _ . : -, 1 to 100 characters. Required.
descriptionstringOptional, up to 140 characters, shown to the buyer.
return_urlstringOptional, https:// only, up to 500 characters, no credentials in the URL.
expires_inintegerOptional seconds, 60 to 86400, default 3600.
metadatastringOptional, 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/:id returns the same object.
  • GET /bot/payment-requests?order_id=ORDER finds a request by your order id (the same object, 404 not_found if none).
  • GET /bot/payment-requests?limit=25&status=paid lists your latest requests as {"requests":[...]}.
  • POST /bot/payment-requests/:id/cancel cancels a request that is still pending. 409 payment_in_progress if the buyer is paying right now, 409 not_cancellable once it is paid, declined or expired. Cancelling an already cancelled request is a no-op 200.

Statuses

StatusMeaning
pendingWaiting 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.
paidFinal. paid_at, transaction_id and buyer.id are set. This is the only status that means "deliver the goods".
declinedFinal. The buyer pressed Decline; reason is declined_by_buyer.
expiredFinal. expires_at passed.
cancelledFinal. 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. The success page shows a button, and redirects automatically after about 3.5 seconds, to return_url?order_id=ORDER&status=paid (or status=declined) when you gave a return_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"}.

HTTPCodeMeaning
401invalid_bot_tokenMissing or bad Authorization: Bot ....
403merchant_unavailable, bot_bannedThe owner or the bot cannot take payments.
400invalid_amount (also min, max), invalid_order_id, invalid_description, invalid_metadata, invalid_return_url, invalid_expires_in, invalid_buyerValidation.
404buyer_not_found, not_foundNo such buyer / no such request of your bot.
400buyer_is_bot, self_paymentThe buyer is a bot, or is the merchant account.
403buyer_banned, buyer_suspended, buyer_restrictedThe buyer is banned, suspended, or an admin switched off spending credits for them.
409order_id_conflict, payment_in_progress, not_cancellableSee above.
429rate_limited, too_many_open_requests, buyer_has_too_many_open_requestsLimits 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_url query strings, only on the API.
  • The request id and pay_url are 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

StateMeaning
privateDefault, or after you withdrew it. Only you (and staff for review) can see or add it.
pendingSubmitted and waiting for review.
approvedListed and verified. Edits to its listing fields go live at once.
rejectedReview declined. review_message says why; fix it and resubmit.
delistedHidden by staff. You can resubmit.
bannedCannot 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}]}. q matches name, descriptions and tags; tag is exact. Limit: 120 per minute per IP.
  • GET /bonfire/bots/gallery/tags returns the top 50 tags: {"tags":[{"tag":"music","count":3}]}.
  • GET /bonfire/bots/gallery/:id returns the card plus long_description, links (up to 5 of {label,url}) and permissions. A bot that is not approved answers 404 bot_not_found, unless the request carries the bearer token of its owner or of staff; then you also get state, review_message, submitted_at, reviewed_at, can_submit and can_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/gallery returns {"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/gallery saves 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}) and permissions (from send_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) moves private, rejected or delisted to pending. The bot needs a description of at least 10 characters and an avatar (description_required, avatar_required), set with PATCH /chat/bots/:id and POST /chat/bots/:id/avatar. Other errors: already_pending and already_listed (409), gallery_banned (403). Resubmitting after a rejection or delisting uses the same route.
  • POST /chat/bots/:id/gallery/withdraw returns the bot to private; 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

  1. The person signs in with Nookara (Chat scope) and calls POST /bonfire/bots/gallery/:id/ticket with {"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.
  2. 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.
  3. Send it to the instance: POST https://INSTANCE/api/v1/bots/gallery/add with {"ticket":"...","sid":"COMMUNITY_SID"} (instance session, Chat scope). The person needs Manage server there. Errors include ticket_invalid, ticket_expired (410), ticket_used (409), ticket_wrong_audience, ticket_wrong_user (403), already_in_server, not_allowed (403) and gallery_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.

SettingValues
notificationsall, mentions, none
dm_privacyeveryone, friends, servers
yt_modeask, velora, youtube
notify_soundshort, long, classic
radio_urlAn http(s) stream URL, up to 500 characters (default https://www.clubfmserver.be/pink.mp3)
server_orderArray of server sids
Other listed switchesBoolean

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.

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-code and /app-exchange are 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-token is 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: /admin and 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/send sends a system notification (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). title is up to 128 characters, body up to 2000 with **bold**, link a site path or an https URL. The reply is {"success":true,"sent":N,"emailed":false}; unknown names give 404 user_not_found with missing. 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

StatusTypical causeClient behavior
400Missing/invalid fields, invalid operationShow useful validation; do not retry unchanged input
401Missing, revoked or expired tokenClear invalid credentials and offer sign-in
403Scope, rank, privacy, membership, ToS or account restrictionExplain the restriction; do not infer permissions from authentication alone
404Unknown or hidden resourceRemove stale references; a hidden channel may deliberately appear missing
409 / 410Conflicting state or expired upload/codeRefetch state or create a new session
413File/body size or storage quotaUse chunks if appropriate, or reduce usage
429Rate limitHonor Retry-After/retry_after where supplied, then back off
5xxService/upstream failureRetry 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.

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.

ParameterLocationMeaning
codeQuerySensitive 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.

ParameterLocationMeaning
codeQuerySensitive 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.json

Python 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.

ParameterLocationMeaning
codeQuerySensitive 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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.

ParameterLocationMeaning
sessionIdPath (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.json

Python 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.json

Python 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.

ParameterLocationMeaning
pPath (required)Identifier from the corresponding API response.
retQueryEndpoint-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.

ParameterLocationMeaning
pPath (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.

ParameterLocationMeaning
pPath (required)Identifier from the corresponding API response.
codeQuerySensitive pending authorization code.
errorQueryEndpoint-specific query value.
stateQueryEndpoint-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.json

Python 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.json

Python 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.

ParameterLocationMeaning
pPath (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.json

Python 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.

ParameterLocationMeaning
pPath (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.json

Python 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.

ParameterLocationMeaning
clientQueryEndpoint-specific query value.
doneQueryEndpoint-specific query value.
stateQueryEndpoint-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.json

Python 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.json

Python 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.json

Python 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.

ParameterLocationMeaning
tokenIdPath (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/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.

ParameterLocationMeaning
usernamePath (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.json

Python 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.json

Python 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.json

Python 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)

ParameterLocationMeaning
storageIdPath (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)

ParameterLocationMeaning
storageIdPath (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)

ParameterLocationMeaning
storageIdPath (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)

ParameterLocationMeaning
storageIdPath (required)Your application storage namespace.
keyPath (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)

ParameterLocationMeaning
storageIdPath (required)Your application storage namespace.
keyPath (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)

ParameterLocationMeaning
storageIdPath (required)Your application storage namespace.
keyPath (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)

ParameterLocationMeaning
storageIdPath (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)

ParameterLocationMeaning
storageIdPath (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)

ParameterLocationMeaning
storageIdPath (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)

ParameterLocationMeaning
storageIdPath (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)

ParameterLocationMeaning
storageIdPath (required)Your application storage namespace.
keyPath (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)

ParameterLocationMeaning
storageIdPath (required)Your application storage namespace.
keyPath (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.json

Python 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)

ParameterLocationMeaning
storageIdPath (required)Your application storage namespace.
keyPath (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)

ParameterLocationMeaning
storageIdPath (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.

ParameterLocationMeaning
usernamePath (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)

ParameterLocationMeaning
usernamePath (required)Nookara username, URL encoded.
beforeQueryFetch history before this message ID (starboard: starred_at cursor).
limitQueryMaximum 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)

ParameterLocationMeaning
usernamePath (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)

ParameterLocationMeaning
idPath (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)

ParameterLocationMeaning
idPath (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.json

Python 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)

ParameterLocationMeaning
idPath (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)

ParameterLocationMeaning
idPath (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)

ParameterLocationMeaning
idPath (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)

ParameterLocationMeaning
usernamePath (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)

ParameterLocationMeaning
usernamePath (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)

ParameterLocationMeaning
roomPath (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)

ParameterLocationMeaning
roomPath (required)Room identifier returned by group/call APIs.
limitQueryMaximum 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)

ParameterLocationMeaning
roomPath (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)

ParameterLocationMeaning
roomPath (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.json

Python 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)

ParameterLocationMeaning
roomPath (required)Room identifier returned by group/call APIs.
usernamePath (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)

ParameterLocationMeaning
roomPath (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.json

Python 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)

ParameterLocationMeaning
roomPath (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.

ParameterLocationMeaning
codePath (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)

ParameterLocationMeaning
idsQueryComma 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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (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.json

Python 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.

ParameterLocationMeaning
sidPath (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.json

Python 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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (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.json

Python 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.

ParameterLocationMeaning
sidPath (required)Opaque user API server sid.
ridPath (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.json

Python 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.

ParameterLocationMeaning
sidPath (required)Opaque user API server sid.
ridPath (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.

ParameterLocationMeaning
sidPath (required)Opaque user API server sid.
usernamePath (required)Nookara username, URL encoded.
ridPath (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.

ParameterLocationMeaning
sidPath (required)Opaque user API server sid.
usernamePath (required)Nookara username, URL encoded.
ridPath (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.

ParameterLocationMeaning
sidPath (required)Opaque user API server sid.
ridPath (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.

ParameterLocationMeaning
sidPath (required)Opaque user API server sid.
ridPath (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.

ParameterLocationMeaning
cidPath (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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
codePath (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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (required)Opaque user API server sid.
usernamePath (required)Nookara username, URL encoded.
banQueryUse 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.

ParameterLocationMeaning
sidPath (required)Opaque user API server sid.
usernamePath (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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
cidPath (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.json

Python 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.

ParameterLocationMeaning
cidPath (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.

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.

ParameterLocationMeaning
cidPath (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.

ParameterLocationMeaning
cidPath (required)User API channel cid; bot routes instead use numeric channel row ID.
afterQueryFetch history after this message ID.
beforeQueryFetch history before this message ID (starboard: starred_at cursor).
limitQueryMaximum 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.

ParameterLocationMeaning
cidPath (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.

ParameterLocationMeaning
cidPath (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.json

Python 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.

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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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)

ParameterLocationMeaning
targetPath (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)

ParameterLocationMeaning
usernamePath (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.json

Python 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.

ParameterLocationMeaning
idPath (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.json

Python 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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
usernamePath (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.json

Python 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)

ParameterLocationMeaning
usernamePath (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)

ParameterLocationMeaning
keyPath (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)

ParameterLocationMeaning
pageQueryOne-based GIF page.
qQuerySearch 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.json

Python 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)

ParameterLocationMeaning
kindPath (required)Identifier from the corresponding API response.
slugPath (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.json

Python 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)

ParameterLocationMeaning
idPath (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)

ParameterLocationMeaning
urlQueryURL 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.

ParameterLocationMeaning
eidPath (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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (required)Opaque user API server sid.
eidPath (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.json

Python 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.

ParameterLocationMeaning
sidPath (required)Opaque user API server sid.
eidPath (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.

ParameterLocationMeaning
platformPath (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.

ParameterLocationMeaning
platformPath (required)Linked external platform identifier.
gidPath (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.

ParameterLocationMeaning
platformPath (required)Linked external platform identifier.
gidPath (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.json

Python 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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (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.json

Python 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.

ParameterLocationMeaning
sidPath (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.json

Python 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.

ParameterLocationMeaning
sidPath (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.json

Python 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.

ParameterLocationMeaning
sidPath (required)Opaque user API server sid.
cidPath (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.json

Python 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/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.

ParameterLocationMeaning
cidPath (required)User API channel cid; bot routes instead use numeric channel row ID.
beforeQueryFetch 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.

ParameterLocationMeaning
idPath (required)Identifier from the corresponding API response.
emojiPath (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.

ParameterLocationMeaning
idPath (required)Identifier from the corresponding API response.
emojiPath (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)

ParameterLocationMeaning
idPath (required)Identifier from the corresponding API response.
emojiPath (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)

ParameterLocationMeaning
idPath (required)Identifier from the corresponding API response.
emojiPath (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.

ParameterLocationMeaning
cidPath (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)

ParameterLocationMeaning
usernamePath (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)

ParameterLocationMeaning
usernamePath (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.json

Python 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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (required)Opaque user API server sid.
idPath (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.json

Python 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.

ParameterLocationMeaning
sidPath (required)Opaque user API server sid.
idPath (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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
cidPath (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.

ParameterLocationMeaning
urlQueryURL 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)

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
cidPath (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.

ParameterLocationMeaning
cidPath (required)User API channel cid; bot routes instead use numeric channel row ID.
ridPath (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.json

Python 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.

ParameterLocationMeaning
cidPath (required)User API channel cid; bot routes instead use numeric channel row ID.
ridPath (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.

ParameterLocationMeaning
cidPath (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.

ParameterLocationMeaning
cidPath (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.json

Python 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.

ParameterLocationMeaning
widPath (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.json

Python 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.

ParameterLocationMeaning
widPath (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.

ParameterLocationMeaning
widPath (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.

ParameterLocationMeaning
sidPath (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.

ParameterLocationMeaning
sidPath (required)Opaque user API server sid.
iidPath (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.

ParameterLocationMeaning
pageQueryOne-based GIF page.
qQuerySearch text; URL encode it.
sidQueryCommunity sid (required).
tagQueryExact 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.

ParameterLocationMeaning
codePath (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.

ParameterLocationMeaning
cidPath (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.

ParameterLocationMeaning
cidPath (required)User API channel cid; bot routes instead use numeric channel row ID.
beforeQueryFetch 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.

ParameterLocationMeaning
cidPath (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.

ParameterLocationMeaning
sidPath (required)Opaque user API server sid.
beforeQueryFetch 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.

ParameterLocationMeaning
gidPath (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.

ParameterLocationMeaning
uidPath (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.

ParameterLocationMeaning
gidPath (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.

ParameterLocationMeaning
gidPath (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.

ParameterLocationMeaning
gidPath (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.

ParameterLocationMeaning
gidPath (required)Numeric guild ID from bot API, or external platform guild ID on bridge routes.
uidPath (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.

ParameterLocationMeaning
gidPath (required)Numeric guild ID from bot API, or external platform guild ID on bridge routes.
limitQueryMaximum 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.

ParameterLocationMeaning
cidPath (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.

ParameterLocationMeaning
cidPath (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.

ParameterLocationMeaning
cidPath (required)User API channel cid; bot routes instead use numeric channel row ID.
afterQueryFetch history after this message ID.
beforeQueryFetch history before this message ID (starboard: starred_at cursor).
limitQueryMaximum 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.

ParameterLocationMeaning
cidPath (required)User API channel cid; bot routes instead use numeric channel row ID.
midPath (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.

ParameterLocationMeaning
cidPath (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.

ParameterLocationMeaning
cidPath (required)User API channel cid; bot routes instead use numeric channel row ID.
midPath (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.json

Python 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.

ParameterLocationMeaning
cidPath (required)User API channel cid; bot routes instead use numeric channel row ID.
midPath (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.

ParameterLocationMeaning
cidPath (required)User API channel cid; bot routes instead use numeric channel row ID.
midPath (required)Message ID.
emojiPath (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.

ParameterLocationMeaning
cidPath (required)User API channel cid; bot routes instead use numeric channel row ID.
midPath (required)Message ID.
emojiPath (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.

ParameterLocationMeaning
cidPath (required)User API channel cid; bot routes instead use numeric channel row ID.
midPath (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.

ParameterLocationMeaning
cidPath (required)User API channel cid; bot routes instead use numeric channel row ID.
midPath (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.json

Python 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.

ParameterLocationMeaning
order_idQueryEndpoint-specific query value.
statusQueryEndpoint-specific query value.
limitQueryMaximum 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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
widPath (required)Webhook identifier.
tokenPath (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.

ParameterLocationMeaning
widPath (required)Webhook identifier.
tokenPath (required)Secret capability token, not a public identifier.
waitQuerytrue 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.

ParameterLocationMeaning
widPath (required)Webhook identifier.
tokenPath (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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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.json

Python 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.

ParameterLocationMeaning
idPath (required)Identifier from the corresponding API response.
dlQueryEndpoint-specific query value.
eQueryEndpoint-specific query value.
sQueryEndpoint-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)

ParameterLocationMeaning
gameQueryEndpoint-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)

ParameterLocationMeaning
idPath (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.json

Python 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)

ParameterLocationMeaning
idPath (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.json

Python 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.json

Python 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.json

Python 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)

ParameterLocationMeaning
usernamePath (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.json

Python 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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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.json

Python 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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
usernamePath (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.

ParameterLocationMeaning
idPath (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.json

Python 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.json

Python 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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
uQueryCatbox download URL.
nQuerySuggested 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.

ParameterLocationMeaning
unreadQueryEndpoint-specific query value.
categoryQueryEndpoint-specific query value.
cursorQueryEndpoint-specific query value.
limitQueryMaximum 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.json

Python 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.

ParameterLocationMeaning
idPath (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}.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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.json

Python 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)

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
qQuerySearch 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.

ParameterLocationMeaning
tokenQueryEndpoint-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.

ParameterLocationMeaning
typePath (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.json

Python 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)

KeyRequiredMeaning
nameYesName to reply to, up to 80 characters.
emailYesReply address. Must be a valid email address.
categoryYesOne of Account or sign-in, Billing, credits or Pro, Ember (chat), Hyperfocus launcher, Developers and the API, Privacy or data request, Something else.
subjectYesUp to 120 characters.
messageYes10 to 4000 characters.
usernameNoNookara 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.json

Python 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.

ParameterLocationMeaning
usernamePath (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.

ParameterLocationMeaning
gamePath (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.

ParameterLocationMeaning
usernamePath (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.json

Python 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.

ParameterLocationMeaning
usernamePath (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.json

Python 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.

ParameterLocationMeaning
usernamePath (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.json

Python 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.json

Python 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.

ParameterLocationMeaning
idPath (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.json

Python 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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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.json

Python 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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
usernamePath (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.

ParameterLocationMeaning
usernamePath (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.json

Python 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.

ParameterLocationMeaning
usernamePath (required)Nookara username, URL encoded.
badgeIdPath (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.

ParameterLocationMeaning
usernamePath (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.

ParameterLocationMeaning
usernamePath (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.

ParameterLocationMeaning
ipQueryEndpoint-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.

ParameterLocationMeaning
usernamePath (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.

ParameterLocationMeaning
usernamePath (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.json

Python 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.

ParameterLocationMeaning
usernamePath (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.json

Python 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.

ParameterLocationMeaning
usernamePath (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.

ParameterLocationMeaning
usernamePath (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.

ParameterLocationMeaning
usernamePath (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.json

Python 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.

ParameterLocationMeaning
usernamePath (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.json

Python 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.

ParameterLocationMeaning
usernamePath (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.

ParameterLocationMeaning
usernamePath (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.

ParameterLocationMeaning
usernamePath (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.

ParameterLocationMeaning
usernamePath (required)Nookara username, URL encoded.
sessionIdPath (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.

ParameterLocationMeaning
usernamePath (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.json

Python 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.

ParameterLocationMeaning
usernamePath (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.

ParameterLocationMeaning
usernamePath (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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.

ParameterLocationMeaning
hashPath (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.

ParameterLocationMeaning
usernamePath (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.json

Python 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.

ParameterLocationMeaning
domainPath (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.json

Python 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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
limitQueryMaximum page size; endpoint-specific default/cap.
offsetQuerySearch 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.

ParameterLocationMeaning
byQueryEndpoint-specific query value.
hoursQueryEndpoint-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.

ParameterLocationMeaning
typeQueryEndpoint-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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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.json

Python 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.

ParameterLocationMeaning
cidrPath (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.

ParameterLocationMeaning
codeQuerySensitive pending authorization code.
errorQueryEndpoint-specific query value.
stateQueryEndpoint-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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.

ParameterLocationMeaning
nQuerySuggested 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.

ParameterLocationMeaning
cellQueryEndpoint-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.

ParameterLocationMeaning
vPath (required)Identifier from the corresponding API response.
pagePath (required)Identifier from the corresponding API response.
cellQueryEndpoint-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.

ParameterLocationMeaning
uQueryCatbox download URL.
wQueryEndpoint-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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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.json

Python 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.

ParameterLocationMeaning
idPath (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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
usernamePath (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.json

Python 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)

ParameterLocationMeaning
kidPath (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.

ParameterLocationMeaning
kidPath (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.

ParameterLocationMeaning
userIdPath (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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.json

Python 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.

ParameterLocationMeaning
urlQueryURL 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.

ParameterLocationMeaning
idsQueryComma 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)

ParameterLocationMeaning
platformPath (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)

ParameterLocationMeaning
platformPath (required)Linked external platform identifier.
gidPath (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.

ParameterLocationMeaning
job_idPath (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.

ParameterLocationMeaning
pageQueryOne-based GIF page.
qQuerySearch 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.

ParameterLocationMeaning
idPath (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.json

Python 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.

ParameterLocationMeaning
idPath (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)

ParameterLocationMeaning
slugPath (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.json

Python 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)

ParameterLocationMeaning
urlQueryURL 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.

ParameterLocationMeaning
slugPath (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.json

Python 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)

ParameterLocationMeaning
slugPath (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.json

Python 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)

ParameterLocationMeaning
slugPath (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)

ParameterLocationMeaning
slugPath (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)

ParameterLocationMeaning
idPath (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)

ParameterLocationMeaning
idPath (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)

ParameterLocationMeaning
slugPath (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.json

Python 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

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 }.

ParameterLocationMeaning
idPath (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.

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.

ParameterLocationMeaning
idPath (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.

ParameterLocationMeaning
idPath (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

ParameterLocation
appPath (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

ParameterLocation
appPath (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.json

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

Link to this operation · Python: chat.put_bot_v1_applications_by_app_commands(...) on an Instance

Authentication: Bot token

ParameterLocation
appPath (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.json

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/commands/:cidbot

Link to this operation · Python: chat.get_bot_v1_applications_by_app_commands_by_cid(...) on an Instance

Authentication: Bot token

ParameterLocation
appPath (required)
cidPath (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

ParameterLocation
appPath (required)
cidPath (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.json

Slash 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

ParameterLocation
appPath (required)
cidPath (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

ParameterLocation
appPath (required)
gidPath (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

ParameterLocation
appPath (required)
gidPath (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.json

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

Link to this operation · Python: chat.put_bot_v1_applications_by_app_guilds_by_gid_commands(...) on an Instance

Authentication: Bot token

ParameterLocation
appPath (required)
gidPath (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.json

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

ParameterLocation
appPath (required)
gidPath (required)
cidPath (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

ParameterLocation
appPath (required)
gidPath (required)
cidPath (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.json

Slash 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

ParameterLocation
appPath (required)
gidPath (required)
cidPath (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

ParameterLocation
appPath (required)
gidPath (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

ParameterLocation
appPath (required)
gidPath (required)
cidPath (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

ParameterLocation
appPath (required)
gidPath (required)
cidPath (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.json

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

ParameterLocation
idPath (required)
tokenPath (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.json

Authenticated 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)

ParameterLocation
appPath (required)
tokenPath (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.json

Authenticated 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)

ParameterLocation
appPath (required)
tokenPath (required)
midPath (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)

ParameterLocation
appPath (required)
tokenPath (required)
midPath (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.json

Authenticated 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)

ParameterLocation
appPath (required)
tokenPath (required)
midPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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.json

Used 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)

ParameterLocation
sidPath (required)
idPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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.json

Used 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

ParameterLocation
gidPath (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

ParameterLocation
uidPath (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

ParameterLocation
gidPath (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

ParameterLocation
gidPath (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

ParameterLocation
gidPath (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

ParameterLocation
gidPath (required)
uidPath (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

ParameterLocation
gidPath (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

ParameterLocation
gidPath (required)
uidPath (required)
ridPath (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

ParameterLocation
gidPath (required)
uidPath (required)
ridPath (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

ParameterLocation
cidPath (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

ParameterLocation
cidPath (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

ParameterLocation
cidPath (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

ParameterLocation
cidPath (required)
midPath (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

ParameterLocation
cidPath (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

ParameterLocation
cidPath (required)
midPath (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

ParameterLocation
cidPath (required)
midPath (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

ParameterLocation
cidPath (required)
midPath (required)
emojiPath (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

ParameterLocation
cidPath (required)
midPath (required)
emojiPath (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

ParameterLocation
cidPath (required)
midPath (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

ParameterLocation
cidPath (required)
midPath (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)

ParameterLocation
usernamePath (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)

ParameterLocation
usernamePath (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)

ParameterLocation
idPath (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)

ParameterLocation
idPath (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)

ParameterLocation
idPath (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)

ParameterLocation
idPath (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)

ParameterLocation
codePath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (required)
idPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (required)
uidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
codePath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (required)
uidPath (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)

ParameterLocation
sidPath (required)
uidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
codePath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (required)
uidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (required)
uidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (required)
ridPath (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)

ParameterLocation
sidPath (required)
ridPath (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)

ParameterLocation
sidPath (required)
uidPath (required)
ridPath (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)

ParameterLocation
sidPath (required)
uidPath (required)
ridPath (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)

ParameterLocation
sidPath (required)
ridPath (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)

ParameterLocation
sidPath (required)
ridPath (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)

ParameterLocation
targetPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
cidPath (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)

ParameterLocation
cidPath (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)

ParameterLocation
cidPath (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)

ParameterLocation
cidPath (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)

ParameterLocation
cidPath (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)

ParameterLocation
cidPath (required)
ridPath (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)

ParameterLocation
cidPath (required)
ridPath (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)

ParameterLocation
cidPath (required)
ridPath (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)

ParameterLocation
cidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (required)
eidPath (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)

ParameterLocation
sidPath (required)
eidPath (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)

ParameterLocation
eidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (required)
idPath (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)

ParameterLocation
sidPath (required)
idPath (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)

ParameterLocation
idPath (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)

ParameterLocation
idPath (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)

ParameterLocation
idPath (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)

ParameterLocation
idPath (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)

ParameterLocation
cidPath (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)

ParameterLocation
cidPath (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)

ParameterLocation
widPath (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)

ParameterLocation
widPath (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)

ParameterLocation
widPath (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)

ParameterLocation
widPath (required)
tokenPath (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)

ParameterLocation
widPath (required)
tokenPath (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)

ParameterLocation
widPath (required)
tokenPath (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)

ParameterLocation
uidPath (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)

ParameterLocation
uidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
idPath (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)

ParameterLocation
idPath (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)

ParameterLocation
idPath (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)

ParameterLocation
cidPath (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)

ParameterLocation
cidPath (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)

ParameterLocation
cidPath (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/pinsbearer

Link to this operation · Python: chat.get_api_v1_channels_by_cid_pins(...) on an Instance

Authentication: Instance session (Bearer)

ParameterLocation
cidPath (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)

ParameterLocation
idPath (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)

ParameterLocation
idPath (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)

ParameterLocation
idPath (required)
emojiPath (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)

ParameterLocation
idPath (required)
emojiPath (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)

ParameterLocation
idPath (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)

ParameterLocation
idPath (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)

ParameterLocation
platformPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (required)
cidPath (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.

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)

ParameterLocation
cidPath (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)

ParameterLocation
sidPath (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)

ParameterLocation
sidPath (required)
iidPath (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)

ParameterLocation
iidPath (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)

ParameterLocation
codePath (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)

ParameterLocation
cidPath (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)

ParameterLocation
cidPath (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)

ParameterLocation
cidPath (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)

ParameterLocation
sidPath (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

typeFieldsDirect reply/event types observed
auth_tokencapabilities, fingerprint, mobile, notification_only, passive, tokenauth_error, auth_success, bonfire_notification_config, im_unread, user_joined
authpass, userauth_failed, auth_success, user_joined
bonfire_visibilityactive
setStatus
set_statuspersist, statusstatus_changed
getOnlinePlayersonlinePlayers
globalMessagecolor, messageglobalMessage
imageMessageurlimageMessage
getGlobalHistoryglobalHistory
typingtyping
stopTypingstopTyping
joinRoomroomerror, roomHistory
roomMessagecolor, message, reply_to, roomerror
call_usercallId, tocall_error, call_incoming
call_acceptcallId, tocall_accepted
call_signalcallId, signal, tocall_signal
call_endcallId, tocall_ended
mic_statemuted, tomic_state
set_activityactivityfriend_activity
voice_connect
voicemsg
user_updatechanged, previous_username, type, user, v
voice_soundroom, soundchat_error, voice_sound, voice_sound_failed
voice_disconnect
voice_callroom, tovoice_call_failed
voice_call_answeraccept, callId
voice_call_cancelcallId
hf_hellocaps, version
im_sendmessage, nonce, reply_to, status_reply, toim_ack, im_error
dm_typingto, typingdm_typing
chat_active
pingpong
chat_hellochat_ready
chat_sendattachments, channel, message, nonce, reply_to, serverchat_ack
chat_typingchannel, server, typingchat_typing
chat_readchannel, id
chat_presenceusernamepresence_update
set_rich_presenceactivity
clear_rich_presence
set_custom_statustext
chat_rtc_joinnonce, roomchat_rtc_joined
chat_rtc_publishnonce, room, sessionDescription, trackschat_rtc_published
chat_rtc_connectedroom
chat_rtc_subscribenonce, room, sourceschat_rtc_offer, chat_rtc_ready
chat_rtc_answernonce, session, sessionDescriptionchat_rtc_ready
chat_rtc_closenonce, room, trackschat_rtc_ready
chat_rtc_icenonce, roomchat_rtc_ready
chat_rtc_leave
arcade_joinversionarcade_denied, arcade_welcome
arcade_wheremachine
arcade_leave

Server event shapes

typeObserved fields
account_updatedfields
arcade_alerttext
arcade_announcenews
arcade_bundles_changed
arcade_convertedmachine, plays
arcade_deniedmessage, reason
arcade_kickedmessage, reason
arcade_noticenotice
arcade_purchaseid, plays, status
arcade_settingssettings
arcade_walletwallet
arcade_welcomefirstVisit, panel, settings, simVersion, staff, username, wallet
auth_errorerror
auth_failederror
auth_successdisabled_scopes, passive_supported, scopes, tos_required, user
balance_changeddelta
call_acceptedby, callId
call_endedby, callId
call_errorerror
call_incomingcallId, from
call_signalcallId, from, signal
chat_ackmessage, nonce
chat_call_stateanswered_at, ended, room, started_at, users, with
chat_channels_updatecategories, channels, server
chat_emojis_updateemojis, server
chat_ephemeralamount, body, channel, kind, server
chat_errordisabled_by_admin, error, nonce, request, required_scope
chat_identity_updateprevious_username, user
chat_member_updatechange, member, member_count, server, user_id, username
chat_members_staleserver
chat_mentionbody, channel, cid, from, pfp, server, sid
chat_messagemessage
chat_message_deletechannel, id, server
chat_message_updatemessage
chat_perms_changedserver
chat_pins_updatechannel, server
chat_reactionsadd, channel, emoji, id, reactions, server, user_id, username
chat_readyyou
chat_roles_updateroles, server
chat_rtc_joinediceServers, nonce, people, room
chat_rtc_offernonce, room, session, sessionDescription, tracks
chat_rtc_publishednonce, room, sessionDescription, tracks
chat_rtc_readyiceServers, nonce, room, session
chat_rtc_roompeople, room
chat_server_removedreason, server
chat_server_updateserver
chat_typingchannel, server, typing, username
chat_voice_statechannel, server, users
dm_typingfrom, typing
errordisabled_by_admin, error, required_scope, room
friend_activityactivity, started, username
friend_requestfrom
friend_request_acceptedby
game_consolechannel, instance, lines, server
game_linkedclaim, hint, instance, server
game_statuschannel, instance, last_seen, online, server, status
game_unlinkedinstance, server
globalHistorymessages
globalMessagecolor, message, rank, timestamp, user
group_removedroom
group_updategroup
im_ackdelivered, message, nonce
im_editedbody, edited_at, id, with
im_errorerror, nonce
im_receivedmessage
im_sentmessage
im_unreadcount
kickedreason, room
mail_receivedmail
mic_statefrom, muted
notificationbody, title
notification_newnotification, unread
notifications_updateddeleted, read, unread, unread_ids
onlinePlayersplayers
pong
presence_updatepresence, request, username
restrictionsdisabled_scopes, scopes
roomHistorymessages, room
roomMessagecolor, id, message, rank, room, timestamp, user
status_changedstatus, username
user_joinedrank, username
user_leftusername
voice_call_acceptedcallId, from, room
voice_call_answeredaccepted, by, callId
voice_call_endedcallId, reason
voice_call_failedreason, to
voice_call_incomingcallId, from, room
voice_call_ringingcallId, room, to
voice_closedreason
voice_openid, room
voice_soundby, sound
voice_sound_failedreason

Python transport dependency: websockets documentation. Packaging: Python Packaging User Guide.

More guides