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.
ehk_ followed by 40 letters and numbers, and it is shown only once.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.
Send your key in one of these ways:
| How | Example |
|---|---|
| Query parameter | ?apikey=ehk_xxxxxxxx… |
| Header (recommended) | x-api-key: ehk_xxxxxxxx… |
| Bearer header | Authorization: Bearer ehk_xxxxxxxx… |
To protect the service, requests are limited per account (all of your keys together, so more keys do not give more requests):
"rateLimited": true, a message that ends with (rate limiting) — please try again, and a retryAfterSeconds value plus a Retry-After header.HTTP 429
{
"creator": "EMMYHENZ Tech",
"success": false,
"rateLimited": true,
"error": "Too many requests (rate limiting). Please try again in 7 seconds.",
"retryAfterSeconds": 7
}
| Endpoint | Cost |
|---|---|
/account | FREE needs a key, uses no coins |
/poll-info | FREE needs a key, uses no coins |
/channel-react | COINS 1 coin per request. Premium accounts use their 10 free requests a day first, then 1 coin each. |
/poll-vote | COINS 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.
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"
}
}
Sends reactions to a WhatsApp channel post.
| Parameter | Required | Description |
|---|---|---|
apikey | yes | Your API key (or use a header). |
link | yes | The full channel post link, e.g. https://whatsapp.com/channel/0029VaXXXXXXXX/123 (it must end with the post number). |
amount | no | How many reactions to send. Leave it out for as many as possible. |
emoji | no | Up to 5 emojis separated by commas, e.g. ❤️,👍,😮. The reactions are spread evenly across them. |
random | no | 1 = 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.
Reads a channel poll: its question and options. The first option has index 0 — you need that number for /poll-vote.
| Parameter | Required | Description |
|---|---|---|
apikey | yes | Your API key. |
link | yes | The 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.
Sends votes to one option of a channel poll.
| Parameter | Required | Description |
|---|---|---|
apikey | yes | Your API key. |
link | yes | The channel post link of the poll. |
option | yes | The option number from /poll-info (starts at 0). |
amount | no | How 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 }
}
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.
| HTTP | Meaning |
|---|---|
| 400 | Something is missing or wrong in your request (for example no link, or an invalid post link). |
| 401 | The API key is missing, invalid or revoked. |
| 403 | Not enough coins, or the account may not use the service. |
| 422 | The post is not a poll (for /poll-vote). |
| 429 | Rate limited (see above): wait and try again. |
| 503 | The 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 } }
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);
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 -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":"❤️"}'
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.
EMMYHENZ V4 API · created by EMMYHENZ Tech