Who this is for
You run an SMM panel, a reselling website, or a script that places orders for clients, and you want Nitro to fulfil them without anyone copying links into the order page by hand. This guide gets you from a Nitro account to a working integration in about ten minutes.
You do not need approval to start. Every verified Nitro account already has an API key, and it orders the same catalogue at the same price you see on the site. Wholesale comes later, by approval, on the same key.
What you need
- A Nitro account with a verified email
- Some balance in your wallet (the API spends from the same wallet as the site)
- A panel that can talk to a provider in the standard SMM-panel format, or any tool that can send an HTTP POST
Step 1: Get your key
Open Settings on your dashboard and look for API access. Tap the row to copy the key. It starts with ntr_live_.
Treat the key like your wallet PIN: anyone who has it can place orders on your balance. If it ever leaks, open Reseller HQ from the menu and press Rotate. The old key stops working the moment the new one appears.
Step 2: Point your panel at Nitro
Most panel software (Perfect Panel, Smart Panel, and the like) has a Providers or API providers screen. Add a provider with these details:
- API URL:
https://nitro.ng/api/v2 - API key: the key from Settings
That is the whole setup. Nitro speaks the format every panel already understands: a form-encoded POST with key and action in the body. If your panel can connect to any other provider, it can connect to Nitro.
Step 3: Pull the service list
Your panel will do this for you when you sync the provider. If you are calling the API yourself, this is the request:
curl -X POST https://nitro.ng/api/v2 \
-d "key=ntr_live_YOUR_KEY" \
-d "action=services"
Each service comes back with a numeric service ID, a name, a category (the platform), a rate per 1,000 in naira, min and max quantities, a standard type, and a description. The IDs are stable: a service keeps its number for as long as it exists, so the mapping in your panel does not break between syncs.
Read the description before you list a service. It carries what your customer has to do before the order can run: for Discord members, adding our bot to the server and setting a permanent invite link; for website traffic, which country, device and keyword or referrer to send; for comment services, that the comments go in one per line. Show it on your order page the way we show it on ours. The type field (Default, Custom Comments, SEO, Package) is the standard panel type, so your panel knows which extra fields to ask for.
Step 4: Place a test order
Pick a cheap service, use one of your own links, and order the minimum quantity:
curl -X POST https://nitro.ng/api/v2 \
-d "key=ntr_live_YOUR_KEY" \
-d "action=add" \
-d "service=1234" \
-d "link=https://www.instagram.com/yourpage/" \
-d "quantity=100"
The answer is {"order": 481923}. The order shows up in your dashboard history like any other, marked as placed through the API, and the charge leaves your wallet at once.
Services that need more than a link take it as extra fields on the same request: comments (one per line) for comment services, usernames for mentions, keywords for SEO, and country, device, keyword or referrer for website traffic. The documentation lists every field.
If your panel retries a request (a timeout, a double click), Nitro answers the repeat with the order it already placed rather than charging you twice. The window for that is one minute.
Step 5: Track it
curl -X POST https://nitro.ng/api/v2 \
-d "key=ntr_live_YOUR_KEY" \
-d "action=status" \
-d "order=481923"
You get charge, start_count, status, remains, and currency. Statuses are the standard set: Pending, In progress, Completed, Partial, Canceled. Your panel already knows what to do with each.
The other actions work the same way: balance returns your wallet balance in naira, refill asks for a refill on an order whose tier promised one, and cancel cancels an order that has not started.
When something goes wrong
Errors come back as a normal response with an error field, the way every panel expects:
| Error | What it means |
|---|---|
Invalid API key | The key is wrong or was rotated. Copy the current one from Settings. |
Incorrect service ID | The ID is not in your catalogue. Sync the service list again. |
Incorrect quantity | Below the minimum or above the maximum for that service. |
Incorrect link | The link is missing or not a valid URL. |
Service not available | The service is paused. Try later or pick a sibling. |
Incorrect order ID | The order is not on your account. |
There is also a limit of 60 requests a minute per key. Sync the service list once and cache it; only add and status need to run often.
Prices: retail today, wholesale when you are ready
The rate on every service is what your account pays. A new account pays the same price as the site. When you are moving real volume, message us on WhatsApp from the reseller page and tell us about your business. Once we switch your account to wholesale, the same key starts returning lower rates on the next services call. Nothing to re-map, nothing to reconnect.
Wholesale accounts can also ask for the full catalogue: several thousand extra services beyond the curated list, each with its own price. How wholesale pricing works explains what changes and what does not.
Frequently asked questions
Does the key expire?
No. It works until you rotate it.
Can I use the same key on two panels?
Yes. Both spend from the same wallet and both see the same catalogue.
Do orders placed through the API earn the same refills and support?
Yes. An API order is a normal Nitro order. The tier's refill promise applies, and you can get help on it from your dashboard like any other.
Can I restrict the key to my server's IP?
Not yet. Rotate the key if you think it has leaked.
Where are the full docs?
nitro.ng/resellers/docs covers all six actions with request and response examples.
Read more: Wholesale SMM panel pricing in Nigeria · How to start an SMM reseller business in Nigeria · SMM panel API: what it is and who needs one