Art and metadata
Same limits as WhatsApp sticker packs so existing art is portable. Canonical copy: docs/stickers/IMPORT_API.md.
Art
| Rule | Value |
|---|---|
| Sticker format | WebP, 512 × 512, transparent |
| Pack size | 3–30 stickers |
| Mix | Static or animated, never both |
| Static file | ≤ 100 KB |
| Animated file | ≤ 500 KB, frames ≥ 8 ms, total ≤ 10 s |
| Tray | 96 × 96, static PNG or WebP, ≤ 50 KB |
| Emoji tags | Up to 3 per sticker |
| Identifier / name / publisher | ≤ 128 characters |
Add an 8 px white stroke so art reads on light and dark chats.
contents.json
{
"android_play_store_link": "",
"ios_app_store_link": "",
"sticker_packs": [
{
"identifier": "cuppy",
"name": "Cuppy",
"publisher": "Example",
"tray_image_file": "tray.png",
"image_data_version": "1",
"avoid_cache": false,
"animated_sticker_pack": false,
"stickers": [
{
"image_file": "01.webp",
"emojis": ["🙂", "👋"],
"accessibility_text": "A round smiling face waving"
}
]
}
]
}
Bump image_data_version when you change art. Optional URLs must start with http:// or https://.
Android metadata columns
Return in this order: sticker_pack_identifier, sticker_pack_name, sticker_pack_publisher, sticker_pack_icon, android_play_store_link, ios_app_download_link, sticker_pack_publisher_email, sticker_pack_publisher_website, sticker_pack_privacy_policy_website, sticker_pack_license_agreement_website, image_data_version, whatsapp_will_not_cache_stickers, animated_sticker_pack.
Sticker rows: sticker_file_name, sticker_emoji (comma-separated), sticker_accessibility_text.