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

> ## Agent Instructions
> Use Stable documentation by default. Honor an explicit Beta request or a URL under /docs/beta/. If the requested version conflicts with the installed CLI package or API origin, clarify the target before writing integration code.
> Pages under /docs/beta/ document Beta; other product pages document Stable. Keep the CLI package, commands, API origin, and credentials within the selected version. State the documentation version in your answer.
> For MCP search, always pass version: Stable or version: Beta. Unfiltered search mixes both versions. For filesystem reads, keep Beta queries under /beta/ and exclude /beta/ from Stable queries; discover paths before reading them.
> The public docs base is https://photon.codes/docs. Convert MCP page paths to public URLs under that base, preserving /beta/ when present. Read https://photon.codes/docs/skill.md for version selection and https://photon.codes/docs/llms.txt for the version indexes.

# createEmoji

```typescript
createEmoji(customEmoji?: T): { 100: EmojiValue; angry: EmojiValue; arrow_down: EmojiValue; arrow_left: EmojiValue; arrow_right: EmojiValue; arrow_up: EmojiValue; balloon: EmojiValue; beer: EmojiValue; bell: EmojiValue; black_circle: EmojiValue; blue_circle: EmojiValue; boom: EmojiValue; bug: EmojiValue; calendar: EmojiValue; chart_down: EmojiValue; chart_up: EmojiValue; check: EmojiValue; clap: EmojiValue; clipboard: EmojiValue; clock: EmojiValue; cloud: EmojiValue; coffee: EmojiValue; confetti: EmojiValue; confused: EmojiValue; cool: EmojiValue; cry: EmojiValue; email: EmojiValue; exclamation: EmojiValue; eyes: EmojiValue; facepalm: EmojiValue; file: EmojiValue; fire: EmojiValue; folder: EmojiValue; gear: EmojiValue; gift: EmojiValue; green_circle: EmojiValue; grimace: EmojiValue; hammer: EmojiValue; heart: EmojiValue; hourglass: EmojiValue; hug: EmojiValue; inbox: EmojiValue; info: EmojiValue; key: EmojiValue; laugh: EmojiValue; lightbulb: EmojiValue; lightning: EmojiValue; link: EmojiValue; lock: EmojiValue; love_eyes: EmojiValue; medal: EmojiValue; megaphone: EmojiValue; memo: EmojiValue; mind_blown: EmojiValue; muscle: EmojiValue; neutral: EmojiValue; ok_hand: EmojiValue; outbox: EmojiValue; package: EmojiValue; party: EmojiValue; pin: EmojiValue; pizza: EmojiValue; point_down: EmojiValue; point_left: EmojiValue; point_right: EmojiValue; point_up: EmojiValue; pray: EmojiValue; question: EmojiValue; rain: EmojiValue; rainbow: EmojiValue; raised_hands: EmojiValue; red_circle: EmojiValue; refresh: EmojiValue; relieved: EmojiValue; rocket: EmojiValue; rolling_eyes: EmojiValue; sad: EmojiValue; shrug: EmojiValue; sick: EmojiValue; sleeping: EmojiValue; smile: EmojiValue; snow: EmojiValue; sparkles: EmojiValue; speech_bubble: EmojiValue; star: EmojiValue; stop: EmojiValue; sun: EmojiValue; surprised: EmojiValue; thinking: EmojiValue; thumbs_down: EmojiValue; thumbs_up: EmojiValue; trophy: EmojiValue; unlock: EmojiValue; warning: EmojiValue; wave: EmojiValue; white_circle: EmojiValue; wink: EmojiValue; worried: EmojiValue; wrench: EmojiValue; x: EmojiValue; yellow_circle: EmojiValue; zany: EmojiValue } & { custom: (name: string) => EmojiValue } & unknown
```

Create a type-safe emoji helper with custom emoji.

Returns immutable singleton EmojiValue objects that support:

* Object identity comparison (`event.emoji === emoji.thumbs_up`)
* Template string interpolation (`${emoji.thumbs_up}` → "\{\{emoji:thumbs\_up}}")

Custom emoji are automatically registered with the default resolver,
so placeholders will convert correctly in messages.

```typescript
// First, extend the CustomEmojiMap type (usually in a .d.ts file)
declare module "chat" {
  interface CustomEmojiMap {
    unicorn: EmojiFormats;
    company_logo: EmojiFormats;
  }
}

// Then create the emoji helper with your custom emoji
const emoji = createEmoji({
  unicorn: { slack: "unicorn_face", gchat: "🦄" },
  company_logo: { slack: "company", gchat: "🏢" },
});

// Object identity works for comparisons
if (event.emoji === emoji.unicorn) { ... }

// Template strings work for messages
await thread.post(`${emoji.unicorn} Magic!`);
// Slack: ":unicorn_face: Magic!"
// GChat: "🦄 Magic!"
```

## Parameters

<ResponseField name={"customEmoji"} type={"T"} />

## Returns

<code>{"{ 100: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; angry: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; arrow_down: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; arrow_left: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; arrow_right: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; arrow_up: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; balloon: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; beer: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; bell: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; black_circle: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; blue_circle: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; boom: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; bug: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; calendar: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; chart_down: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; chart_up: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; check: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; clap: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; clipboard: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; clock: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; cloud: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; coffee: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; confetti: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; confused: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; cool: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; cry: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; email: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; exclamation: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; eyes: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; facepalm: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; file: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; fire: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; folder: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; gear: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; gift: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; green_circle: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; grimace: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; hammer: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; heart: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; hourglass: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; hug: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; inbox: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; info: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; key: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; laugh: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; lightbulb: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; lightning: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; link: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; lock: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; love_eyes: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; medal: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; megaphone: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; memo: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; mind_blown: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; muscle: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; neutral: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; ok_hand: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; outbox: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; package: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; party: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; pin: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; pizza: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; point_down: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; point_left: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; point_right: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; point_up: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; pray: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; question: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; rain: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; rainbow: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; raised_hands: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; red_circle: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; refresh: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; relieved: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; rocket: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; rolling_eyes: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; sad: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; shrug: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; sick: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; sleeping: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; smile: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; snow: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; sparkles: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; speech_bubble: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; star: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; stop: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; sun: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; surprised: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; thinking: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; thumbs_down: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; thumbs_up: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; trophy: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; unlock: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; warning: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; wave: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; white_circle: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; wink: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; worried: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; wrench: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; x: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; yellow_circle: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){"; zany: "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){" } & { custom: (name: string) => "}[EmojiValue](/docs/reference/stable/chat/index/interfaces/EmojiValue){" } & unknown"}</code>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.