# Emoji Strip API
> 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.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_โฆ" "https://api.oanor.com/emojistrip-api/..."
```

## Pricing
- **Free** (Free) โ 1,735 calls/Mo, 2 req/s
- **Starter** ($3/Mo) โ 11,250 calls/Mo, 8 req/s
- **Pro** ($23/Mo) โ 163,500 calls/Mo, 20 req/s
- **Mega** ($61/Mo) โ 860,000 calls/Mo, 50 req/s

## Endpoints

### Emoji

#### `GET /v1/extract` โ Extract emoji

**Parameters:**
- `text` (query, required, string) โ The text to scan Example: `a ๐ฉโ๐ฉโ๐ง b ๐ฉ๐ช c`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/emojistrip-api/v1/extract?text=a+%F0%9F%91%A9%E2%80%8D%F0%9F%91%A9%E2%80%8D%F0%9F%91%A7+b+%F0%9F%87%A9%F0%9F%87%AA+c"
```

**Response:**
```json
{
    "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
}
```

#### `GET /v1/strip` โ Strip emoji

**Parameters:**
- `text` (query, required, string) โ The text to clean Example: `Hello ๐ world ๐!`
- `replace_with` (query, optional, string) โ String to replace each emoji with (default empty)
- `collapse_spaces` (query, optional, string) โ true to tidy up double spaces

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/emojistrip-api/v1/strip?text=Hello+%F0%9F%91%8B+world+%F0%9F%8C%8D%21"
```

**Response:**
```json
{
    "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
}
```

### Meta

#### `GET /v1/meta` โ Spec

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/emojistrip-api/v1/meta"
```

**Response:**
```json
{
    "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 (๐๐
โฆ(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/emojistrip-api
OpenAPI spec: https://www.oanor.com/api/emojistrip-api/openapi.json
