Discord-API-Stuffs

⚙️ Discord API Stuffs

⚠️ Educational Purposes Only
This project is meant to document how the Discord client interacts with its API.
It is not intended for abuse, automation, alt generation, or anything against Discord’s Terms of Service.
Do not self-bot. Do not use this data maliciously.
This is just for learning, exploration, and testing.


📘 What is this?

Whenever I’m bored (which… is a lot), I open DevTools and poke around the Discord API to see what happens. This repo documents some of what I’ve discovered — especially request bodies (JSON) that aren’t easily found anywhere else.

ALSO I recommend you go to the discord api docs instead, although i did notice that this api like doc(s) has some stuff the one made by discord doesn’t.

Most endpoints were tested using Discord Canary, since I’m fancy like that.

Also if u want, check out the Discord APP Finder.


🧠 Why I Made This

I couldn’t find a simple and up-to-date resource with actual API request payloads — not even Discord’s official docs include this kind of stuff clearly.
So I made my own, in a way that’s easy enough for even a monkey to understand.


📦 Channels

Channel Creation

{
  "name": "<name>",
  "parent_id": "<category_id>",
  "type": <types below>,
  "topic": "",
  "icon_emoji": {
    "id": null,
    "name": "👋"
  },
  "bitrate": 64000,
  "user_limit": <1-99>,
  "nsfw": false,
  "flags": 4295063878,
  "rate_limit_per_user": <0-21600>
}

📢 FYI: If im not mistaken, the user limit is for voice chat channels, i have no idea what the rate limit per user is for.

Types:

Endpoint:
POST https://canary.discord.com/api/v9/guilds/<GUILD_ID>/channels


Channel Editing

{
  "id": "<channel_id>",
  "type": <list above>,
  "last_message_id": "<optional>",
  "flags": 0,
  "guild_id": "<guild_id>",
  "name": "<name>",
  "parent_id": "<category_id>",
  "rate_limit_per_user": 0,
  "topic": "",
  "position": 0,
  "permission_overwrites": [],
  "nsfw": false,
  "icon_emoji": {
    "id": null,
    "name": "👋"
  },
  "theme_color": null
}

❌ Editing doesn’t always work — may require proper headers or permissions.

Endpoint:
PATCH https://canary.discord.com/api/v9/channels/<CHANNEL_ID>


🌐 Server Creation

{
  "name": "<your server name>",
  "icon": "data:image/png;base64,<image>", // or null
  "guild_template_code": "2TffvPucqHkN", // default template
  "channels": [],
  "system_channel_id": null
}

Endpoint:
POST https://canary.discord.com/api/v9/guilds

Bonus Endpoint:
DELETE https://canary.discord.com/api/v9/guilds/<GUILD_ID>


🧑 Account Actions

Username Availability Check

{
  "username": "<desired_username>"
}

Endpoint:
POST https://discord.com/api/v9/unique-username/username-attempt-unauthed


Account Creation

{
  "fingerprint": "",
  "email": "<email>",
  "username": "<username>",
  "global_name": "<display_name>",
  "password": "<password>",
  "invite": null,
  "consent": true,
  "date_of_birth": "yyyy-mm-dd",
  "gift_code_sku_id": null,
  "promotional_email_opt_in": false
}

🔐 Fingerprint might come from captcha or session — not always needed in test scenarios.

Endpoint:
POST https://discord.com/api/v9/auth/register


Account Verification

{
  "token": "<verification_token>"
}

Endpoint:
POST https://discord.com/api/v9/auth/verify


Login

{
  "login": "<email>",
  "password": "<password>",
  "undelete": false,
  "login_source": null,
  "gift_code_sku_id": null
}

Endpoint:
POST https://canary.discord.com/api/v9/auth/login


Forgot Password

{
  "login": "<email>"
}

Endpoint:
POST https://canary.discord.com/api/v9/auth/forgot


🏠 HypeSquad Badge

{
  "house_id": 1
}

Endpoint:
POST https://canary.discord.com/api/v9/hypesquad/online


📹 Skip Video Quest

{
  "timestamp": 999
}

Endpoint:
POST https://canary.discord.com/api/v9/quests/<quest_id>/video-progress


💬 Group DM Creation

{
  "recipients": []
}

You can leave recipients empty to make a group DM with just yourself.

Endpoint:
POST https://canary.discord.com/api/v9/users/@me/channels

✉️ Invite Creation

{
  "max_age": 0,
  "max_uses": 0,
  "target_type": null,
  "temporary": true,
  "flags": 0
  "validate": "<invite code>" //run the first time, the second, flags are added and validate is removed
}

Endpoint: POST https://canary.discord.com/api/v9/channels/<channel_id>/invites

Yes, channel, not guild, im assuming in that way u can invite someone to a dm?? but idk


🧪 Notes


This is a learning project only.
It is not affiliated with or endorsed by Discord.
You are responsible for how you use this data. Use it wisely and ethically.


💡 Contributions

Found a new payload or experimental feature?
Feel free to submit a PR or open an issue to contribute.