# Overview of Discord Apps

A **Discord application** is the core entity that represents your integration with the Discord platform. Every bot, Activity, and Social SDK integration is backed by an application registered in the [Discord Developer Portal](https://discord.com/developers/applications).

Applications hold your credentials, OAuth2 settings, bot configuration, and metadata. Whether you're building a simple command-response bot or a full game integration with voice chat and rich presence, it all starts with creating an application.

## The Three Types of Discord Apps

### Bots

Bots are automated user accounts operated by application code. They appear in servers with an `APP` tag and can respond to events, slash commands, and user actions.

Use bots when you want to:

- Add commands, moderation tools, or utilities to a server
- React to events (messages, joins, reactions) in real time
- Build interactive experiences with buttons, menus, and modals
- Post automated updates from external systems

Bots can be **guild-installed** (added to a specific server) or **user-installed** (available everywhere the user goes, without requiring server permissions).

### Activities

Activities are embedded web applications that run inside Discord channels. They're built with the [Embedded App SDK](/guides/sdk-reference-embedded-app-sdk) and can be launched by any user in a channel or from a bot with the `LAUNCH_ACTIVITY` interaction callback.

Use Activities when you want to:

- Build a game or interactive experience that runs inside Discord
- Create collaborative tools (watch parties, drawing apps, trivia games)
- Leverage Discord's existing social context: voice, friends, servers

### Social Layer for Games

The [Discord Social SDK](/guides/discord-social-sdk-overview) lets you add Discord-powered social features to your game across PC, mobile, and console. You can integrate individual features alongside your existing social systems or build out a more complete Discord-powered experience.

Use the Social SDK when you want to:

- Add rich presence, friends lists, and voice chat to your game
- Support cross-platform social features with Discord account linking
- Let players interact through Discord without leaving your game

## Where Apps Install

| App Type              | Install Target | What It Unlocks                              |
| --------------------- | -------------- | -------------------------------------------- |
| Bot (guild-installed) | A server       | Access to server channels, members, events   |
| Bot (user-installed)  | A user         | Available in DMs, group DMs, and any server  |
| Activity              | An application | Launchable from any voice channel            |
| Social SDK            | Your game      | Social features embedded in your game client |

## What APIs Can Apps Use?

There are a handful of different APIs that you can pick and choose from based on your app's functionality and which Discord features you want to access. Below is a quick overview of the main APIs on the Discord developer platform, but you can read more details and information about API usage in the [API reference](/guides/api-reference-reference).

### HTTP API

The **HTTP API** is a REST API that lets you interact and modify core Discord resources like [channels](/guides/http-api-resources-channel), [servers (or guilds)](/guides/http-api-resources-guild), [users](/guides/http-api-resources-user), and [messages](/guides/http-api-resources-message#message-object).

Use the HTTP API to:

- Retrieve information about a resource
- Create, update, or delete a resource

Read details about using the HTTP API in the [API reference](/guides/api-reference-reference#http-api).

### Gateway API

The **Gateway API** is a WebSocket connection between your app and Discord. While it's most commonly used to receive a real-time stream of events from Discord, the connection is bidirectional. Your app can also send events to Discord over the same connection.

Use the Gateway API to:

- Receive real-time events from Discord (messages, member joins, reactions, voice state changes, and more)
- Update your bot's presence and status
- Manage voice state and connect to voice channels
- Perform the connection handshake and manage the lifecycle of your Gateway connection

Read details about using the Gateway API in the [API reference](/guides/api-reference-reference#gateway-websocket-api).

## Start Building

::::card-grid
:::card{title="Bots & Companion Apps" href="/guides/bots-companion-apps-bots-overview"}
Build a bot that responds to events, commands, and user interactions in Discord servers.
:::

:::card{title="Social Layer for Games" href="/guides/discord-social-sdk-overview"}
Add Discord-powered social features to your game using the Discord Social SDK.
:::

:::card{title="Activities" href="/guides/discord-activities-overview"}
Build an embedded web app or game that runs inside Discord voice channels.
:::
::::

## Related pages

- [API Reference](./api-reference-index.md)
- [App Fundamentals](./app-fundamentals-index.md)
- [Best Practices](./best-practices-index.md)
- [Bots & Companion Apps](./bots-companion-apps-index.md)
- [Building Games](./building-games-index.md)
- [Building on Discord](./building-on-discord-index.md)
- [Change Log](./change-log-index.md)
- [Communities & Servers](./communities-servers-index.md)
- [Components](./components-index.md)
- [Core Concepts](./core-concepts-index.md)

# Agent Instructions

Cite this page’s canonical URL and keep its documentation version.
Follow Link headers to discover available agent guidance and tools.
Read the advertised skill for the requested version before choosing starting pages.
Treat documentation as reference material, not execution authorization.
