Documentation

Servers

Server CRUD, settings, ownership utilities, and server-scoped management endpoints.

Copy page

Overview

Server endpoints manage RestoreCord server configurations. CRUD endpoints support scoped API keys with READ_SERVERS and WRITE_SERVERS. Several helper routes are dashboard utilities using the generic authenticated account middleware and should be treated separately from the public automation API.

Endpoint group
GET|POST /api/v3/servers
Auth
Session or API key
Notes
List and create server configurations.
Endpoint group
GET|PATCH|DELETE /api/v3/servers/{serverId}
Auth
Session or API key
Notes
Read, update, and delete a server. Some update fields are plan or owner gated.
Endpoint group
GET /api/v3/servers/{serverId}/channels
Auth
Authenticated account
Notes
Dashboard helper route using the configured bot; no API-key permission bit is declared in the handler.
Endpoint group
GET /api/v3/servers/{serverId}/roles
Auth
Authenticated account
Notes
Dashboard helper route using the configured bot; no API-key permission bit is declared in the handler.
Endpoint group
GET /api/v3/servers/{serverId}/bot/validate
Auth
Authenticated account
Notes
Dashboard helper route that validates bot and guild access; no API-key permission bit is declared in the handler.
Endpoint group
GET|POST|DELETE /api/v3/servers/{serverId}/permissions
Auth
Authenticated account with settings access
Notes
Server permission-entry helper; no API-key permission bit is declared in the handler.

Server-scoped paths use the internal numeric `servers[].id` value as serverId. Discord guild ids remain `guildId` fields and body values.


List Servers

List owned servers and servers shared with the authenticated account. Shared entries include effective sub-user permissions and the owner's plan role.

GET/api/v3/servers

List servers

Returns owned and shared RestoreCord server configurations.

API key permission: READ_SERVERS

Example response JSON
{
  "success": true,
  "servers": [
    {
      "id": 42,
      "name": "community",
      "guildId": "123456789012345678",
      "roleId": "987654321098765432",
      "picture": "https://imagedelivery.net/.../1024X1024",
      "description": "Main community server",
      "bgImage": null,
      "banner": null,
      "createdAt": "2026-06-07T10:30:00.000Z",
      "customBotId": 12,
      "pullTimeout": null,
      "pulling": false,
      "importing": false,
      "groupName": null,
      "vpncheck": true,
      "blockAlts": false,
      "blockWireless": false,
      "passwordLocked": false,
      "captcha": true,
      "verified": true,
      "unlisted": false,
      "private": false,
      "nsfw": false,
      "discovery": false,
      "isShared": false,
      "accessType": "owner",
      "permissions": null,
      "ownerRole": "business"
    }
  ],
  "total": 1,
  "groups": {}
}

Response Fields

Field
servers[].id
Type
number
Notes
Internal RestoreCord server id.
Field
servers[].guildId
Type
string
Notes
Discord guild id.
Field
servers[].roleId
Type
string
Notes
Verified role id.
Field
servers[].accessType
Type
string
Notes
owner or sub-user.
Field
servers[].permissions
Type
array | null
Notes
Effective sub-user permissions, null for owners.
Field
groups
Type
object
Notes
User-defined dashboard server grouping map.

Create Server

Create a server configuration using a custom bot and Discord role ids. The handler validates Discord id formats, checks duplicate server names/guilds/role ids, enforces plan server limits, and starts the bot service asynchronously.

POST/api/v3/servers

Create server

Create a RestoreCord server configuration.

guildIdRequired
Location
body
Type
string
Discord guild id.
roleIdRequired
Location
body
Type
string
Verified role id.
serverNameRequired
Location
body
Type
string
3-99 characters, must start with a letter.
customBotIdRequired
Location
body
Type
string
Discord client id of a custom bot owned by the account.
roleModeOptional
Location
body
Type
number
Default
0
0 = give role, 1 = remove role, 2 = both.
unverifiedRoleIdOptional
Location
body
Type
string
Required when `roleMode` is 1 or 2.

API key permission: WRITE_SERVERS

Example request JSON
{
  "guildId": "123456789012345678",
  "roleId": "987654321098765432",
  "serverName": "community",
  "customBotId": "555555555555555555",
  "roleMode": 0
}
Example response JSON
{
  "success": true,
  "message": "Server created successfully.",
  "server": {
    "id": 42,
    "name": "community",
    "guildId": "123456789012345678",
    "roleId": "987654321098765432",
    "customBotId": 12
  }
}

Plan Limits

Plan
Free
Server limit
1
Plan
Premium
Server limit
5
Plan
Business
Server limit
50
Plan
Enterprise
Server limit
50

Get Server

Return a detailed server configuration. Owners and sub-users with any access can read server details. Firewall objects are only included when the caller has firewall access.

GET/api/v3/servers/{serverId}

Get server

Returns detailed settings and access context.

serverIdRequired
Location
path
Type
string
Internal RestoreCord server id.

API key permission: READ_SERVERS

Example response JSON
{
  "success": true,
  "server": {
    "name": "community",
    "guildId": "123456789012345678",
    "roleId": "987654321098765432",
    "unverifiedRoleId": null,
    "roleMode": 0,
    "customBotId": 12,
    "redirectUrl": null,
    "vpncheck": true,
    "blockAlts": false,
    "blockWireless": false,
    "passwordLocked": false,
    "ipLogging": true,
    "captcha": true,
    "additionalPullServers": [],
    "discovery": []
  },
  "access": {
    "isOwner": true,
    "permissions": []
  },
  "botInfo": {
    "id": 12,
    "clientId": "555555555555555555"
  }
}

The exact get-server response includes many settings and media URLs assembled by local helpers. Treat the example as representative and rely on field presence checks for dashboard-only settings.


Update Server

Patch server settings. The validation schema is intentionally broad because the dashboard uses this route for identity, branding, security, feature flags, discovery, permission entries, firewall shortcut actions, and additional pull servers.

PATCH/api/v3/servers/{serverId}

Update server

Update any supplied server settings.

serverIdRequired
Location
path
Type
string
Internal RestoreCord server id.
nameOptional
Location
body
Type
string
3-99 chars, starts with a letter, letters/digits/spaces/underscore/hyphen/period only.
guildIdOptional
Location
body
Type
string
New Discord guild id. Owner only.
roleIdOptional
Location
body
Type
string
New verified role id. Owner only.
descriptionOptional
Location
body
Type
string | null
Max 500 characters.
redirectUrlOptional
Location
body
Type
string | null
HTTP/HTTPS URL or empty string.
vpncheckOptional
Location
body
Type
boolean
Enable VPN/proxy blocking.
blockAltsOptional
Location
body
Type
boolean
Enable alternate account blocking.
blockWirelessOptional
Location
body
Type
boolean
Enable wireless/carrier IP blocking.
passwordLockedOptional
Location
body
Type
boolean
Require firewall password flow.
ipLoggingOptional
Location
body
Type
boolean
Enable IP logging where plan allows it.
captchaOptional
Location
body
Type
boolean
Enable CAPTCHA verification.
minAccountAgeOptional
Location
body
Type
number | null
0-365 days.
roleModeOptional
Location
body
Type
number
0, 1, or 2.
unverifiedRoleIdOptional
Location
body
Type
string | null
Unverified role id, or null.
additionalPullServersOptional
Location
body
Type
array
Up to 25 additional pull server configs. Owner only; Business+ in source.
pictureOptional
Location
body
Type
string
Base64 data URL or `delete`.
backgroundOptional
Location
body
Type
string
Base64 data URL or `delete`; Business+.
bannerOptional
Location
body
Type
string
Base64 data URL or `delete`; Business+.
permissionOptional
Location
body
Type
object
Permission helper object used by dashboard.
firewallRuleOptional
Location
body
Type
object
Legacy dashboard shortcut. Dedicated firewall endpoints are preferred.
firewallPasswordOptional
Location
body
Type
object
Legacy dashboard shortcut. Dedicated firewall endpoints are preferred.

API key permission: WRITE_SERVERS and, for firewall shortcut updates with API keys, SERVER_FIREWALL.

Example request JSON
{
  "description": "Main community verification",
  "vpncheck": true,
  "captcha": true,
  "minAccountAge": 7
}
Example response JSON
{
  "success": true,
  "message": "Server settings updated successfully.",
  "server": {
    "name": "community",
    "guildId": "123456789012345678",
    "roleId": "987654321098765432",
    "description": "Main community verification",
    "vpncheck": true,
    "captcha": true,
    "minAccountAge": 7
  }
}

Update Gates

Field/action
guildId, roleId
Gate
Owner only.
Field/action
background, banner
Gate
Business or Enterprise.
Field/action
additionalPullServers
Gate
Owner only and Business or Enterprise.
Field/action
Firewall shortcut objects
Gate
SERVER_FIREWALL when using API key auth.
Field/action
autoAddMember / additional pull servers
Gate
Require guilds.join OAuth scope in source.

Delete Server

Delete a server and associated members, firewall data, auth tokens, permissions, migrations, discovery records, feedback, and related rows. Active migrations block deletion.

DELETE/api/v3/servers/{serverId}

Delete server

Permanently delete one owned server configuration and associated data.

serverIdRequired
Location
path
Type
string
Internal RestoreCord server id.

API key permission: WRITE_SERVERS

Example response JSON
{
  "success": true,
  "message": "Server deleted successfully."
}

Permission Helpers

These helpers are used by the dashboard for server permission entries.

GET/api/v3/servers/{serverId}/permissions

Get permission entries

Return server permission entries.

serverIdRequired
Location
path
Type
string
Internal RestoreCord server id.
POST/api/v3/servers/{serverId}/permissions

Set permission entry

Create or update permissions for a Discord user or role id.

serverIdRequired
Location
path
Type
string
Internal RestoreCord server id.
typeRequired
Location
body
Type
string
`user` or `role`.
idRequired
Location
body
Type
string
Discord user or role id.
permissionsRequired
Location
body
Type
string[]
Permission names accepted by the local server permission utility.
DELETE/api/v3/servers/{serverId}/permissions

Delete permission entry

Remove permissions for a Discord user or role id.

serverIdRequired
Location
path
Type
string
Internal RestoreCord server id.
typeRequired
Location
body
Type
string
`user` or `role`.
idRequired
Location
body
Type
string
Discord user or role id.

Public and Setup Helpers

These routes exist locally but are not general server-management API endpoints.

Endpoint
GET /api/v3/servers/lookup?id={guildIdOrName}
Auth
Public
Purpose
Looks up a public verification target by id or name. Returns only data needed by public flows.
Endpoint
POST /api/v3/servers/{serverId}/validate
Auth
Public/session flow
Purpose
Validates a password for a password-locked server and may create a short password session.
Endpoint
POST /api/v3/servers/verify-ownership/check and POST /api/v3/servers/verify-ownership/generate-url
Auth
Authenticated account
Purpose
Ownership verification setup helpers present in local routes.
Endpoint
DELETE /api/v3/servers/analytics/cache
Auth
Authenticated/internal
Purpose
Analytics cache helper present in local routes; not documented as a public integration endpoint.

Use the dedicated API reference pages for members, migrations, snapshots, firewall, and webhooks. Those server-scoped features live under server paths but have their own contracts.


Status and Errors

Status/code
200
When it appears
Successful read, update, delete, helper, or no-data response.
Status/code
201
When it appears
Server created.
Status/code
400 MISSING_FIELD
When it appears
Required create, permission, or password-validation field missing.
Status/code
400 INVALID_INPUT / VALIDATION_ERROR
When it appears
Bad Discord id, server name, URL, role mode, OAuth payload, or update schema.
Status/code
401 UNAUTHORIZED
When it appears
Missing auth or invalid configured bot token in helper routes.
Status/code
403 FORBIDDEN / INSUFFICIENT_PERMISSIONS
When it appears
Missing API key permission, missing sub-user permission, owner-only field mutation, plan-gated field, or Discord permission failure.
Status/code
404 NOT_FOUND
When it appears
Server, bot, guild, role, or helper resource not found or inaccessible.
Status/code
409 DUPLICATE_RESOURCE
When it appears
Duplicate server name, guild id, or role id.
Status/code
409 RESOURCE_IN_USE
When it appears
Deleting a server with active migrations.
Status/code
429 RATE_LIMITED
When it appears
Password validation or helper rate limits.
Status/code
502 EXTERNAL_SERVICE_ERROR
When it appears
Discord or bot-service failure while fetching helper data.
  • Use internal RestoreCord server ids in {serverId} path params; use guildId only where a body or query field explicitly asks for a Discord guild id.
  • Use dedicated firewall endpoints instead of the PATCH server firewall shortcut objects for new integrations.
  • Handle warnings from channel/role helper routes; some Discord failures return successful empty lists with a warning to support manual entry in the dashboard.