Automatizza la verifica SMS: la guida completa all'API
Dalla creazione della chiave API alla lettura del codice: il flusso completo, con esempi curl reali, limiti di frequenza e le insidie più comuni.
Il sito va benissimo per una registrazione occasionale: qualche clic e una breve attesa per un SMS. Non basta più quando stai scrivendo test automatizzati, uno script di registrazione in massa, una pipeline CI o un bot che deve recuperare il codice di verifica senza nessuno a controllare. Questo il sito non lo può fare. L'API sì. Qui trovi tutto quello che serve per partire da zero e arrivare a un flusso funzionante.
Passo 1: ottieni una chiave API
Accedi e vai su /account/api-keys per crearne una. Le chiavi hanno la forma jm_ seguito da una stringa casuale. Il testo in chiaro viene mostrato una sola volta — conserviamo solo un hash, non la chiave stessa, quindi non esiste un modo per «recuperare la chiave» se la perdi. In quel caso, non resta che eliminarla e crearne una nuova.
Ogni richiesta usa l'autenticazione Bearer standard:
Authorization: Bearer jm_your_keyTrattala come una password — non fare commit in un repository pubblico, non incollarla in una chat per farla debuggare a qualcun altro. Se sospetti che sia stata compromessa, torna su /account/api-keys, eliminala e creane una nuova; quella vecchia smette di funzionare immediatamente.
Passo 2: scegli un servizio e un paese
Per creare un ordine servono due cose: service (il codice del servizio) e country (l'id del paese). Comincia elencando il catalogo:
curl https://jiema.my/api/v1/services \
-H "Authorization: Bearer jm_your_key"Ogni elemento ha un campo code (per Telegram è tg) — passalo direttamente all'endpoint dell'ordine, è più affidabile che ricostruire uno slug da solo. Per vedere prezzo e disponibilità in tempo reale di un servizio specifico nei vari paesi, aggiungi il parametro service:
curl "https://jiema.my/api/v1/prices?service=tg" \
-H "Authorization: Bearer jm_your_key"Ogni voce in items ha countryId / priceCents / count (i numeri disponibili in questo momento). Controlla count prima di ordinare — se è zero l'ordine fallirà di sicuro, quindi non sprecare una chiamata solo per scoprirlo a tue spese.
Passo 3: crea l'ordine
curl -X POST https://jiema.my/api/v1/orders \
-H "Authorization: Bearer jm_your_key" \
-H "Content-Type: application/json" \
-d '{"service":"tg","country":"6"}'Un ordine andato a buon fine restituisce un numero di telefono e una scadenza:
{
"ok": true,
"data": {
"id": "cm...",
"status": "WAITING",
"phone": "62812xxxxxxx",
"expiresAt": "2026-08-01T12:15:00.000Z",
"chargedCents": "40"
}
}L'addebito avviene in questo passaggio — chargedCents è l'importo effettivamente detratto (in centesimi). Passa questo numero all'app di destinazione per ricevere il codice di verifica, poi vai al passaggio successivo.
Passo 4: fai polling per il codice
Non c'è nessun WebSocket né push via webhook — il contenuto dell'SMS si ottiene facendo polling su GET /api/v1/orders/:id finché smsBody non smette di essere null:
while true; do
RESP=$(curl -s https://jiema.my/api/v1/orders/$ORDER_ID \
-H "Authorization: Bearer jm_your_key")
BODY=$(echo "$RESP" | jq -r '.data.smsBody')
if [ "$BODY" != "null" ]; then
echo "Code received: $BODY"
break
fi
sleep 5
doneCinque secondi sono un buon punto di partenza — il numero resta valido 15 minuti, e il limite di 60 richieste al minuto per le query lascia ampio margine. Vanno bene anche tre secondi se non hai pazienza; fare polling ogni secondo non fa arrivare il codice più in fretta, consuma solo il tuo limite di frequenza più velocemente.
Insidie
- I limiti di frequenza sono per utente, non per chiave. Gli endpoint di scrittura (order / cancel / next-sms) sono limitati a 10 al minuto per utente; le query a 60 al minuto. Creare altre chiavi non alza il tetto — lo condividono tutte.
- I numeri scadono dopo 15 minuti. Un numero non usato che scade senza aver ricevuto un codice viene rimborsato automaticamente — non serve chiedere nulla. Ma se la tua pipeline impiega troppo tempo a usare davvero il numero (bloccato in una coda, per esempio), sarà già morto quando arriverà il suo turno.
- Un numero può ricevere più di un codice. Se l'app di destinazione manda l'SMS in due passaggi (una conferma di registrazione, poi un codice di accesso separato), chiama
POST /api/v1/orders/:id/next-smsdopo l'arrivo del primo per dirci «ho finito con questo, continua ad aspettare» — senza bisogno di creare un nuovo ordine per ottenere un altro numero. - Una volta arrivato un codice, l'annullamento smette di funzionare.
POST /api/v1/orders/:id/cancelrimborsa all'istante mentre il numero è ancora in attesa di un codice. Da quandosmsBodyè diventato non nullo, la stessa chiamata restituisce invece un erroreCODE_RECEIVED— hai già ottenuto ciò per cui hai pagato, quindi non si torna indietro. - Non controllare lo status una sola volta e arrenderti. Lo
statuspassa daWAITINGaRECEIVED. Se resta fermo suWAITINGfino alla scadenza, di solito è un problema di tasso di consegna di quella specifica combinazione paese/servizio — creare un nuovo ordine in un altro paese di solito risolve più in fretta che aspettare.
Prossimi passi
Questo copre il flusso principale, dall'ordine al codice. L'elenco completo dei campi, i codici di errore e i casi limite di ogni endpoint si trovano su /api-docs. Se lo usi su scala — per esempio mantenendo attivi i flussi di verifica di decine di account contemporaneamente — gestisci il polling di ogni ordine con un tempismo indipendente. Non metterli in coda in un unico ciclo seriale, altrimenti i numeri più vecchi scadranno mentre aspetti ancora il primo.
Guadagna il 10% su ogni ordine dei tuoi invitati
Senza tetto né scadenza. Condividi il tuo link e raccogli una commissione per tutta la vita di ogni account che si registra tramite esso.
Articoli correlati
Arriva il rinnovo del numero: tieni un numero che ha già funzionato
jiema.my ora ti permette di rinnovare un numero che ha già ricevuto un codice, estendendolo per altre ore invece di comprarne uno nuovo — e il pulsante di rinnovo compare solo quando il rinnovo è davvero disponibile.
Un confronto open-source dei servizi di verifica SMS
Una lista open-source gestita dalla community su GitHub confronta i principali servizi per ricevere SMS per prezzo, paesi, pagamento e API — e mostra dove si colloca il numero virtuale di jiema.my.
Che cos'è la verifica SMS? I codici monouso (OTP) spiegati
Una spiegazione semplice della verifica SMS e dei codici monouso (OTP): come funzionano, perché le app li usano e che ruolo hanno i numeri di telefono temporanei.