Your prices
You pay the same per-number price as any Noir SMS customer and set your own retail price on top. The margin is your decision.
Many people who need a verification number buy it through a reseller's panel, a regional site or a chat bot. The API is open to that kind of business. You keep your own brand, your own checkout and your own customer relationship; Noir SMS supplies the numbers and the SMS. This page explains how the money flows, how to keep your customers updated, how to protect your margin when prices move, and, just as important, what you are responsible for. The technical reference is at /api/docs/.
Resellers can use the Noir SMS API to offer SMS verification numbers inside their own platform, panel or bot. You top up one Noir SMS balance, buy numbers through https://noirsms.com/api/v1 at the same prices as everyone else, and charge your customers whatever you decide; your margin is yours to set. If you sell medium or high volume, you can ask for special conditions through a support ticket in your dashboard. Signed sms.received webhooks let you update your customers in real time. Your customers must follow the Noir SMS Acceptable Use Policy, you are responsible for abuse on your platform, and accounts that resell to abusers are closed. Docs: https://noirsms.com/api/docs/.
You pay the same per-number price as any Noir SMS customer and set your own retail price on top. The margin is your decision.
You top up a single Noir SMS balance. Your customers pay you through your own checkout; they have no Noir SMS account.
A signed sms.received webhook tells your system the moment a code arrives, so you can show it to the right customer.
Your customers must follow the same Acceptable Use Policy. Abuse on your platform is your responsibility.
There is exactly one balance: yours. You add funds to your Noir SMS account by card or by USDC or SOL, exactly like any other customer, and every number your platform buys through the API is debited from that balance. Your customers never pay Noir SMS. They pay you, through whatever checkout, wallet or credit system your platform uses, and you decide what they pay.
Refunds follow the same logic. If a number receives no SMS within 20 minutes it expires and the price goes back to your Noir SMS balance; if you cancel it after 2 minutes, it is refunded too. How you credit your customer is up to you, but the fair approach is to mirror it: no code, no charge. A purchase on an empty balance fails with 402 insufficient_balance, so watch GET /balance and top up in time.
Noir SMS prices follow supply and demand and can change during the day. Your margin is the difference between what you charge and what the number costs at the moment of purchase.
# Your cost per number and stock for Canada, right now
curl "https://noirsms.com/api/v1/services?country=ca" \
-H "Authorization: Bearer nsk_live_YOUR_KEY"
# Your balance, so your panel can stop selling before it runs out
curl https://noirsms.com/api/v1/balance -H "Authorization: Bearer nsk_live_YOUR_KEY"If your platform buys numbers every day, talk to us. Log in, open the Support area of your dashboard and open a ticket telling us roughly how many numbers you buy per month, which services and countries, and what your platform is. We review each request and can offer special conditions to resellers with medium or high volume.
Conditions depend on real usage and on keeping a clean record under the Acceptable Use Policy, so a short history of API purchases on your account helps.
Set an HTTPS webhook URL on the API page of your dashboard. When an SMS reaches a number you bought through the API, Noir SMS POSTs an sms.received event with the number_id, phone, service, country and the SMS code and text. Store the number id with your customer's order, then match each event and push the code to their screen, chat or email.
Always verify the X-NoirSMS-Signature header (HMAC-SHA256 over the timestamp and raw body, with your webhook secret) and reject old timestamps, otherwise anyone who finds your URL could fake codes. Webhooks also matter for scale: one key allows 120 requests per minute, and webhooks cost nothing against that limit.
import express from 'express';
import crypto from 'node:crypto';
const app = express();
const SECRET = process.env.NOIRSMS_WEBHOOK_SECRET; // shown on the API page of your dashboard
app.post('/hooks/noirsms', express.raw({ type: 'application/json' }), (req, res) => {
const { t, v1 } = Object.fromEntries(req.get('X-NoirSMS-Signature').split(',').map((p) => p.split('=')));
const expected = crypto.createHmac('sha256', SECRET).update(t + '.' + req.body).digest('hex');
const fresh = Math.abs(Date.now() / 1000 - Number(t)) <= 300;
if (!fresh || expected.length !== v1.length || !crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1))) {
return res.sendStatus(401);
}
const event = JSON.parse(req.body);
if (event.type === 'sms.received') {
// Find YOUR customer's order by event.data.number_id and show them event.data.sms.code
notifyCustomer(event.data.number_id, event.data.sms.code);
}
res.sendStatus(200);
});Reselling puts you between Noir SMS and people we never see, so the rules travel with the numbers. Your customers must follow the same Acceptable Use Policy as direct customers: numbers are for verifying their own legitimate accounts, following each platform's terms. Fraud, scams, impersonation, harassment, bulk or automated account creation, ban evasion, spam and bypassing bank, fintech, crypto-exchange or identity (KYC) checks are prohibited.
You are responsible for abuse that happens through your platform. In practice that means publishing these rules in your own terms, not marketing your service for prohibited uses, not offering banking, fintech or crypto-exchange verification, limiting obviously automated or bulk buying, and suspending customers who break the rules. Accounts that resell to abusers are closed, and a closed account cannot buy numbers for any of its customers.
Numbers receive SMS only, with no calls or outgoing texts. Each number is for one verification on one service and is recycled later by the provider, so it is not a long-term recovery number; anyone keeping an account should add their own phone, email or authenticator app afterwards. Numbers are carrier mobile numbers rather than VoIP, so they usually work where VoIP numbers are rejected, but no app accepts every number, which is exactly why automatic refunds exist.
By default, resellers pay the same per-number prices as every Noir SMS customer, with no API fee. If you sell medium or high volume, open a ticket in the Support area of your dashboard and we will review special conditions for your account.
No. They buy from you and pay you. Only your account holds a Noir SMS balance and an API key.
The number expires after 20 minutes and the price goes back to your Noir SMS balance automatically. We recommend refunding your customer the same way.
Each account has one key, and regenerating it replaces the old one. Use webhooks instead of heavy polling to stay within 120 requests per minute.
Yes. Your customers must follow the same Acceptable Use Policy, you are responsible for abuse on your platform, and accounts that resell to abusers are closed.
How Noir SMS refunds work: automatic refund after 20 minutes with no SMS, manual cancel after 2 minutes, and credit back to your balance.
Read the guide →Getting startedHow to top up Noir SMS with USDC or SOL on the Solana network: amount, network choice, wallets vs exchanges, fees and how long it takes.
Read the guide →Getting startedA buyer's checklist for SMS verification services: refunds, non-VoIP numbers, single-use vs rental, coverage, pricing, payment security, privacy and API.
Read the guide →Getting startedWhether you can reuse a temporary number for another code, another app or a later login, what happens after it expires, and how to avoid lockouts.
Read the guide →A REST API to buy temporary numbers and read SMS codes from code: bearer auth, polling or signed webhooks, clear error codes and automatic refunds.
Read more →API for your own systemUse the Noir SMS API in internal tools, QA of your OTP sign-up flow, CI pipelines and delivery monitoring, in the US, Canada, UK and more.
Read more →What you can buildLegitimate things to build with the Noir SMS API: verification bots, team number tools, OTP localization tests, privacy layers, and what is not allowed.
Read more →WhatsApp bulk messaging, the allowed wayUnsolicited WhatsApp bulk messages get numbers banned. Learn the allowed options: broadcast lists to opted-in contacts and Meta's official Cloud API.
Read more →Create a free account, add funds and generate your API key on the API page of your dashboard.
Use the Noir SMS API only for your own legitimate accounts or, as a reseller, for customers who follow the same Acceptable Use Policy. Bulk or automated account creation, spam, ban evasion and bypassing bank, fintech or identity checks are prohibited and lead to account closure.