Home › SMS API › Resellers
Reseller API

Become an SMS Verification Reseller

Sell Turonay's virtual number infrastructure under your own brand and with your own markup. In the SMS reseller API model, getPrices tells you your cost and you set the selling price. Tiered discounts, signed webhooks and paying only for activations that deliver a code keep your risk small.

195services currently listed
209countries currently listed
TRY · USD · RUBdisplay currencies

API pages

Who is reselling for?

With a single API key you can manage the activations of many customers and sell SMS verification behind your own interface. The interface, the pricing and the customer relationship stay with you; on the Turonay side only the balance tied to your API key moves. You can start with a small bot and keep using the same integration as your customer base grows.

Telegram bot owners

Add a “get number” command to your bot. You keep the customer balances; every activation is deducted from your Turonay balance.

Panel and website owners

Sell SMS verification on your own site. Panels that speak handler_api usually connect after just changing the base URL.

Agencies and software houses

Build one integration for your clients and keep pricing and invoicing on your side.

QA and test teams

Test your sign-up and verification flows end to end with real SMS; you do not pay for attempts where no code arrives.

How the margin works

The cost in the getPrices response is what you pay Turonay; your account's tier discount is already reflected in it. The price you charge your customer is up to you, and the difference is your margin.

bash
curl "https://turonay.com/stubs/handler_api.php?api_key=YOUR_KEY&action=getPrices&service=wa&country=62"
{"62":{"wa":{"cost":12.50,"count":744716}}}
ItemExample amount
Your cost (getPrices → cost)12.50 TRY
Your selling price18.00 TRY
Margin per activation5.50 TRY

The figures are examples only. Real prices differ by service and country and should always be read live with getPrices.

If you keep your selling price fixed, send the highest cost you are willing to bear per activation as maxPrice. If the price goes above that, nothing is purchased and your margin never turns negative. Checking the price with getPrices before you show it to your customer is the most reliable way to keep your selling price in line with the current cost.

bash
curl "https://turonay.com/stubs/handler_api.php?api_key=YOUR_KEY&action=getNumber&service=wa&country=62&maxPrice=12"
WRONG_MAX_PRICE:12.50

Tiered discounts

Every account is placed in a membership tier based on the total it has loaded into its balance. As you top up, your tier rises, and each tier carries a discount rate. Turonay sets the thresholds and rates; after you sign in, the tier page shows the current tier list and how far you are from the next tier.

  • The discount is applied to API prices automatically: getPrices shows your discounted cost and getNumber reserves the same price.
  • If you qualify for more than one tier, the highest discount applies.
  • A discount never lowers a price below a minimum floor price.
  • Because exact rates can change over time, no fixed percentage is quoted on this page; you see the current rate on your tier page.

Integration options

handler_api compatibility

Thanks to the handler_api-compatible protocol, existing bots and panels usually connect after changing the base URL and key. Language-specific examples: Python, PHP, Node.js.

Notifications with webhooks

Use signed webhooks to hand the code to your customer without polling; the notification is queued as soon as the code is recorded and is typically delivered within 1–2 minutes. The body is signed with HMAC-SHA256.

getActiveActivations for dashboards

getActiveActivations returns your open activations together with their codes. Your server can resume where it left off after a restart, and you can feed your own admin screen with it.

For all methods see the SMS API hub and the API reference.

Risk and billing protections

The main risks in reselling are paying for activations that are never delivered and losing money on price swings. The system limits both like this:

  • Pay on code: when a number is allocated the amount is only reserved; it is charged when the code arrives.
  • Release: if you cancel before a code, the provider cancels, or the activation expires, the reserved amount returns to your balance.
  • Price cap: if maxPrice is exceeded nothing is purchased and WRONG_MAX_PRICE:price is returned.
  • Price quote: the price you see in getPrices is held for a short time (about two minutes); even if the price rises in that window, the price you saw is charged.
  • No cancellation after the code: setStatus 8 returns EARLY_CANCEL_DENIED in that case. Write your customer refund policy around this rule.
  • Insufficient balance: if your balance does not cover the price, NO_BALANCE is returned and nothing is purchased.
  • Request limit: there is a per-minute request limit (default 60 requests per minute per key and IP). Use webhooks instead of frequent polling.

How to get started

1. Sign up

To create your account, go to the sign-up page.

2. Top up your balance

Add funds on the payment page by card, crypto or bank transfer. Your total top-ups determine your tier.

3. Get your API key

Generate your key in the API section of your profile.

4. Test it

Verify the connection with getBalance and getPrices and get your first number. Details: API reference.

5. Add a webhook and go live

Register your webhook URL, send a test event from your profile and start selling.

Reseller FAQ

Is there a separate fee or contract to become a reseller?

There is no separate subscription or fee for API access. You get your API key from your profile and only pay for delivered codes.

Can I set my own price for my customers?

Yes. getPrices shows you your own cost; the price you sell at is entirely up to you. Your margin is the difference between your selling price and your cost.

How is the tier discount determined?

Your tier depends on the total you have loaded into your account balance, and each tier has a discount rate. If you qualify for several tiers, the highest applies. The discount is reflected automatically in getPrices and getNumber prices; after signing in you can see the current rates on your tier page.

What if my customer gives up before the code arrives?

If you cancel with setStatus 8 before a code arrives, the reserved amount returns to your balance and nothing is charged. The same happens when the provider cancels or the activation expires.

What if a customer asks to cancel after the code has arrived?

Once the code has arrived the activation cannot be cancelled: setStatus 8 returns EARLY_CANCEL_DENIED and the fee is not refunded because the service was delivered. Set your own refund policy accordingly.

How many activations can I run at the same time?

The number of simultaneous activations depends on your balance and the per-minute request limit (default 60 requests per minute per key and IP). If you plan many concurrent activations, use webhooks instead of frequent polling.

How do I follow prices and stock live?

getPrices returns the current price and stock count per service and country as JSON; getNumbersStatus lists the stock of services in a country, and getCountries lists the countries you can get numbers for.

Start as a reseller

Get your API key, see your cost with getPrices, validate the flow with a small test activation and make your first sale. If you get stuck anywhere, write to us through the support ticket system.