← EMMYHENZ V4

EMMYHENZ V4 — API Documentation

Use Channel React and Poll Voting from your own app, script or bot. You do not need a browser login: an API key works exactly like being signed in to your account.

Quick start

  1. Sign in at https://emmyhenz-bot.name.ng and open Profile → API keys.
  2. Press Create API key. Copy the key now — it looks like ehk_ followed by 40 letters and numbers, and it is shown only once.
  3. Call an endpoint:
curl "https://emmyhenz-bot.name.ng/api/v1/account?apikey=YOUR_KEY"

Base address: https://emmyhenz-bot.name.ng/api/v1. Every endpoint accepts GET (parameters in the link) or POST (JSON body or form), and answers with JSON.

Authentication

Send your key in one of these ways:

HowExample
Query parameter?apikey=ehk_xxxxxxxx…
Header (recommended)x-api-key: ehk_xxxxxxxx…
Bearer headerAuthorization: Bearer ehk_xxxxxxxx…
Keep your key secret. Anyone who has it can spend your coins. Never put it in a public website, a public repository or front-end code that other people can open. Call the API from a server or a private script. If a key leaks, revoke it and make a new one.

Rate limits

To protect the service, requests are limited per account (all of your keys together, so more keys do not give more requests):

HTTP 429
{
  "creator": "EMMYHENZ Tech",
  "success": false,
  "rateLimited": true,
  "error": "Too many requests (rate limiting). Please try again in 7 seconds.",
  "retryAfterSeconds": 7
}

What costs coins

EndpointCost
/accountFREE needs a key, uses no coins
/poll-infoFREE needs a key, uses no coins
/channel-react 1 coin per request. Premium accounts use their 10 free requests a day first, then 1 coin each.
/poll-vote 1 coin per request. Premium accounts use their 5 free requests a day first, then 1 coin each.

"One request" means one call, whatever the amount is. Free daily uses reset at midnight UTC. If you have no coins (and no free uses left) you get a clear error and nothing is charged.

GET /api/v1/account FREE

Your username, coin balance, Premium status and what is left of today's free uses.

GET https://emmyhenz-bot.name.ng/api/v1/account?apikey=YOUR_KEY
{
  "creator": "EMMYHENZ Tech",
  "success": true,
  "account": {
    "username": "you",
    "coins": 120,
    "premium": true,
    "premiumUntil": "2026-12-01T00:00:00.000Z",
    "dailyUsage": {
      "channelReact": { "freeLimit": 10, "used": 3, "freeRemaining": 7 },
      "pollVoting":   { "freeLimit": 5,  "used": 0, "freeRemaining": 5 }
    },
    "dailyResetsAt": "2026-10-22T00:00:00.000Z"
  }
}

GET|POST /api/v1/channel-react

Sends reactions to a WhatsApp channel post.

ParameterRequiredDescription
apikeyyesYour API key (or use a header).
linkyesThe full channel post link, e.g. https://whatsapp.com/channel/0029VaXXXXXXXX/123 (it must end with the post number).
amountnoHow many reactions to send. Leave it out for as many as possible.
emojinoUp to 5 emojis separated by commas, e.g. ❤️,👍,😮. The reactions are spread evenly across them.
randomno1 = random emojis instead of choosing.
GET https://emmyhenz-bot.name.ng/api/v1/channel-react?apikey=YOUR_KEY&link=https://whatsapp.com/channel/0029VaXXXXXXXX/123&amount=50&emoji=❤️,👍
{
  "creator": "EMMYHENZ Tech",
  "success": true,
  "request": { "channel": "0029VaXXXXXXXX", "postId": "123", "amount": 50, "emojis": ["❤️", "👍"] },
  "result": { "reactionsSent": 50, "botsUsed": 50, "status": "sent", "message": "50 reactions sent.", "paidWith": "free daily use" },
  "account": { "username": "you", "coins": 120, "premium": true, "dailyUsage": { "channelReact": { "freeLimit": 10, "used": 4, "freeRemaining": 6 } } }
}

status is "processing" when a slow server is still sending: the reactions are on their way and may take a moment to show.

GET|POST /api/v1/poll-info FREE

Reads a channel poll: its question and options. The first option has index 0 — you need that number for /poll-vote.

ParameterRequiredDescription
apikeyyesYour API key.
linkyesThe channel post link of the poll.
GET https://emmyhenz-bot.name.ng/api/v1/poll-info?apikey=YOUR_KEY&link=https://whatsapp.com/channel/0029VaXXXXXXXX/123
{
  "creator": "EMMYHENZ Tech",
  "success": true,
  "isPoll": true,
  "channel": "0029VaXXXXXXXX",
  "postId": "123",
  "question": "Best day?",
  "options": [ { "index": 0, "text": "Friday" }, { "index": 1, "text": "Saturday" } ],
  "multiSelect": false
}

If the post is not a poll you get "isPoll": false and a message.

GET|POST /api/v1/poll-vote

Sends votes to one option of a channel poll.

ParameterRequiredDescription
apikeyyesYour API key.
linkyesThe channel post link of the poll.
optionyesThe option number from /poll-info (starts at 0).
amountnoHow many votes to send. Leave it out for as many as possible.
GET https://emmyhenz-bot.name.ng/api/v1/poll-vote?apikey=YOUR_KEY&link=https://whatsapp.com/channel/0029VaXXXXXXXX/123&option=0&amount=50
{
  "creator": "EMMYHENZ Tech",
  "success": true,
  "request": { "channel": "0029VaXXXXXXXX", "postId": "123", "option": 0, "amount": 50 },
  "result": { "votesSent": 50, "option": "Friday", "botsUsed": 50, "paidWith": "1 coin" },
  "account": { "username": "you", "coins": 119, "premium": false }
}

Errors

A problem always comes back as JSON with "success": false and a plain-language "error". The account part is included on paid endpoints so you can see your balance.

HTTPMeaning
400Something is missing or wrong in your request (for example no link, or an invalid post link).
401The API key is missing, invalid or revoked.
403Not enough coins, or the account may not use the service.
422The post is not a poll (for /poll-vote).
429Rate limited (see above): wait and try again.
503The service is busy or under maintenance. Nothing is charged; try again shortly.
{ "creator": "EMMYHENZ Tech", "success": false, "error": "Not enough coins. Need 1, you have 0. Spin the Daily Spin for free reacts, or buy coins.", "account": { "username": "you", "coins": 0, "premium": false } }

Code examples

JavaScript (Node.js 18+)

const KEY = process.env.EMMYHENZ_KEY;          // keep your key in an environment variable, never in public code
const url = new URL("https://emmyhenz-bot.name.ng/api/v1/channel-react");
url.search = new URLSearchParams({ link: "https://whatsapp.com/channel/0029VaXXXXXXXX/123", amount: "50", emoji: "❤️,👍" });

const res = await fetch(url, { headers: { "x-api-key": KEY } });
const data = await res.json();
console.log(res.status, data);

Python

import os, requests

r = requests.get("https://emmyhenz-bot.name.ng/api/v1/poll-vote",
    params={"link": "https://whatsapp.com/channel/0029VaXXXXXXXX/123", "option": 0, "amount": 50},
    headers={"x-api-key": os.environ["EMMYHENZ_KEY"]})
print(r.status_code, r.json())

curl (POST with JSON)

curl -X POST "https://emmyhenz-bot.name.ng/api/v1/channel-react" \
  -H "x-api-key: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"link":"https://whatsapp.com/channel/0029VaXXXXXXXX/123","amount":50,"emoji":"❤️"}'

Demo page you can download

A small, ready-made web page that uses both services (Channel React and Poll Voting) so you can see how the endpoints work. Download it, open it in your browser, paste your API key at the top and try it.

It is a demonstration only. The key you type sits inside that page, so do not publish it or use it on your real website: anyone could copy your key. Never put an API key in front-end code.
⬇ Download the demo pageView it

Good to know

EMMYHENZ V4 API · created by EMMYHENZ Tech