Pembaruan produk
Catatan perubahan
Setiap perubahan yang terlihat pengguna pada API, dasbor, dan cakupan.
- Terbaru
- 4.8.2
- Tanggal
- 11 Agu 2026
- Perubahan yang merusak kompatibilitas
- Perubahan yang merusak kompatibilitas diumumkan di sini setidaknya 14 hari sebelum berlaku, dan setiap penghentian dukungan mencantumkan tanggal perilaku lama berhenti bekerja.
2026
6 rilis
4.8.2
Terbaru- DiperbaikiPrice alerts were evaluated against the pool price instead of the retail price, so a threshold set just under the listed price never fired.
- DiperbaikiThe Singapore entry point returned X-VSN-Region: eu-central on catalogue responses served from cache.
4.8.1
- DiperbaikiRentals renewed inside the last hour of their term were charged the new term twice. 41 accounts were credited back automatically the same day.
- DiperbaikiGET /v1/activations dropped the status filter once the cursor was followed past page 20, so later pages mixed completed and cancelled orders.
- DiubahThe compatibility endpoint rejects action=getNumber with an unknown service code in about 12 ms instead of waiting on a pool lookup that could never succeed.
4.8.0
Bulk activations
Buy up to 50 numbers for the same service and country in one call, with a result per item instead of an all-or-nothing failure.
- DitambahkanPOST /v1/activations/bulk accepts up to 50 items and returns one result object per requested number, each with its own status and error code.
- DitambahkanBulk purchase in the dashboard, with a live progress panel and per-row cancel while the batch is still filling.
- DiubahIdempotency keys apply to the whole bulk request: a replay returns the original result set rather than buying a second batch.
- DiubahBulk requests draw from at most three operators per batch, so a single bad range cannot take out an entire order.
- DiperbaikiThe pool scorer counted a failed batch once per request rather than once per number, which under-penalised operators that failed in bulk.
4.7.1
- DihapusPOST /v1/activations no longer accepts a pinned operator field, as announced on 2025-09-23. Requests that still send it are accepted and the field is ignored.
- DiperbaikiTwo-factor enrolment rejected authenticator apps that pad the shared secret to 32 characters with base32 padding.
- DiperbaikiCountry pages listed services whose only operator in that country had been retired six weeks earlier, so the row always showed zero stock.
4.7.0
Per-country retention
- DitambahkanMessage retention is configurable per country between 1 and 30 days on contract accounts, for teams with data-residency commitments of their own.
- DitambahkanretentionDays on the activation object, so a script can see what applies to a number before it buys it.
- DiubahThe nightly retention job writes an audit record per deleted batch — count, country and cut-off — available to business accounts on request.
- DiperbaikiDeleting an activation's messages from the dashboard left the extracted code in the CSV export until the next nightly run.
4.6.2
- DiperbaikiGET /v1/prices with more than 20 service and country pairs hit the gateway timeout instead of returning 400 with a clear limit error.
- DiperbaikiThe Frankfurt entry point served stock counts up to 90 seconds stale after a pool refresh, while Singapore served them immediately.
2025
12 rilis
4.6.1
- DiperbaikiWebhook endpoints disabled after 72 hours of consecutive failures were silently re-enabled by any edit to their event list, including removing an event.
- Diperbaikiwebhook.test deliveries counted towards the failure streak that disables an endpoint, so testing a broken endpoint could disable it.
4.6.0
Webhook tooling
- DitambahkanSend a synthetic event of any type to a registered endpoint from the dashboard, signed exactly like a real delivery.
- Ditambahkanwebhook.test event type, excluded from delivery statistics and from the retry schedule.
- DitambahkanThe delivery log keeps the request body, the response status and the first 2 KB of the response body for seven days, with a manual replay per delivery.
- DiubahAn endpoint that fails continuously for 72 hours is disabled, after warning emails at 6 and 24 hours.
4.5.1
- DiperbaikiPrice alerts were evaluated hourly rather than on every pool refresh, so dips that lasted under an hour went unreported.
- DiperbaikiThe uptime strip on the status page rendered left to right under Arabic while the rest of the page mirrored, putting today on the wrong end.
4.5.0
Price alerts
- DitambahkanPrice alerts for a service and country pair, delivered by email or webhook when the retail price crosses a threshold you set.
- DitambahkanGET /v1/prices accepts up to 50 service and country pairs in one request instead of one pair per call.
- Ditambahkan23 countries, mostly Central American and Pacific territories. Coverage crosses 190 countries and territories.
- UsangPinning operator on POST /v1/activations. Routing already picks the healthiest operator with stock; the field is ignored from 2026-03-31.
4.4.0
Twelve-month rentals
- DitambahkanRental terms of 6 and 12 months, at a price fixed for the whole term rather than repriced at each renewal.
- Ditambahkanrental.expiring webhook event, fired 24 hours before a rental ends.
- DiubahAuto-renew checks that the upstream lease can actually be extended before it debits the balance, instead of debiting first and refunding on failure.
- DiperbaikiRentals crossing a daylight-saving boundary expired 60 minutes early in Europe/London and Europe/Lisbon.
4.3.1
- DiperbaikiIdempotency keys were stored per region, so a retry that landed in Singapore after a Frankfurt timeout bought a second number. Duplicate purchases in the affected window were refunded.
- DiperbaikiX-VSN-Region was missing from 402 and 429 responses.
4.3.0
Multi-region API
A second API entry point in Singapore cuts median round-trip latency from South-East Asia from 310 ms to 74 ms.
- DitambahkanRegional entry points in Frankfurt and Singapore, selected by anycast. Both read the same catalogue and the same balance.
- DitambahkanX-VSN-Region on every response, naming the entry point that served it.
- DiubahA long-poll connection is pinned to the region that accepted it for the life of the wait, so a code is never delivered to a region the client has left.
- DiubahPurchases are still serialised through the primary in Frankfurt; only reads and long-polls are served locally. Balance can never go negative because of a regional split.
4.2.1
- DiperbaikiLogin alerts fired after every browser update, because the full user agent string was part of the device fingerprint.
- DiperbaikiSessions expired 30 days after creation rather than after 30 days of inactivity, which is what the documentation and the setting both said.
4.2.0
Account security
- DitambahkanTwo-factor confirmation is required to create an API key or widen its scopes, on accounts that have 2FA enabled.
- DitambahkanEmail alert on sign-in from a new device or a new country, with the IP and the approximate location.
- DiubahSessions expire after 30 days of inactivity instead of 30 days from creation.
- DiubahRecovery codes are invalidated as a set when two-factor authentication is re-enrolled, so an old printout stops working.
4.1.0
- Ditambahkan19 countries across East and West Africa — Ethiopia, Tanzania, Uganda, Zambia, Senegal, Ivory Coast and others.
- DitambahkanSupport tickets opened from the dashboard carry the last 20 activations as context, so the first reply is not a request for identifiers.
- DiubahThe operator field on a completed activation names the range holder rather than the reseller we bought through, which is what you need to correlate failures.
- DiperbaikiService pages returned an empty table rather than an empty state when a country had no stock at all, which read like a loading failure.
4.0.1
- DiperbaikiThe MCP server advertised rentals:write tools to keys that did not hold the scope; calls failed with 403 rather than being hidden.
- DiperbaikirequestId was missing from responses produced by the rate limiter, which are exactly the ones support gets asked about.
- DiperbaikiThe OpenAPI document declared wait as an integer while the API also accepted a numeric string.
4.0.0
Agent-ready API
A hosted MCP server, an OpenAPI 3.1 document and an llms.txt index, so an agent can discover and drive the whole activation lifecycle with a scoped key.
- DitambahkanA hosted MCP server exposing buy, poll, cancel, complete and balance as tools, bound to the scopes of the key that connects.
- Ditambahkanllms.txt at the site root, indexing the public surface — pricing, endpoints, limits and policies — for agents and crawlers.
- Diubah/openapi.json is now OpenAPI 3.1, generated from the same schema the API validates requests against, so the document cannot drift.
- DiubahEvery response carries requestId. Quoting it in a ticket is enough for support to find the exact request.
- DiubahBearer tokens are the documented default. X-Api-Key keeps working, is not deprecated, and will not be removed.
2024
12 rilis
3.13.1
- DiperbaikiTwo services shared a slug after a rename, so one of the two service pages returned 404 for eleven days before anyone told us.
- DiperbaikiHreflang alternates on service pages pointed at the English URL for every language.
3.13.0
- Ditambahkan46 services, mostly regional marketplaces and wallets in South-East Asia and Latin America, including Shopee, Lazada, Mercado Libre and PicPay.
- DihapusGET /v1/history, deprecated on 2024-06-11. Use GET /v1/activations, which is a superset.
- DiubahThe compatibility endpoint returns NO_NUMBERS instead of NO_BALANCE when the pool is empty but the balance is sufficient, which is what the original protocol means.
3.12.0
- DitambahkanLocalised metadata, canonical URLs and hreflang alternates for all fifteen interface languages.
- DitambahkanA sitemap covering every service and country landing page in every language.
- DiubahPublic pages are statically rendered and revalidated every five minutes. Time to first row on the pricing table fell from 1.9 s to 0.4 s.
- DiperbaikiThe 15-minute post-release hold was applied per provider rather than per number, which shrank the effective pool in countries with fewer than 200 numbers.
3.11.0
- DitambahkanA fifth upstream provider, adding US and Canadian coverage for 60 services that previously had none in North America.
- DitambahkanX-RateLimit-Reset as a Unix timestamp, alongside the existing limit and remaining headers.
- DiubahA released number is held out of the pool for 15 minutes, so a re-issue after a rejected verification does not land on the same range.
3.10.1
- DiperbaikiActivation windows shorter than 10 minutes were still refunded on the 20-minute schedule, delaying the credit by up to ten minutes.
- DiperbaikiAnomaly alerts compared the current success rate against an all-time average instead of the trailing seven days, so seasonal services alerted constantly.
3.10.0
- DitambahkanAnomaly alerts: an email when a service and country pair you have used in the last 30 days drops more than 20 points in success rate.
- DitambahkanThe activation window is configurable per purchase between 5 and 30 minutes. The default stays 20.
- DiubahCursor pagination on GET /v1/activations breaks ties on the identifier rather than the timestamp alone, so two activations created in the same millisecond are both returned.
3.9.0
- DitambahkanGET /v1/activations with cursor pagination, status filters and a date range.
- DitambahkanCSV export of activation history from the dashboard, with no row cap.
- DitambahkanThe export includes the operator and the full SMS body where retention still allows it, so an audit does not need a second API call.
- UsangGET /v1/history, superseded by GET /v1/activations. It stops answering on 2024-11-15.
3.8.1
- DiperbaikiConsolidated monthly invoices double-counted refunds issued in the last hour of the month.
- DiperbaikiPurchase-order references longer than 40 characters were truncated on the PDF without any indication.
3.8.0
Business accounts
- DitambahkanContract rates, dedicated operator pools, a data processing agreement and net-15 terms for accounts above roughly 5,000 SMS a month.
- DitambahkanMonthly consolidated invoices carrying purchase-order references.
- DitambahkanA named escalation contact and a private channel for P1 issues.
- DiubahThe published SLA for contract accounts is 99.9 % monthly API availability with a 15-minute response on P1, measured excluding announced maintenance.
3.7.0
- DitambahkanTON, BNB and SOL as top-up currencies through OxaPay.
- DitambahkanUnder-payment handling: a partial deposit is credited for the amount actually received as soon as it is attributed, instead of being held for manual review.
- DiubahInvoice quotes are locked for 30 minutes instead of 15, after measuring how long Bitcoin confirmations really take at median fee rates.
- DiperbaikiA deposit sent to an expired invoice address needed a support ticket to be credited. Attributable deposits are now credited automatically within an hour.
3.6.1
- DiperbaikiPayout requests between €50.00 and €50.99 were rejected by an off-by-one comparison in cents.
- DiperbaikiThe referral dashboard showed lifetime earnings in the tier progress bar instead of the trailing-12-month figure the tier is based on.
3.6.0
Referral tiers
- DitambahkanVolume tiers on the referral program: 7 % above €500 of referred spend, 10 % above €5,000.
- DitambahkanReferral payouts in crypto once earnings exceed €50, to the address you nominate.
- DiubahCommission is calculated on what a referral spends, not on what they top up, so a large deposit no longer pays out before it is used.
- DiubahEarnings land on the balance as they are earned instead of being settled overnight.
2023
12 rilis
3.5.0
- Ditambahkan34 services in delivery and ride-hailing, including Bolt, Glovo, inDrive, Rappi and Gojek.
- DitambahkanPer-service landing pages with live price, stock and success rate for every country that has numbers for it.
- DiubahThe 24-hour success rate is computed over a rolling window rather than the previous calendar day, so a bad morning shows up before midnight.
3.4.1
- DiperbaikiAll-senders rentals dropped messages from alphanumeric sender IDs shorter than three characters.
- DiperbaikiRental prices were quoted per day by the API and per term in the dashboard, which disagreed by a few cents on three-month rentals.
3.4.0
- DitambahkanRentals in all-senders mode: receive from any sender, not only from the service you picked.
- Ditambahkan12 more countries eligible for rental, including Japan, South Korea and Australia.
- DiubahRental prices are quoted per term rather than per day, which is how the upstream actually charges and why short rentals looked oddly expensive.
- DiperbaikiDeleting the messages of an activation left the extracted code visible in the activation list.
3.3.0
- DitambahkanUkrainian interface translation, covering the catalogue and the legal pages.
- DitambahkanPer-activation message deletion from the dashboard, ahead of the 30-day retention cut-off.
- DiubahRetention is enforced by a nightly deletion job with an audit record instead of being filtered on read, so expired bodies are actually gone.
3.2.1
- DiperbaikiReplaying a webhook delivery re-sent the original timestamp, so endpoints enforcing a five-minute signature tolerance rejected every replay.
- DiperbaikiThe uptime strip on the status page rendered 91 bars for visitors in time zones ahead of UTC.
3.2.0
- Ditambahkan21 countries across the Middle East and the Gulf, including Iraq, Jordan, Lebanon, Oman and Qatar.
- DitambahkanA webhook delivery log with the request, the response status and a manual replay.
- DiubahWebhook secrets can be rotated with a 24-hour overlap during which both the old and the new signature are accepted.
3.1.0
Status page and changelog
- DitambahkanA public status page with 90-day uptime per component and the full incident history.
- DitambahkanThis changelog, with an RSS feed at /changelog.xml.
- DiubahMaintenance windows are announced on the status page at least 48 hours in advance.
3.0.2
- DiperbaikiX-VSN-Pool was omitted on responses served from the idempotency cache.
- DiperbaikiPool scores were not reset when an operator returned from a maintenance window, so traffic kept avoiding it for hours after it was healthy again.
3.0.1
- DiperbaikiThe new scorer treated an operator with fewer than 20 samples as perfectly healthy and sent early traffic to cold ranges. Operators now start at the pool median.
- DiperbaikiPurchases returned 503 instead of 409 when every scored operator for a combination was exhausted.
3.0.0
Pool rewrite
Operator selection moved from a per-request provider lookup to a continuously scored pool. Median time to issue a number fell from 2.6 s to 0.9 s.
- DiubahScores are recomputed every 30 seconds for each service, country and operator combination, instead of being looked up at purchase time.
- DitambahkanX-VSN-Pool names the pool that served a purchase, so a failure can be traced back to a range.
- DitambahkanPurchases skip any operator whose trailing 24-hour success rate is below 60 %, even when it is the cheapest.
- DihapusGET /v1/prices?flat=1, deprecated on 2022-08-16. The grouped response replaces it.
2.14.1
- DiperbaikiThe / search shortcut hijacked typing inside the promo-code field on the top-up page.
- DiperbaikiA key sitting exactly at its daily spend limit returned 500 instead of 402 with a clear error code.
2.14.0
- Ditambahkan30 services in finance and crypto, including Kraken, Bybit, Bitget, Nubank and Wise.
- DitambahkanSearch across services and countries from any page with the / shortcut.
- DiubahThe pricing page loads the grouped catalogue in one request instead of two, which halved time to first row on slow connections.
2022
12 rilis
2.13.0
- DitambahkanPer-key spend limits, daily and monthly, enforced at purchase time rather than reconciled afterwards.
- DitambahkanGET /v1/me, returning the calling key's scopes, limits and remaining budget.
- DiubahScopes split into numbers:read, numbers:write, balance:read and rentals:write. Existing keys were mapped to the equivalent set with no change in behaviour.
2.12.1
- DiperbaikiThe operator name was empty on activations served through the legacy compatibility endpoint.
- DiperbaikiArabic-Indic digits appeared in activation countdowns, where tabular Latin digits are used everywhere else.
2.12.0
- DitambahkanA fourth upstream provider. Pool depth in Nigeria, Kenya and Egypt roughly doubled.
- DitambahkanThe operator name is recorded on every completed activation, so a run of failures can be correlated with a specific range.
- DiubahFailover retries a different operator when the first attempt times out, instead of retrying the same one and burning the window.
2.11.1
- DiperbaikiCall transcripts longer than 480 characters were truncated with no ellipsis and no truncated flag on the object.
- DiperbaikiVoice-to-text delivered the transcript twice when the caller hung up during the beep.
2.11.0
- DitambahkanVoice-to-text on rentals in 11 countries: an inbound call is transcribed and delivered as a message.
- Ditambahkancall.received webhook event, carrying the transcript and the caller ID where the operator provides one.
- DitambahkanRental terms of 3 months.
- UsangGET /v1/prices?flat=1. The grouped response replaces it and carries the same data; the flat shape stops working on 2023-03-15.
2.10.1
- DiperbaikiThe dashboard sidebar did not mirror under RTL, so the activation timeline ran off the right edge in Arabic.
- DiperbaikiThe Indonesian translation applied the activation status labels to rentals, where the states are different and two of them do not exist.
2.10.0
- DitambahkanHindi, Indonesian and Arabic interface translations, with full right-to-left layout support.
- Ditambahkan24 countries, mostly Caribbean and Pacific territories.
- DiubahRate limits burst to 20 requests per second within the per-minute budget, instead of rejecting anything above two per second.
- DiperbaikiThe stable code field was missing from the 402 returned when the balance is too low.
2.9.0
- DitambahkanAn OpenAPI 3.0 document at /openapi.json, generated from the schema the API validates against.
- DitambahkanOfficial Python and Node clients, dependency-free and thin enough to read in one sitting.
- DiubahError responses carry a stable machine-readable code. The human-readable message is explicitly not stable and should never be parsed.
2.8.1
- DiperbaikiActivations for services with an apostrophe in the name failed the legacy getNumber action with BAD_SERVICE.
- DiperbaikiThe theme cookie was not read during the first server render, so accounts on the light theme saw a dark flash on every navigation.
2.8.0
- Ditambahkan19 countries in the Balkans and Eastern Europe — Serbia, Bosnia and Herzegovina, Albania, Moldova, Montenegro and North Macedonia among them.
- DiubahSupport moved to 24/7 cover in English, French, Russian and Spanish. Median first response is now under 12 minutes.
- DiubahThe pricing table groups by service by default, with the country view one click away.
2.7.0
- DitambahkanDark and light themes with a per-account preference, stored in a cookie so the first paint is already correct.
- DitambahkanGerman, Italian and French interface translations.
- DiubahThe activation card shows the full SMS body next to the extracted code, not only the code.
2.6.1
- DiperbaikiThe balance-low alert fired on every purchase once the threshold was crossed, instead of once per crossing.
- Diperbaikibalance.low webhooks were sent before the debit was committed, so the payload showed the pre-purchase balance.
2021
12 rilis
2.6.0
- DitambahkanBalance-low email alert with a per-account threshold.
- Ditambahkanbalance.low webhook event.
- Ditambahkan40 services, including Revolut, Binance, OKX and Coinbase.
2.5.0
- DitambahkanA third upstream provider, adding depth in India, Indonesia and Bangladesh.
- DitambahkanA seven-day stock history on each pricing row, so you can see whether a country is drying up before you plan around it.
- DiubahRouting weighs price against the trailing success rate instead of picking on price alone. Slightly more expensive numbers that actually deliver now win.
- DiperbaikiA pool refresh could briefly report zero stock for every Indian service.
2.4.1
- DiperbaikiIPv6 allowlist entries carrying a zone identifier were rejected as malformed.
- DiperbaikiThe seven-day stock history bucketed by the account time zone but labelled the axis in UTC.
2.4.0
- DitambahkanIP allowlists on API keys, accepting IPv4, IPv6 and CIDR ranges, one per line.
- DitambahkanTurkish, Polish and Vietnamese interface translations.
- DiubahAPI keys are shown once at creation and only a prefix is stored afterwards. Existing keys were rotated and the old values are no longer retrievable by anyone, including us.
2.3.0
- DitambahkanIdempotency keys on POST /v1/activations. A replay within 24 hours returns the original response instead of buying a second number.
- DitambahkanLong-polling on GET /v1/activations/{id} with wait= up to 180 seconds, so tight polling loops are no longer necessary.
- DiubahWebhook retries use exponential back-off across 24 hours over eight attempts, instead of five attempts inside an hour.
2.2.1
- DiperbaikiWebhook signatures were computed over the parsed body, so endpoints that re-serialised the JSON before verifying saw a mismatch.
- DiperbaikiRentals bought in the hour before a daylight-saving change expired 60 minutes early.
- DiperbaikiAuto-renew debited the balance even when the upstream lease could not be extended. The affected charges were credited back the same week.
2.2.0
Number rental
Keep the same number from four hours to one month and receive unlimited SMS from the service you choose.
- DitambahkanRentals with terms of 4 hours, 12 hours, 1 day, 3 days, 1 week and 1 month.
- DitambahkanPOST /v1/rentals and GET /v1/rentals/{id}, with optional auto-renew six hours before expiry.
- DitambahkanRental available in 15 countries in the first wave, including the United Kingdom, France, Germany, Spain, Poland, Canada and the United States.
2.1.0
- DitambahkanWebhooks: sms.received, activation.completed and activation.expired, signed with HMAC-SHA256 over the raw body.
- DitambahkanGET /v1/countries and GET /v1/services catalogue endpoints.
- DiubahDefault rate limit raised from 60 to 120 requests per minute per key.
2.0.1
- DiperbaikiLive activation cards stopped updating after the tab had been in the background for more than five minutes.
- DiperbaikiThe language-prefix redirect dropped the query string, which broke referral links carrying ?ref=.
2.0.0
New dashboard
The dashboard was rebuilt around live activation cards, so a code appears the moment it lands rather than on the next refresh.
- DitambahkanLive activation cards with the countdown, the full SMS body and one-click copy for both the number and the code.
- DiubahThe interface language is part of the URL (/en/, /ru/), so every page is linkable and shareable per language.
- DiubahActivation objects gained smsText, receivedAt and operator. Existing fields are unchanged.
- DiubahPrices and stock refresh every 60 seconds in the browser without a page reload.
1.10.0
- Ditambahkan26 countries across Central Asia and the Caucasus, including Kazakhstan, Uzbekistan, Georgia, Armenia and Azerbaijan.
- DitambahkanCSV export of activation history, capped at 5,000 rows per file.
- DiperbaikiKazakh numbers were displayed with the +7 country code split in the wrong place.
1.9.0
- DitambahkanA second upstream provider in the pool, with per-service health scoring and automatic failover.
- DitambahkanCountry-level success-rate badges on the pricing page, computed over the trailing 24 hours.
- DiubahThe first top-up minimum moves from €10 to €30, announced by email on 2020-12-08. Existing balances are unaffected and repeat top-ups stay at €10.
- DiperbaikiSuccess-rate badges rounded 84.6 % up to 85 % and crossed the healthy threshold visually while the real rate had not.
2020
12 rilis
1.8.1
- DiperbaikiReferral attribution was lost when a visitor switched language before signing up.
- DiperbaikiThe activation countdown drifted by up to 40 seconds in tabs left in the background.
- DiperbaikiRecovery codes could be redeemed twice if two requests arrived within the same second.
1.8.0
- DitambahkanReferral program: 5 % of referred spend, credited to balance as it is earned.
- DitambahkanSpanish, Portuguese and Chinese interface translations.
- DiubahDefault rate limit raised from 30 to 60 requests per minute per key.
1.7.0
- DitambahkanTwo-factor authentication with TOTP and ten single-use recovery codes.
- DitambahkanAn active-session list in Settings, with per-device sign-out.
- DiubahSessions are bound to a rotating token, so a stolen cookie stops working at the next rotation.
1.6.1
- DiperbaikiInvoice PDFs rendered Cyrillic company names as empty boxes.
- DiperbaikiThe code extractor missed four-digit codes wrapped in non-breaking spaces, which two Brazilian senders use.
1.6.0
- DitambahkanPDF invoices for every top-up, with optional company details on the document.
- Ditambahkan31 services, including Bumble, Signal, Grindr and Airbnb.
- DiubahActivation history keeps the full SMS body for 30 days instead of the extracted code alone.
1.5.0
- DitambahkanMulti-SMS mode: keep an activation open for further messages from the same service, billed at 30 % of the base price per extra message.
- Ditambahkan18 African countries, including Nigeria, Kenya, Ghana, South Africa, Egypt and Morocco.
- DiubahRate-limit headers are returned on 429 responses, so back-off logic has something to read.
1.4.1
- DiperbaikisetStatus with status 8 released the number but left the order marked as waiting for about 90 seconds.
- DiperbaikiCancelling an activation twice within the same second credited the refund twice.
1.4.0
handler_api compatibility
- DitambahkanA compatibility endpoint that speaks the classic handler_api protocol, so existing scripts run unchanged with only the api_key swapped.
- DitambahkangetBalance, getNumber, getStatus and setStatus, returning the original ACCESS_ and STATUS_ tokens.
- DiubahAPI keys are stored hashed. Existing keys were rotated and the plaintext is no longer retrievable.
1.3.1
- DiperbaikiGET /v1/prices returned services with zero stock when available=true was passed.
- DiperbaikiLong service names overflowed the activation card on screens narrower than 380 px.
1.3.0
- Ditambahkan22 countries across Latin America and South-East Asia, including Brazil, Colombia, Peru, Vietnam and the Philippines.
- DitambahkanEmail notification when a code arrives, opt-in per account.
- DiubahPrices and stock refresh every 60 seconds instead of every five minutes.
1.2.1
- DiperbaikiStock counters for Indonesia showed the provider's whole pool instead of the subset registered as Telegram-capable.
- DiperbaikiPassword reset links expired after 15 minutes rather than the documented 60.
1.2.0
- DitambahkanRussian interface translation, including the catalogue and the support forms.
- DitambahkanGET /v1/prices, returning live price and stock per country for a service.
- DitambahkanA per-service success rate over the trailing 24 hours, shown on every price row.
2019
3 rilis
1.1.0
- DitambahkanNine countries: Poland, Romania, Portugal, Czechia, Hungary, Bulgaria, Croatia, Slovakia and Lithuania.
- DitambahkanDiscord, Tinder, Steam and Yandex.
- DitambahkanUSDT-ERC20 and Litecoin as top-up currencies.
- DiubahThe activation window is 20 minutes, up from 15, after measuring how long real delivery tails actually run.
1.0.1
- DiperbaikiActivations bought between 00:00 and 00:05 UTC were billed against the previous day's price snapshot.
- DiperbaikiAn OxaPay callback for a Bitcoin deposit could be replayed into a duplicate credit when the first callback timed out.
- DiubahBalance is credited on the first network confirmation instead of the third.
1.0.0
Public launch
VirtualSMSNumbers opens to the public with one-time activations in 14 countries and a prepaid balance funded in crypto.
- DitambahkanOne-time SMS activations across 14 countries and 40 services.
- DitambahkanA prepaid balance in euros, funded with BTC and USDT-TRC20 through OxaPay.
- DitambahkanPOST /v1/activations and GET /v1/activations/{id}, authenticated with a bearer key.
- DitambahkanAutomatic refund to balance when no message arrives inside the 15-minute activation window, with no ticket to open.