Developer

API Reference

RestoreCord REST API reference covering the base URL, API key authentication and permissions, response format, error codes and every /api/v3 endpoint group.

Overview

RestoreCord exposes authenticated /api/v3 endpoints for account data, custom bots, servers, migrations, members, snapshots, firewall, analytics, and webhook configuration.

Base URL

https://restorecord.com/api/v3

Examples in the category pages show full paths beginning with /api/v3. Use JSON request bodies unless the endpoint explicitly documents Server-Sent Events or asset responses.

Authentication

Every endpoint in this reference authenticates with an API key sent in the Authorization header.

Authorization: Bearer <keyId>.<secret>

API Key Permissions

PermissionUsed by
READ_ACCOUNTGET /api/v3/users limited account payload.
READ_SERVERSServer list/detail/status reads.
WRITE_SERVERSServer create/update/delete.
READ_MEMBERSMember lists and lookups.
WRITE_MEMBERSMember deletion and unauthorized cleanup.
READ_BOTSBot list/detail reads.
WRITE_BOTSBot create/update/delete.
READ_ANALYTICSMember and firewall analytics.
CREATE_BACKUPSSnapshot creation and snapshot metadata/migration operations.
RESTORE_BACKUPSSnapshot list/detail/delete/restore and role-restore operations.
SERVER_PULLSingle-member pull operations.
SERVER_FIREWALLFirewall rules, passwords, logs, bypasses, and ban import.

Create, rotate, and revoke API keys from the RestoreCord dashboard. Use the API Keys guide for credential format, permission names, and safe usage guidance.

Response Format

Most endpoints return JSON with success: true on success. Some endpoints intentionally differ: member pull returns Server-Sent Events, preview attachment endpoints can return asset responses, and Discord helper routes may pass through Discord-shaped objects.

{
  "success": true,
  "message": "Optional message",
  "data": {}
}
StatusMeaning
200Successful read, update, delete, or action start.
201Resource created or async job accepted.

Errors

Errors generally return an error object with a string code and message. Validation errors may include field-level details.

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Validation failed",
    "errors": {
      "fieldName": {
        "_errors": ["Specific validation error"]
      }
    }
  }
}
Code/statusTypical cause
400 INVALID_INPUT / VALIDATION_ERRORBad ids, invalid JSON body, unsupported enum, invalid URL, invalid search value, or failed validation.
400 MISSING_FIELDRequired body or query field omitted.
401 UNAUTHORIZED / INVALID_CREDENTIALSMissing, invalid, revoked, or expired API key, or an invalid Discord bot token.
403 FORBIDDEN / INSUFFICIENT_PERMISSIONSPlan gate, owner-only action, sub-user permission missing, API key permission missing, dashboard-only action, or Discord permission failure.
404 NOT_FOUNDResource missing or intentionally hidden because the caller lacks access.
409 DUPLICATE_RESOURCE / RESOURCE_IN_USEUniqueness conflict or delete blocked by active dependency.
429 RATE_LIMITEDPer-route rate limit or external Discord rate limit.
500/502/503Internal error or dependent service failure.

Endpoint Groups

Route Coverage

This reference lists every supported endpoint.

Route familyWhere documented
/api/v3/usersAccount.
/api/v3/bots*Bots.
/api/v3/servers/status and /api/v3/servers/{serverId}/migrations*Migrations.
/api/v3/servers*Servers plus Members, Firewall, Analytics, Snapshots, and Webhooks for server-scoped feature routes.
/api/v3/members*Members.
/api/v3/snapshots*Snapshots.

Some helper routes return raw Discord API objects or other nested payloads that can change. The pages call this out instead of listing every field.

Integration Notes

  • Use the RestoreCord server id in {serverId} path params; use guildId fields for Discord guild ids.
  • Treat API keys as scoped credentials. A key without the required permission receives 403.
  • Handle absent optional fields. Plan gates and privacy gates remove fields rather than returning placeholder values.
  • For member pulls, consume text/event-stream instead of JSON.
  • For webhooks, verify X-Signature-256 against the raw request body and keep receivers idempotent.
  • Only use the routes documented in this reference for API automation.

On this page