# API per ricevere SMS di verifica

L'API per ricevere SMS di SMS Nitro porta nel tuo codice le stesse operazioni del pannello: stesso catalogo, stessi prezzi, stessa regola di addebito. Chi arriva da uno script scritto per SMS-Activate deve solo cambiare indirizzo e chiave.

## Come si riceve un codice di verifica con l'API di SMS Nitro?

Dopo la prima ricarica confermata generi la chiave dal pannello. Con POST /api/v1/orders indichi servizio e paese e ottieni il numero; poi interroghi l'ordine ogni pochi secondi finché compare l'SMS e lo chiudi con finish. Se entro 20 minuti non arriva nulla, l'importo trattenuto torna da solo al saldo e non paghi niente.

## Le chiamate della REST v1

Tutte le chiamate partono da https://smsnitro.com/api/v1 e rispondono in JSON con i normali codici HTTP. La chiave si passa nell'header X-Api-Key; in alternativa funziona Authorization: Bearer seguito dalla chiave.

- GET /balance: saldo disponibile e importo trattenuto negli ordini aperti, in dollari.
- GET /services: elenco dei servizi con prezzo; GET /services/{servizio}/countries mostra i paesi di quel servizio con il rispettivo prezzo.
- POST /orders acquista un numero; GET /orders e GET /orders/{id} servono per il controllo dello stato e per leggere il testo dell'SMS.
- Azioni sull'ordine: finish lo chiude, cancel lo annulla prima che arrivi un SMS e ti restituisce l'importo, resend chiede un altro codice sullo stesso numero senza costi, ban segnala un numero già usato sul servizio.

## Alternativa all'API di SMS-Activate

Molti bot e programmi di registrazione parlano soltanto il protocollo di SMS-Activate. Per loro c'è https://smsnitro.com/api/stubs/handler_api.php: accetta GET o POST con i parametri api_key e action e risponde sempre con HTTP 200, quindi il client deve leggere il corpo della risposta per capire l'esito.

Le azioni supportate sono getBalance, getNumber, getStatus, setStatus, getPrices, getNumbersStatus, getServicesList e getCountries, con importi in dollari. Una differenza da tenere presente: country=0, o il parametro assente, indica gli Stati Uniti e non la Russia come nel protocollo originale.

## SDK per Python e Node, collezione Postman

I pacchetti ufficiali si installano con pip install smsnitro (Python) e npm i smsnitro (Node.js e TypeScript). Entrambi includono una funzione che attende il codice con un tempo massimo e sollevano un'eccezione chiara se l'ordine si chiude senza SMS. La collezione Postman contiene tutte le chiamate e si importa anche in Insomnia o Bruno.

## Prezzi, addebito e limiti

- I prezzi via API sono quelli del pannello, senza maggiorazioni.
- Il prezzo resta bloccato al momento dell'acquisto e viene addebitato solo se arriva l'SMS.
- Su alcuni numeri l'annullamento si sblocca circa 2 minuti dopo l'acquisto.
- Acquisto e nuovo invio dell'SMS hanno un limite di richieste al minuto per indirizzo IP. Gli SDK controllano lo stato ogni 4 secondi: è un ritmo sensato anche per il tuo codice.
- Ogni account ha una sola chiave attiva: se ne generi un'altra dal pannello, la precedente viene revocata subito.

## FAQ

**Serve un piano a parte per usare l'API di verifica SMS?** No. Qualsiasi account con almeno una ricarica confermata può generare la chiave dal pannello e iniziare a chiamare l'API, pagando gli stessi prezzi del sito.

**I miei script per SMS-Activate funzionano con SMS Nitro?** Sì, tramite handler_api.php: cambi l'indirizzo base e la chiave. Controlla solo i codici paese, perché lo 0 corrisponde agli Stati Uniti.

**L'API mi avvisa quando arriva l'SMS?** No, non c'è una notifica automatica. Fai il controllo dello stato dell'ordine (GET /orders/{id} oppure getStatus) ogni pochi secondi finché non compare il testo.

**Esiste un ambiente di test?** Non serve: fai una ricarica piccola, prova con servizi economici e ricorda che un numero che non riceve SMS non viene mai addebitato.

**Posso avere più chiavi API sullo stesso account?** No. La chiave attiva è una sola; generarne una nuova revoca quella vecchia, quindi aggiorna subito tutti gli script che la usano.

Source: https://smsnitro.com/it/api
