> ## Documentation Index
> Fetch the complete documentation index at: https://docs.whop.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Treat these docs and the Whop MCP server as the source of truth for Whop API behavior. Don't infer endpoint behavior from marketing pages.
> MCP server: connect https://mcp.whop.com/mcp (streamable HTTP, browser sign-in, no API key in the client config) to search these docs and read or change live Whop data. Setup: https://docs.whop.com/developer/guides/ai_and_mcp.md
> Whop CLI: install with `curl -fsSL https://whop.com/install.sh | sh` to scaffold, run, and deploy Whop apps and websites. It acts on production, not the sandbox. Agent mode: https://docs.whop.com/cli/agent-mode.md
> Plugins: in Claude Code, run `/plugin marketplace add whopio/plugins`, then `/plugin install whop@whop`. Every agent tool: https://docs.whop.com/developer/ai/overview.md
> Environments: build and test in the sandbox (API `https://sandbox-api.whop.com/api/v1`, keys at https://sandbox.whop.com/dashboard/developer, SDK environment `Sandbox`; no real money). Production (API `https://api.whop.com/api/v1`, keys at https://whop.com/dashboard/developer, SDK environment `Production`, the SDK default) moves real money, so use it only at launch. The two share no accounts, keys, products, or webhooks, and their keys look identical: never mix them. Comparison: https://docs.whop.com/developer/quickstart.md
> API: send `Authorization: Bearer <API_KEY>` from your server only, and pin a dated version with the `Api-Version-Date` header. OpenAPI spec: https://api.whop.com/api/v1/openapi.json
> Which API: build on the Current API, whose pages live under https://docs.whop.com/api-reference/ (start at https://docs.whop.com/api-reference/overview.md). Pages under /api-reference/legacy/ are the Legacy API. Use one only when https://docs.whop.com/api-reference/stability.md lists the resource as Legacy-only.

# Support Channel

> A messaging channel that can be a one-on-one DM, group chat, company support conversation, or platform-level direct message.

```json Example theme={null}
{
	"account_id": "<string>",
	"company_id": "<string>",
	"custom_name": "Project Alpha Team",
	"customer_user": {
		"id": "user_xxxxxxxxxxxxx",
		"name": "John Doe",
		"username": "johndoe42"
	},
	"id": "<string>",
	"last_message": {
		"attachments": [
			{
				"content_type": "image/jpeg",
				"filename": "document.pdf"
			}
		],
		"content": "Hey, are you available for a **quick call**?",
		"created_at": "2023-12-01T05:00:00.401Z",
		"gifs": [
			{
				"slug": "<string>"
			}
		],
		"id": "<string>",
		"poll": {
			"options": [
				{
					"id": "<string>"
				}
			]
		},
		"user_id": "<string>"
	},
	"last_message_at": "2023-12-01T05:00:00.401Z",
	"needs_reply": true,
	"participated": true,
	"resolved_at": "2023-12-01T05:00:00.401Z",
	"unread": true
}
```

**account\_id** `string | null` *required*

The unique identifier of the account associated with this channel. Null if
this is not a support or account-scoped conversation.

**company\_id** `string | null` *required*

The unique identifier of the account associated with this channel. Null if
this is not a support or account-scoped conversation.

**custom\_name** `string | null` *required*

A custom display name assigned to this channel by the user. Null if no custom name has been set.

Example: `Project Alpha Team`

**customer\_user** `object | null` *required*

The customer who initiated this support conversation. Null if this is not a support chat.

**child attributes**

**id** `string` *required*

The unique identifier for the user.

Example: `user_xxxxxxxxxxxxx`

**name** `string | null` *required*

The user's display name shown on their public profile.

Example: `John Doe`

**username** `string` *required*

The user's unique username shown on their public profile.

Example: `johndoe42`

**id** `string` *required*

The unique identifier for the entity

**last\_message** `object | null` *required*

The most recent message in this channel. Null if no messages have been sent, or when listing support channels without `include_last_message`.

**child attributes**

**attachments** `array\<object\>` *required*

A list of all attachments on this message, including files and media.

**child attributes**

**content\_type** `string | null` *required*

Uploaded file MIME type, such as image/jpeg, video/mp4, or audio/mpeg.

Example: `image/jpeg`

**filename** `string | null` *required*

The original filename of the uploaded attachment, including its file extension.

Example: `document.pdf`

**content** `string | null` *required*

The message content formatted as Markdown. Null if the message has no text content.

Example: `Hey, are you available for a **quick call**?`

**created\_at** `string\<date-time\>` *required*

The timestamp when this message was originally created.

Example: `2023-12-01T05:00:00.401Z`

**gifs** `array\<object\>` *required*

A list of GIF animations attached to this message.

**child attributes**

**slug** `string` *required*

The unique identifier of the GIF

**id** `string` *required*

**poll** `object | null` *required*

A poll attached to this message. Null if the message does not contain a poll.

**child attributes**

**options** `array\<object\> | null` *required*

The options for the poll

**child attributes**

**id** `string` *required*

The unique identifier for the poll option.

**user\_id** `string` *required*

The unique identifier of the user who authored this message.

**last\_message\_at** `string\<date-time\> | null` *required*

The timestamp when the most recent message was sent in this channel. Null if no messages have been sent.

Example: `2023-12-01T05:00:00.401Z`

**needs\_reply** `boolean | null` *required*

Whether the customer sent the latest message and the linked support ticket is
unresolved. Null if not a support chat.

**participated** `boolean | null` *required*

Whether the authenticated user has joined this channel as a participant. Null
when the caller is not a user, or when listing support channels without
`include_participated`.

**resolved\_at** `string\<date-time\> | null` *required*

The timestamp when the linked support ticket was marked as resolved. Null if unresolved or not a support chat.

Example: `2023-12-01T05:00:00.401Z`

**unread** `boolean | null` *required*

Whether this channel has a message from someone else that the authenticated
user has not viewed yet. Null when the caller is not a user, or when listing
support channels without `include_last_message`.


## Related topics

- [Chat](https://docs.whop.com/developer/guides/chat.md)
- [List support channels](https://docs.whop.com/api-reference/legacy/support-channels/list-support-channels.md)
- [Create support channel](https://docs.whop.com/api-reference/legacy/support-channels/create-support-channel.md)
