The medium-tone thumbs-up emoji, 👍🏽, contains two Unicode code points: U+1F44D for the hand and U+1F3FD for its modifier. A picker can display them as one choice, but taking only the first code point drops the tone.
Unicode's emoji specification describes modifier sequences and sequences joined by the zero-width joiner, U+200D. Several code points can form one displayed emoji. Its appearance also depends on the device and font, so a string identifies the selection without guaranteeing identical artwork everywhere.
In API 2.0.0, the Emoji API resolves a character, shortcode, or exact name to an emoji string. Use that returned string as the picker's value. name, shortcodes, and category help present or find the choice, but they are separate from the sequence you insert into a message.
Request /emoji/thumbs_up?deep=true for encoding details and available skin-tone variants. This illustrative excerpt shows the base and one variant, with other fields and variants omitted:
{
"emoji": "👍",
"deep": {
"codepoints": ["U+1F44D"],
"skins": [
{
"emoji": "👍🏽",
"tone": "medium",
"unicode": "1F44D 1F3FD",
"hex": "1F44D-1F3FD"
}
]
}
}
The top-level emoji remains the base choice. Choosing the medium variant means storing that entry's complete emoji string. Use its tone label for your interface, and use the returned variant rather than constructing a modifier sequence for every emoji. Some entries have no tone variants.
deep.codepoints describes the resolved emoji, not a count of visible pictures. Deep is included on every plan when requested, and search results each carry their own Deep object when deep=true is supplied. A picker can request those details for /emoji?q=hand&deep=true without expecting one shared variant list for the entire search.
Preserve the selected string through storage and URL encoding. Avoid truncating it to a single code point or removing joiners and variation selectors as if they were stray characters. If your editor needs to move or delete a visible character, use grapheme-aware handling. Unicode's text segmentation rules describe those boundaries. The lookup supplies a sequence your application can retain, while editing that sequence remains a text-handling task.