API per ricevere SMS

Acquisti numeri e legga i codici di verifica tramite un’API JSON. Senza controlli d’identità, pagamento in criptovaluta.

REST · JSONOpenAPI 3.1 Specifica OpenAPI →

Ogni operazione qui è anche uno strumento MCP. Gli endpoint REST sono la traduzione degli stessi strumenti esposti dal server MCP: un agente autonomo e un’integrazione ordinaria si comportano quindi in modo identico. Se sta indirizzando un agente IA verso OTPDrop, cominci dalla sezione per gli agenti.

Come è organizzata l’API?

  1. Crei un account e conservi la frase restituita. È l’unico accesso, e non è reimpostabile.
  2. Crei una ricarica, invii la criptovaluta e attenda l’accredito.
  3. Acquisti un numero per il servizio e il paese desiderati — il saldo viene scalato subito.
  4. 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.

La frase è irrecuperabile. Ne conserviamo soltanto l’impronta. Se la perde, l’account e il suo saldo spariscono, senza reimpostazione né ricorso all’assistenza.

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\""
  }
}
StatoSignificato
200Riuscito
201Creato — l’account, la ricarica o l’ordine ora esiste
401Frase assente o errata nell’intestazione Authorization
422Richiesta compresa, ma impossibile da eseguire
500Guasto dalla nostra parte

Messaggi frequenti con 422:

MessaggioCausa
insufficient_fundsIl saldo è inferiore al prezzo — crei prima una ricarica
unknown serviceQuesto codice di servizio non esiste; veda l’elenco dei servizi
unknown countryQuesto codice di paese non esiste; veda l’elenco dei paesi
unknown coinValuta 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.

EndpointRitmo ragionevolePerché
Catalogo e calcolo del prezzoLi metta in cache da leiI prezzi cambiano di rado; ricaricare il catalogo a ogni richiesta non serve a nulla.
/topups/{id}Ogni 10-15 secondiUna conferma di rete richiede minuti, non millisecondi. Interrogare più spesso non fa sapere nulla prima.
/orders/{id}/smsOgni 3-5 secondiI codici arrivano di solito in pochi secondi; un ciclo più stretto aggiunge solo carico.
AcquistoAll’occorrenzaOgni 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

NomeTipoDescrizione
limitintegerfacoltativoHow 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

NomeTipoDescrizione
servicestringobbligatorioService code, e.g. telegram
countrystringobbligatorioCountry 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

NomeTipoDescrizione
amount_usdnumberobbligatorioHow much to add to the balance, in USD. Minimum 25, maximum 1000.
coinstringobbligatorioBTC, 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

NomeTipoDescrizione
idstringobbligatorioThe 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

NomeTipoDescrizione
servicestringobbligatorioService code, e.g. telegram
countrystringobbligatorioCountry 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

NomeTipoDescrizione
idstringobbligatorioThe 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

NomeTipoDescrizione
idstringobbligatorioThe 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.

FileContenuto
/openapi.jsonLo schema OpenAPI 3.1 completo
/.well-known/agent.jsonCapacità, modello di autenticazione e regole di funzionamento
/llms.txtUn breve riferimento per i modelli linguistici
/llms-full.txtLo 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.