v1 — Stable

EmojiKit API

Free, fast, and reliable emoji API for developers. Access 1,190+ emojis with a simple REST API.

https://emojikit.app/api/v1

Get Free API Key

Free tier: 60 req/min, 1,000 req/day. No credit card needed.

Quick Start

1

Get Your API Key

Register for a free API key above, or use the API without a key (rate limited to 60 req/min).

Register for API Key
bash
curl -X POST https://emojikit.app/api/v1/api-keys \
  -H "Content-Type: application/json" \
  -d '{"name": "Your Name", "email": "you@example.com"}'
2

Make Your First Request

Use the API key in the x-api-key header or api_key query parameter.

curl
bash
curl https://emojikit.app/api/v1/emojis \
  -H "x-api-key: ek_your_api_key_here"
JavaScript
javascript
const response = await fetch(
  'https://emojikit.app/api/v1/emojis',
  {
    headers: {
      'x-api-key': 'ek_your_api_key_here'
    }
  }
);
const data = await response.json();
console.log(data);
Python
python
import requests

response = requests.get(
    'https://emojikit.app/api/v1/emojis',
    headers={'x-api-key': 'ek_your_api_key_here'}
)
data = response.json()
print(data)

Endpoints

GET/api/v1/emojis

List all emojis with pagination and optional filtering by category, search term, or platform.

Parameters

NameTypeRequiredDescription
pageintegerOptionalPage number (default: 1)
limitintegerOptionalResults per page, max 100 (default: 20)
categorystringOptionalFilter by category name (e.g., "Smileys & Emotion")
searchstringOptionalSearch emoji name, slug, or unicode
platformstringOptionalFilter by platform slug (e.g., "apple", "discord")

Response Example

Response
json
{
  "error": false,
  "data": [
    {
      "name": "Grinning Face",
      "slug": "grinning-face",
      "character": "😀",
      "unicode": "U+1F600",
      "category": "Smileys & Emotion"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 1190,
    "totalPages": 60,
    "hasNext": true,
    "hasPrev": false
  }
}

Code Examples

curl
bash
curl "https://emojikit.app/api/v1/emojis?limit=5&category=Smileys+%26+Emotion" \
  -H "x-api-key: ek_your_api_key_here"
JavaScript
javascript
const res = await fetch(
  'https://emojikit.app/api/v1/emojis?limit=5',
  { headers: { 'x-api-key': 'ek_your_api_key_here' } }
);
const { data, pagination } = await res.json();
Python
python
import requests

res = requests.get(
    'https://emojikit.app/api/v1/emojis',
    params={'limit': 5},
    headers={'x-api-key': 'ek_your_api_key_here'}
)
data = res.json()
GET/api/v1/emoji/:slug

Get detailed information about a specific emoji, including aliases, platform renders, keywords, related emojis, and combinations.

Parameters

NameTypeRequiredDescription
slugstringRequiredURL-friendly emoji slug (e.g., "fire", "grinning-face")

Response Example

Response
json
{
  "error": false,
  "data": {
    "name": "Fire",
    "slug": "fire",
    "character": "🔥",
    "unicode": "U+1F525",
    "codepoint": "1F525",
    "category": "Objects",
    "aliases": [
      { "alias": "flame emoji", "aliasSlug": "flame-emoji", "isPrimary": true }
    ],
    "platformRenders": [
      { "platform": "apple", "imageUrl": "/emoji/apple/fire.png", "shortCode": ":fire:" },
      { "platform": "discord", "imageUrl": "/emoji/discord/fire.png", "shortCode": ":fire:" }
    ],
    "keywords": [
      { "keyword": "hot" },
      { "keyword": "flame" }
    ],
    "related": [...],
    "combinations": [...]
  }
}

Code Examples

curl
bash
curl "https://emojikit.app/api/v1/emoji/fire" \
  -H "x-api-key: ek_your_api_key_here"
JavaScript
javascript
const res = await fetch(
  'https://emojikit.app/api/v1/emoji/fire',
  { headers: { 'x-api-key': 'ek_your_api_key_here' } }
);
const { data } = await res.json();
console.log(data.character); // 🔥
Python
python
import requests

res = requests.get(
    'https://emojikit.app/api/v1/emoji/fire',
    headers={'x-api-key': 'ek_your_api_key_here'}
)
emoji = res.json()['data']
print(emoji['character'])  # 🔥
GET/api/v1/categories

Get all emoji categories with their emoji counts.

Response Example

Response
json
{
  "error": false,
  "data": [
    {
      "name": "Smileys & Emotion",
      "slug": "smileys-emotion",
      "icon": "😀",
      "emojiCount": 140
    },
    {
      "name": "People & Body",
      "slug": "people-body",
      "icon": "👋",
      "emojiCount": 121
    }
  ]
}

Code Examples

curl
bash
curl "https://emojikit.app/api/v1/categories" \
  -H "x-api-key: ek_your_api_key_here"
JavaScript
javascript
const res = await fetch(
  'https://emojikit.app/api/v1/categories',
  { headers: { 'x-api-key': 'ek_your_api_key_here' } }
);
const { data } = await res.json();
Python
python
import requests

res = requests.get(
    'https://emojikit.app/api/v1/categories',
    headers={'x-api-key': 'ek_your_api_key_here'}
)
categories = res.json()['data']
GET/api/v1/random

Get one or more random emojis. Optionally filter by category.

Parameters

NameTypeRequiredDescription
countintegerOptionalNumber of emojis, max 20 (default: 1)
categorystringOptionalFilter by category name

Response Example

Response
json
{
  "error": false,
  "data": [
    {
      "name": "Rocket",
      "slug": "rocket",
      "character": "🚀",
      "unicode": "U+1F680",
      "category": "Travel & Places"
    }
  ],
  "count": 1
}

Code Examples

curl
bash
curl "https://emojikit.app/api/v1/random?count=5" \
  -H "x-api-key: ek_your_api_key_here"
JavaScript
javascript
const res = await fetch(
  'https://emojikit.app/api/v1/random?count=5',
  { headers: { 'x-api-key': 'ek_your_api_key_here' } }
);
const { data } = await res.json();
Python
python
import requests

res = requests.get(
    'https://emojikit.app/api/v1/random',
    params={'count': 5},
    headers={'x-api-key': 'ek_your_api_key_here'}
)
emojis = res.json()['data']
POST/api/v1/api-keys

Register for a free API key. Max 3 registrations per email per day.

Parameters

NameTypeRequiredDescription
namestringRequiredYour name (min 2 characters)
emailstringRequiredYour email address

Response Example

Response
json
{
  "error": false,
  "data": {
    "key": "ek_a1b2c3d4e5f6...",
    "name": "John Doe",
    "email": "john@example.com",
    "rateLimit": 60,
    "createdAt": "2025-03-04T12:00:00.000Z"
  },
  "message": "API key created successfully!",
  "usage": {
    "header": "x-api-key: ek_a1b2c3d4e5f6...",
    "query": "?api_key=ek_a1b2c3d4e5f6...",
    "baseUrl": "https://emojikit.app/api/v1"
  }
}

Code Examples

curl
bash
curl -X POST https://emojikit.app/api/v1/api-keys \
  -H "Content-Type: application/json" \
  -d '{"name": "John Doe", "email": "john@example.com"}'
JavaScript
javascript
const res = await fetch(
  'https://emojikit.app/api/v1/api-keys',
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      name: 'John Doe',
      email: 'john@example.com'
    })
  }
);
const { data } = await res.json();
console.log(data.key); // ek_a1b2c3d4e5f6...
Python
python
import requests

res = requests.post(
    'https://emojikit.app/api/v1/api-keys',
    json={
        'name': 'John Doe',
        'email': 'john@example.com'
    }
)
data = res.json()['data']
print(data['key'])  # ek_a1b2c3d4e5f6...

Rate Limits

Per Minute

60

Requests per minute for free tier

Per Day

1,000

Requests per day for free tier

Rate Limit Headers

Every API response includes these headers to help you track your usage:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the current window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the rate limit window resets
Retry-AfterSeconds until you can retry (only on 429 responses)

429 Too Many Requests

When you exceed the rate limit, the API returns a 429 status with this response:

{
  "error": true,
  "status": 429,
  "message": "Rate limit exceeded. Please slow down."
}

Abuse Prevention

If the same IP hits the rate limit 3 times within 1 hour, it will be automatically blocked for 1 hour. This is to prevent bot abuse and ensure fair access for all developers.

Response Format

Success Response

All successful responses return JSON with an error: false field and a data field:

Success Format
json
{
  "error": false,
  "data": { ... },
  // Additional fields like "pagination", "query", "count" depending on endpoint
}

Error Response

Errors return a consistent JSON structure with error: true:

Error Format
json
{
  "error": true,
  "status": 404,
  "message": "Emoji with slug \"nonexistent\" not found"
}

HTTP Status Codes

CodeMeaning
200Success — the request was processed
400Bad Request — missing or invalid parameters
404Not Found — the requested resource doesn't exist
429Too Many Requests — rate limit exceeded
500Server Error — something went wrong on our end

API Key Management

How to Get an API Key

You can register for a free API key in two ways:

  1. Use the form at the top of this page
  2. Make a POST request to /api/v1/api-keys

Each email can register up to 3 API keys per day. No credit card required.

How to Use Your API Key

Include your API key in one of two ways:

Option 1: Header (Recommended)

Header Authentication
bash
curl https://emojikit.app/api/v1/emojis \
  -H "x-api-key: ek_your_api_key_here"

Option 2: Query Parameter

Query Parameter Authentication
bash
curl "https://emojikit.app/api/v1/emojis?api_key=ek_your_api_key_here"

Best Practices

Do
  • • Store your API key in environment variables
  • • Use the header method over query params
  • • Monitor your usage via rate limit headers
  • • Implement exponential backoff on 429 errors
Don't
  • • Hardcode API keys in client-side code
  • • Share your API key publicly
  • • Commit API keys to version control
  • • Make excessive parallel requests

Ready to Build?

Get your free API key and start integrating emojis into your app today.