{"openapi":"3.1.0","info":{"title":"Emoji Strip API","version":"1.0.0","description":"Strip, extract and count emoji in any text. The strip endpoint removes every emoji from a string — or replaces each one with a marker you choose — and gets multi-code-point emoji right: ZWJ sequences like the family 👩‍👩‍👧‍👦, skin-tone modifiers (👍🏽), country flags (🇩🇪), keycaps (1️⃣) and variation selectors all count as a single emoji, so nothing is left half-deleted. The extract endpoint lists every emoji it finds with its position in the text and returns per-emoji and unique counts, ideal for analytics and moderation. A bare ©, ® or ™ is deliberately left alone unless it carries an emoji variation selector, and plain digits are never touched. Perfect for cleaning user input before search indexing or storage, sanitising usernames and display names, moderation and analytics, and preparing text for systems that choke on emoji. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This cleans and extracts emoji from text; to look an emoji up by name or shortcode use an emoji database API, and to count graphemes use a text-segmentation API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/emojistrip-api","description":"oanor gateway"}],"tags":[{"name":"Emoji"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/extract":{"get":{"operationId":"get_v1_extract","tags":["Emoji"],"summary":"Extract emoji","description":"","parameters":[{"name":"text","in":"query","required":true,"description":"The text to scan","schema":{"type":"string"},"example":"a 👩‍👩‍👧 b 🇩🇪 c"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"total":2,"emojis":["👩‍👩‍👧","🇩🇪"],"unique":[{"count":1,"emoji":"👩‍👩‍👧"},{"count":1,"emoji":"🇩🇪"}],"positions":[{"emoji":"👩‍👩‍👧","index":2},{"emoji":"🇩🇪","index":10}],"unique_count":2},"meta":{"timestamp":"2026-06-03T09:25:06.244Z","request_id":"d14cba23-9071-414c-a164-53991b8da401"},"status":"ok","message":"Extract emoji from text","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/strip":{"get":{"operationId":"get_v1_strip","tags":["Emoji"],"summary":"Strip emoji","description":"","parameters":[{"name":"text","in":"query","required":true,"description":"The text to clean","schema":{"type":"string"},"example":"Hello 👋 world 🌍!"},{"name":"replace_with","in":"query","required":false,"description":"String to replace each emoji with (default empty)","schema":{"type":"string"}},{"name":"collapse_spaces","in":"query","required":false,"description":"true to tidy up double spaces","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"text":"Hello  world !","removed":2,"result_length":14,"original_length":16},"meta":{"timestamp":"2026-06-03T09:25:06.350Z","request_id":"fd4fa388-3644-4aef-a7fe-1000eb40b5d3"},"status":"ok","message":"Strip emoji from text","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"name":"Emoji Strip API","notes":"Emoji are matched as Unicode grapheme clusters, so a family or flag counts as one. This cleans/extracts emoji from text — to look emoji up by name or shortcode use an emoji database API, and to count graphemes/characters use a text-segmentation API. Nothing is stored.","version":"v1","endpoints":[{"path":"/v1/strip","params":{"text":"the text (required)","replace_with":"string to replace each emoji with (default empty)","collapse_spaces":"true to tidy up double spaces left behind (default false)"},"returns":"the cleaned text and how many emoji were removed"},{"path":"/v1/extract","params":{"text":"the text (required)"},"returns":"the list of emoji with positions, plus per-emoji and unique counts"},{"path":"/v1/meta","params":[],"returns":"this document"}],"description":"Strip, extract and count emoji in any text. The strip endpoint removes every emoji — or replaces each with a string you choose — handling multi-code-point emoji correctly: ZWJ sequences (family 👩‍👩‍👧), skin-tone modifiers (👍🏽), flags (🇩🇪), keycaps (1️⃣) and variation selectors all count as one. The extract endpoint lists every emoji it finds with its position and gives per-emoji and unique counts. A bare ©, ® or ™ is left alone unless it carries an emoji variation selector. Pure local, no key."},"meta":{"timestamp":"2026-06-03T09:25:06.434Z","request_id":"01f8c4d8-5ec7-4617-ae5a-c936cf86ef83"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":1735,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":325,"monthly_call_quota":11250,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2315,"monthly_call_quota":163500,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":6115,"monthly_call_quota":860000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/emojistrip-api"}