I Web Services e le API di TrovaPEC, in modalità RESTful, automatizzano la ricerca delle PEC: il tuo software invia un codice fiscale o una partita IVA e riceve l’indirizzo PEC ufficiale, senza file da preparare né interfacce da usare a mano.
Se non vuoi o non sai come integrarli nelle tue applicazioni, è disponibile un programma facilmente installabile e configurabile che dialoga con il tuo sistema. Per maggiori informazioni contattaci.
In questa pagina: come funziona · prima di iniziare · specifiche tecniche · esempi di codice · consigli per l’integrazione
Come funziona
Il servizio è asincrono e si usa in quattro passaggi:
- Invii la richiesta (metodo POST) con la tua key e il codice fiscale o la partita IVA da cercare.
- Ricevi un token, il codice di prenotazione della richiesta.
- Chiedi l’esito (metodo GET) con il token, ripetendo la richiesta finché il risultato non è pronto.
- Ottieni il risultato: la PEC trovata oppure il motivo per cui non è stata trovata.
La richiesta viene evasa in 2-3 minuti.
Prima di iniziare
- Attivazione: il servizio viene attivato dopo aver definito la modalità di fatturazione (anticipata o posticipata) e ti viene fornito un codice identificativo cliente, la key, da usare in ogni richiesta. Richiedi informazioni.
- Cosa puoi cercare: un codice fiscale o una partita IVA (11 cifre, oppure 16 caratteri per il codice fiscale delle persone fisiche; il prefisso “IT” è accettato). Il web service non prevede la ricerca per ragione sociale.
- Indirizzo del servizio:
https://trovapec.it/index_ws.php, sempre in HTTPS. - Formato delle risposte: testo semplice, con i campi separati dal carattere
|.
Specifiche tecniche
Tutte le operazioni usano lo stesso indirizzo, https://trovapec.it/index_ws.php: cambiano il metodo HTTP e i parametri. Per provarle a mano abbiamo predisposto due semplici form, che puoi anche scaricare, personalizzare e integrare nei tuoi sistemi:
- index_post.html: per inviare la richiesta;
- index_get.html: per ottenere l’esito della ricerca.
| Operazione | Metodo | Parametri |
|---|---|---|
| Invio richiesta PEC | POST | key, cf |
| Richiesta esito PEC | GET | key, token |
| Cancellazione richiesta PEC | POST | key, cf-delete |
| Richiesta saldo account | POST | key, saldo |
1. Invio richiesta PEC (POST)
| Parametro | Descrizione | Obbligatorio |
|---|---|---|
key | La user-key associata alla tua utenza | Sì |
cf | La partita IVA o il codice fiscale da cercare | Sì |
| Risposta | Significato |
|---|---|
OK|CodiceToken | La richiesta è andata a buon fine. Conserva il token: serve per leggere l’esito. |
ERROR|credito insufficiente | Solo per gli account prepagati: il credito è esaurito. |
ERROR|codice fiscale o partita iva non valido | Il codice inviato non ha un formato valido. |
ERROR|chiave non valida | La key non è riconosciuta. |
ERROR|parametri mancanti o non valorizzati: elenco | Manca uno dei parametri obbligatori oppure è vuoto. Nel messaggio trovi quali. |
ERROR|errore nell'inserimento della richiesta / ERROR|servizio non disponibile | Problema temporaneo del servizio: riprova più tardi. |
2. Richiesta esito PEC (GET)
| Parametro | Descrizione | Obbligatorio |
|---|---|---|
key | La user-key associata alla tua utenza | Sì |
token | Il valore ottenuto dalla richiesta precedente | Sì |
| Risposta | Significato |
|---|---|
OK|PEC|stato|ragione sociale|provincia estesa|sigla provincia | Richiesta elaborata. Se la PEC non è stata trovata il campo PEC è vuoto e il campo stato ne indica il motivo. |
WAIT|token | Elaborazione in corso: ripeti la richiesta di esito dopo qualche secondo. |
ERROR|richiesta non presente:token | Il token non corrisponde a nessuna richiesta. |
Esempi di risposta:
OK|esempio@pec.it|pec trovata|ESEMPIO SRL|TORINO|TO
OK||pec non trovata3. Cancellazione richiesta PEC (POST)
Annulla una richiesta inviata in precedenza. Puoi cancellare soltanto le richieste fatte con la tua key.
| Parametro | Descrizione | Obbligatorio |
|---|---|---|
key | La user-key associata alla tua utenza | Sì |
cf-delete | Il codice fiscale o la partita IVA della richiesta da eliminare | Sì |
| Risposta | Significato |
|---|---|
OK|Cancellata richiesta per Cf: codice | La richiesta è stata cancellata. |
ERROR|chiave non valida | La key non è riconosciuta. |
ERROR|codice fiscale o partita iva non valido | Il codice inviato non ha un formato valido. |
4. Richiesta saldo account (POST)
| Parametro | Descrizione | Obbligatorio |
|---|---|---|
key | La user-key associata alla tua utenza | Sì |
saldo | È sufficiente la presenza del campo: non deve essere valorizzato | Sì |
| Risposta | Significato |
|---|---|
Saldo: importo | Il credito residuo dell’account. Per gli account in modalità posticipata l’importo è vuoto. |
Esempi di codice
Con curl, sostituendo LA_TUA_KEY con la tua key. I comandi sono su una sola riga e funzionano da bash, Prompt dei comandi e PowerShell (in Windows PowerShell 5 scrivi curl.exe al posto di curl):
# 1. invio della richiesta
curl -X POST https://trovapec.it/index_ws.php -d "key=LA_TUA_KEY" -d "cf=12345678901"
# risposta: OK|CodiceToken
# 2. richiesta dell'esito, con il token ricevuto
curl "https://trovapec.it/index_ws.php?key=LA_TUA_KEY&token=CodiceToken"
# risposta: WAIT|CodiceToken oppure OK|PEC|stato|...
# saldo dell'account
curl -X POST https://trovapec.it/index_ws.php -d "key=LA_TUA_KEY" -d "saldo="Un ciclo completo in PHP: invio, attesa e lettura dell’esito.
<?php
$url = 'https://trovapec.it/index_ws.php';
$key = 'LA_TUA_KEY';
// 1. invio della richiesta
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => ['key' => $key, 'cf' => '12345678901'],
CURLOPT_RETURNTRANSFER => true,
]);
$risposta = trim(curl_exec($ch));
curl_close($ch);
$campi = explode('|', $risposta, 2);
if (strtoupper($campi[0]) !== 'OK' || empty($campi[1])) {
exit('Richiesta non accettata: ' . $risposta);
}
$token = $campi[1];
// 2. richiesta dell'esito, ripetuta finché non è pronto
for ($tentativo = 0; $tentativo < 20; $tentativo++) {
sleep(30);
$risposta = trim(file_get_contents(
$url . '?' . http_build_query(['key' => $key, 'token' => $token])
));
$campi = explode('|', $risposta);
if (strtoupper($campi[0]) === 'WAIT') {
continue; // non ancora pronto
}
if (strtoupper($campi[0]) === 'OK') {
echo 'PEC: ' . $campi[1] . ' (' . $campi[2] . ')';
} else {
echo 'Errore: ' . $risposta;
}
break;
}Consigli per l’integrazione
- Basati sul primo campo della risposta: è sempre
OK,WAIToERROR. Il testo che segue è descrittivo e può cambiare nel tempo, quindi non usarlo per le logiche del tuo programma. - Conserva il token finché non hai letto l’esito: è l’unico modo per recuperarlo.
- Non stringere troppo il polling: un controllo ogni 30 secondi circa è sufficiente, dato che la richiesta richiede 2-3 minuti.
- Evita gli invii duplicati: ogni richiesta accettata viene conteggiata ai fini della fatturazione.
- Tieni d’occhio il credito con la richiesta di saldo, se il tuo account è prepagato.
- Proteggi la key: usala solo lato server e non inserirla in pagine o app pubbliche.
Hai bisogno di aiuto con l’integrazione o di attivare il servizio?
Per cercare le PEC di interi elenchi, senza integrazioni, vedi la ricerca PEC massiva; per capire cosa viene restituito, leggi le domande frequenti.