API per ricevere SMS
Acquisti numeri e legga i codici di verifica tramite un’API JSON. Senza controlli d’identità, pagamento in criptovaluta.
Come è organizzata l’API?
- Crei un account e conservi la frase restituita. È l’unico accesso, e non è reimpostabile.
- Crei una ricarica, invii la criptovaluta e attenda l’accredito.
- Acquisti un numero per il servizio e il paese desiderati — il saldo viene scalato subito.
- Interroghi l’SMS contenente il codice. Se nessun codice arriva prima della scadenza dell’ordine, il denaro viene rimborsato automaticamente.
Ricarichi una volta, acquisti spesso: una ricarica copre tutti i numeri che il saldo consente, quindi solo il primo acquisto attende una conferma.
Autenticazione
Trasmetta la frase dell’account come token bearer. Non esiste né una chiave API separata né una chiamata di accesso — la frase è l’identificativo.
Authorization: Bearer YOUR-SEED-PHRASE
Gli endpoint del catalogo non richiedono alcuna autenticazione: servizi, paesi e prezzi si consultano quindi anche prima di avere un account. Tutto ciò che riguarda il denaro e gli ordini esige l’intestazione.
Indirizzo di base
Tutti gli endpoint sono relativi a:
https://www.otpdrop.com/api/v1
Le risposte sono in JSON. I corpi POST sono accettati in application/json o in
application/x-www-form-urlencoded.
Errori
In caso di fallimento viene restituito uno stato diverso da 2xx con un unico oggetto di errore.
{
"error": {
"code": "invalid_request",
"message": "unknown service: \"whatsap\""
}
}
| Stato | Significato |
|---|---|
200 | Riuscito |
201 | Creato — l’account, la ricarica o l’ordine ora esiste |
401 | Frase assente o errata nell’intestazione Authorization |
422 | Richiesta compresa, ma impossibile da eseguire |
500 | Guasto dalla nostra parte |
Messaggi frequenti con 422:
| Messaggio | Causa |
|---|---|
insufficient_funds | Il saldo è inferiore al prezzo — crei prima una ricarica |
unknown service | Questo codice di servizio non esiste; veda l’elenco dei servizi |
unknown country | Questo codice di paese non esiste; veda l’elenco dei paesi |
unknown coin | Valuta non accettata; veda l’endpoint di ricarica |
amount_usd must be between… | Le ricariche sono limitate a $25–$1000 |
Ci sono limiti di frequenza?
Non è pubblicata alcuna quota, e non esiste alcuna chiave API da limitare — ma chiamare gli endpoint in ciclo non è gratis. Due di essi sono fatti per essere interrogati ripetutamente e richiedono un’attenzione particolare.
| Endpoint | Ritmo ragionevole | Perché |
|---|---|---|
| Catalogo e calcolo del prezzo | Li metta in cache da lei | I prezzi cambiano di rado; ricaricare il catalogo a ogni richiesta non serve a nulla. |
/topups/{id} | Ogni 10-15 secondi | Una conferma di rete richiede minuti, non millisecondi. Interrogare più spesso non fa sapere nulla prima. |
/orders/{id}/sms | Ogni 3-5 secondi | I codici arrivano di solito in pochi secondi; un ciclo più stretto aggiunge solo carico. |
| Acquisto | All’occorrenza | Ogni acquisto scala denaro reale, quindi un ciclo senza freno costerà più a lei che a noi. |
Un traffico che somiglia a un attacco sarà bloccato a monte, senza un cortese 429. Se
ha un motivo legittimo per interrogare più spesso, ci scriva prima dalla pagina
dei contatti.
Elencare i servizi
GET/api/v1/services
Tutti i servizi con il loro codice, la categoria e il prezzo minimo. Non richiede autenticazione.
Richiesta
curl -s https://www.otpdrop.com/api/v1/services
Risposta
{
"services": [
{
"code": "binance",
"name": "Binance",
"category": "Finance",
"from_price_cents": 85,
"color": "#F0B90B",
"icon": "binance"
}
],
"count": 133
}
Elencare i paesi
GET/api/v1/countries
Every country with its dial code and how many services are available there. No authentication required.
Richiesta
curl -s https://www.otpdrop.com/api/v1/countries
Risposta
{
"countries": [
{
"code": "us",
"name": "United States",
"dial_code": "+1",
"service_count": 133
}
],
"count": 197
}
Matrice dei prezzi
GET/api/v1/catalog
The most useful service and country combinations with their prices, cheapest first. No authentication required.
Parametri
| Nome | Tipo | Descrizione | |
|---|---|---|---|
limit | integer | facoltativo | How many rows to return, 1 to 500. Defaults to 12. |
Richiesta
curl -s 'https://www.otpdrop.com/api/v1/catalog?limit=2'
Risposta
{
"items": [
{
"service": "badoo",
"country": "us",
"price_cents": 35
}
],
"count": 2
}
Calcolare un prezzo
GET/api/v1/quote
The exact price for one service and country before you commit to buying. No authentication required.
Parametri
| Nome | Tipo | Descrizione | |
|---|---|---|---|
service | string | obbligatorio | Service code, e.g. telegram |
country | string | obbligatorio | Country code, e.g. us |
Richiesta
curl -s 'https://www.otpdrop.com/api/v1/quote?service=telegram&country=us'
Risposta
{
"service": "telegram",
"country": "us",
"price_cents": 111,
"price_usd": "1.11",
"currency": "USD",
"purchasable": true
}
Creare un account
POST/api/v1/accounts
Generates an account and returns its seed. This is the only time the seed is ever shown. No authentication required.
Richiesta
curl -s -X POST https://www.otpdrop.com/api/v1/accounts
Risposta
{
"public_id": "acc_7f3c1a92",
"seed": "PABh-ZbRt-9xKm-Lq4V",
"seed_prefix": "PABh",
"balance_cents": 0,
"warning": "This seed is shown exactly once, right now..."
}
Creare una ricarica
POST/api/v1/topups
Claims a deposit address and returns the exact amount to send, as coin_amount, at the rate in rate_usd. Each top-up gets its own address, and it expires at expires_at. Send only the named coin, on the named network, before then.
Parametri
| Nome | Tipo | Descrizione | |
|---|---|---|---|
amount_usd | number | obbligatorio | How much to add to the balance, in USD. Minimum 25, maximum 1000. |
coin | string | obbligatorio | BTC, LTC, ETH, XMR, SOL, TRX, BNB, USDT, USDC and more |
Richiesta
curl -s -X POST https://www.otpdrop.com/api/v1/topups \
-H 'Authorization: Bearer YOUR-SEED' \
-H 'content-type: application/json' \
-d '{"amount_usd": 25, "coin": "XMR"}'
Risposta
{
"topup_id": "top_019195919c80fc8f",
"status": "awaiting_payment",
"coin": "XMR",
"address": "89Rm4XN39m9PCr8Sr3yAFnXvLRRWQVEE...",
"amount_cents": 2500,
"amount_usd": "25.00",
"coin_amount": "0.1337",
"rate_usd": 187.02,
"bonus_cents": 0,
"credited_total_cents": 2500,
"expires_at": 1788532810
}
Stato di una ricarica
GET/api/v1/topups/{id}
Whether a deposit has been credited. Confirmation is not instant — poll this rather than assuming the funds arrived.
Parametri
| Nome | Tipo | Descrizione | |
|---|---|---|---|
id | string | obbligatorio | The top-up id, in the path |
Richiesta
curl -s https://www.otpdrop.com/api/v1/topups/top_019195919c80fc8f \ -H 'Authorization: Bearer YOUR-SEED'
Risposta
{
"topup_id": "top_019195919c80fc8f",
"status": "credited",
"coin": "XMR",
"amount_usd": "25.00",
"coin_amount": "0.1337",
"credited_total_cents": 2500,
"expires_at": 1788532810
}
Acquistare un numero
POST/api/v1/orders
Debits the balance and issues a number immediately. There is no per-purchase address and no second wait. Fails with insufficient_funds if the balance is short.
Parametri
| Nome | Tipo | Descrizione | |
|---|---|---|---|
service | string | obbligatorio | Service code, e.g. telegram |
country | string | obbligatorio | Country code, e.g. us |
Richiesta
curl -s -X POST https://www.otpdrop.com/api/v1/orders \
-H 'Authorization: Bearer YOUR-SEED' \
-H 'content-type: application/json' \
-d '{"service": "telegram", "country": "us"}'
Risposta
{
"order_id": "ord_1ad450bf7a42519c",
"service": "telegram",
"country": "us",
"phone": "+15558329008",
"status": "paid",
"price_usd": "1.11"
}
Elencare i suoi ordini
GET/api/v1/orders
Every order on the account, newest first, with status, number and price. Useful for reconciling state after a restart rather than for polling.
Richiesta
curl -s https://www.otpdrop.com/api/v1/orders \ -H 'Authorization: Bearer YOUR-SEED'
Risposta
{
"orders": [
{
"order_id": "ord_1ad450bf7a42519c",
"service": "telegram",
"country": "us",
"phone": "+15558329008",
"status": "paid",
"price_usd": "1.11"
}
],
"count": 1
}
Consultare un ordine
GET/api/v1/orders/{id}
The current state of one order: its number, status and price.
Parametri
| Nome | Tipo | Descrizione | |
|---|---|---|---|
id | string | obbligatorio | The order id, in the path |
Richiesta
curl -s https://www.otpdrop.com/api/v1/orders/ord_1ad450bf7a42519c \ -H 'Authorization: Bearer YOUR-SEED'
Risposta
{
"order_id": "ord_1ad450bf7a42519c",
"service": "telegram",
"country": "us",
"phone": "+15558329008",
"status": "paid",
"price_usd": "1.11"
}
Recuperare l’SMS con il codice
GET/api/v1/orders/{id}/sms
Poll this until arrived turns true. If the order expires with nothing delivered, the price returns to your balance automatically.
Parametri
| Nome | Tipo | Descrizione | |
|---|---|---|---|
id | string | obbligatorio | The order id, in the path |
Richiesta
curl -s https://www.otpdrop.com/api/v1/orders/ord_1ad450bf7a42519c/sms \ -H 'Authorization: Bearer YOUR-SEED'
Risposta
{
"order_id": "ord_1ad450bf7a42519c",
"status": "paid",
"arrived": false,
"code": null
}
Come si presenta un’integrazione completa?
Dall’account al codice, sei chiamate. Tutto ciò che segue è reale: incolli ed esegua.
# 1. Creare un account e conservare la frase
SEED=$(curl -s -X POST https://www.otpdrop.com/api/v1/accounts | jq -r .seed)
# 2. Ricaricare — invii coin_amount all’indirizzo restituito
curl -s -X POST https://www.otpdrop.com/api/v1/topups \
-H "Authorization: Bearer \$SEED" \
-H 'content-type: application/json' \
-d '{"amount_usd": 25, "coin": "USDT"}'
# 3. Interrogare fino all’accredito della ricarica
curl -s https://www.otpdrop.com/api/v1/topups/TOPUP_ID \
-H "Authorization: Bearer \$SEED" | jq .status
# 4. Verificare il prezzo prima di acquistare
curl -s 'https://www.otpdrop.com/api/v1/quote?service=telegram&country=us'
# 5. Acquistare — il saldo viene scalato, il numero consegnato subito
ORDER=$(curl -s -X POST https://www.otpdrop.com/api/v1/orders \
-H "Authorization: Bearer \$SEED" \
-H 'content-type: application/json' \
-d '{"service": "telegram", "country": "us"}' | jq -r .order_id)
# 6. Interrogare il codice
until curl -s https://www.otpdrop.com/api/v1/orders/\$ORDER/sms \
-H "Authorization: Bearer \$SEED" | jq -e .code; do sleep 4; done
La stessa sequenza in Python, senza shell:
import time, requests
API = "https://www.otpdrop.com/api/v1"
seed = requests.post(f"{API}/accounts").json()["seed"]
auth = {"Authorization": f"Bearer {seed}"}
topup = requests.post(f"{API}/topups", headers=auth,
json={"amount_usd": 25, "coin": "USDT"}).json()
print("send", topup["coin_amount"], topup["coin"], "to", topup["address"])
while requests.get(f"{API}/topups/{topup['topup_id']}",
headers=auth).json()["status"] != "credited":
time.sleep(15)
order = requests.post(f"{API}/orders", headers=auth,
json={"service": "telegram", "country": "us"}).json()
print("number:", order["phone"])
while True:
sms = requests.get(f"{API}/orders/{order['order_id']}/sms",
headers=auth).json()
if sms["arrived"]:
print("code:", sms["code"])
break
time.sleep(4)
Server MCP
Le stesse operazioni sono disponibili tramite il Model Context Protocol su https://www.otpdrop.com/mcp,
sotto forma di undici strumenti. Per aggiungerlo a Claude Code:
claude mcp add --transport http otpdrop https://www.otpdrop.com/mcp
La configurazione e l’elenco completo degli strumenti si trovano nella pagina per gli agenti.
File di scoperta
Descrizioni del servizio leggibili dalle macchine, tutte servite senza autenticazione.
| File | Contenuto |
|---|---|
/openapi.json | Lo schema OpenAPI 3.1 completo |
/.well-known/agent.json | Capacità, modello di autenticazione e regole di funzionamento |
/llms.txt | Un breve riferimento per i modelli linguistici |
/llms-full.txt | Lo stesso, catalogo completo incluso |
Domande frequenti
Serve una chiave per l’API di OTPDrop?
No. Non c’è nulla da richiedere e nessuna approvazione. L’identificativo è la frase dell’account, trasmessa come token bearer — e gli endpoint del catalogo non ne hanno nemmeno bisogno.
Quanto costa l’API di OTPDrop?
Nulla oltre ai numeri stessi. Nessun abbonamento, nessuna fatturazione a chiamata, nessun volume minimo — i prezzi sono quelli del sito.
Con quali linguaggi di programmazione funziona l’API?
Qualsiasi linguaggio in grado di eseguire una richiesta HTTPS. È normale JSON su HTTP con un’intestazione bearer: nessun SDK da installare e nulla da sincronizzare con le nostre versioni.
Cosa succede se l’SMS non arriva?
L’ordine si rimborsa da solo sul saldo alla scadenza; può anche annullarlo prima dal sito. Paga i codici consegnati, non i tentativi.
L’API REST e il server MCP sono la stessa cosa?
Sì, deliberatamente. Ogni endpoint REST è la traduzione di una chiamata di strumento MCP, quindi non possono divergere: modificare l’uno significa modificare l’altro. Scelga quello che si adatta meglio al suo client.
Si può provare l’API senza spendere nulla?
Il catalogo, il calcolo del prezzo e la creazione dell’account sono gratuiti: gran parte di un’integrazione può quindi essere scritta e verificata prima di qualsiasi ricarica. Solo l’acquisto costa denaro.