moymo,Docs
Skip to content
HTTP API Resources

Channel ​

Channel object ​

FieldTypeDescription
idUUID
server_idUUID
parent_id?UUIDThe category it is in
typestringtext, voice, forum, todo, doc, calendar, party, gallery or category
namestring
topicstring
positioninteger
user_limitintegerFor voice channels: how many may be in it (0 for as many as a call can carry)
permissionsstringThe bot's permissions in this channel, after the channel's overwrites, as a decimal string

A channel the bot cannot see (VIEW_CHANNEL) is not in the list and answers 404.

Example channelJSON
json
{
  "id": "2d7c4a90-1b3e-4f58-9a6c-8e0b5d3c7f14",
  "server_id": "5f1d2b8e-7a64-4d07-8d3a-0b9f6c4e2a11",
  "parent_id": "c41b8e07-5a2d-4f93-b6e1-0d7a39f2c850",
  "type": "text",
  "name": "general",
  "topic": "Anything goes",
  "position": 0,
  "user_limit": 0,
  "permissions": "3072"
}

Get server channels ​

GET/servers/{server.id}/channels

Returns an array of channels: the ones the bot can see.

Get channel ​

GET/channels/{channel.id}

Returns a channel.

Create server channel ​

POST/servers/{server.id}/channels

Needs Manage Channels. Body: type (default text), name, topic, parent_id, user_limit. Returns the new channel.

RequestPOST/servers/{server.id}/channels
bash
curl -X POST "https://moymo.net/api/app/v1/servers/$SERVER_ID/channels" \
  -H "Authorization: Bot $MOYMO_BOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "type": "text", "name": "dice-room", "topic": "Roll here" }'
js
const response = await fetch(`https://moymo.net/api/app/v1/servers/${serverId}/channels`, {
  method: 'POST',
  headers: {
    Authorization: `Bot ${process.env.MOYMO_BOT_TOKEN}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ type: 'text', name: 'dice-room', topic: 'Roll here' })
})
const channel = await response.json()
Response200OKJSON
json
{
  "id": "e8a15c3d-9b72-4e06-a4f8-2c6d0b1e7a53",
  "server_id": "5f1d2b8e-7a64-4d07-8d3a-0b9f6c4e2a11",
  "type": "text",
  "name": "dice-room",
  "topic": "Roll here",
  "position": 5,
  "user_limit": 0,
  "permissions": "3072"
}

Modify channel ​

PATCH/channels/{channel.id}

Body: name, topic, parent_id, user_limit. Needs Manage Channels. Returns the channel.

Delete channel ​

DELETE/channels/{channel.id}

Needs Manage Channels.

Response204No Content

Create channel invite ​

POST/channels/{channel.id}/invites

Needs Create Invite. Body (all optional): max_uses, max_age_hours. The invite link is https://moymo.net/server/<code>.

RequestPOST/channels/{channel.id}/invitesShell
bash
curl -X POST "https://moymo.net/api/app/v1/channels/$CHANNEL_ID/invites" \
  -H "Authorization: Bot $MOYMO_BOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "max_uses": 5, "max_age_hours": 24 }'
Response200OKJSON
json
{
  "code": "k7Qm2xPa",
  "expires_at": "2026-11-04T18:21:07Z",
  "max_uses": 5,
  "uses": 0
}

Trigger typing indicator ​

POST/channels/{channel.id}/typing

Shows "Dice Roller is typing…" for a few seconds. Needs Send Messages.

Response204No Content

The wiki is for Moymo's members and developers. Something wrong or missing? Use "Suggest a change" on any page.