Sviluppatore — chiavi API e API REST
Emettere e gestire le chiavi API, configurare gli ambiti e usare l'API REST di Certivant per creare richieste di verifica e sincronizzare lo stato KYC in modo programmatico dai propri sistemi.
Cosa fa
L'API REST di Certivant consente ai propri sistemi di creare richieste di verifica, caricare documenti e recuperare lo stato, senza passare dalla dashboard. Due casi d'uso principali:
- Integrare la verifica nel proprio processo di onboarding. Il modulo di registrazione invia i dati al proprio backend, il backend chiama Certivant e il richiedente riceve un link al flusso ospitato di Certivant.
- Sincronizzare lo stato delle verifiche nel proprio data warehouse o CRM. Combinare con i webhook affinché i propri sistemi si aggiornino alla variazione di stato.
L'autenticazione API avviene tramite chiavi API emesse dalla dashboard. La documentazione completa degli endpoint si trova in /app/{your-org}/kyc/developer: questa pagina tratta la gestione delle chiavi e la panoramica concettuale.
Dove si trova
KYC → Sviluppatore nella barra laterale sinistra. (Le chiavi API si trovavano nelle impostazioni KYC/B: ora hanno una sezione dedicata Sviluppatore.)
Il portale per sviluppatori è un unico punto di accesso con un menu a sinistra:
- Panoramica e avvio rapido: l'URL di base, l'autenticazione e una richiesta da copiare e incollare in 8 linguaggi (cURL, JavaScript, TypeScript, Python, PHP, Go, Java, C#). Gli esempi sono precompilati con il proprio host reale e un segnaposto per la chiave.
- Chiavi API: elencare, creare e revocare le proprie chiavi.
- Riferimento degli endpoint: ogni endpoint dell'integrazione (
/v1) con metodo, percorso, ambiti e parametri, più un link al Playground API interattivo. - Gestori dei webhook: gestori pronti all'uso che verificano la firma, in 6 linguaggi (vedi anche Webhook).
- Limite di frequenza: il limite effettivo al minuto della propria organizzazione, mostrato in sola lettura.
- FAQ: le domande più frequenti degli integratori.
Emettere una chiave API
Fare clic su Nuova chiave
La scheda Chiavi API in alto nella pagina Sviluppatore elenca le proprie chiavi con ambiente, autorizzazioni, data di creazione e ultimo utilizzo. Ogni riga ha i pulsanti per modificare, ruotare e revocare la chiave.

Si apre una finestra.

Assegnare un nome
Scegliere un'etichetta che indichi dove viene usata la chiave: "Backend di produzione (Heroku)", "Pipeline CI", "Sviluppo locale: portatile di Alice". Il nome compare nel registro di audit accanto a ogni azione API.
Scegliere gli ambiti
Le autorizzazioni sono definite per ciascuna chiave. Esistono due modi per concederle, ed è possibile combinarli:
| Ambito | Cosa consente |
|---|---|
kyc:read | Leggere tutto: richieste, documenti, moduli, analisi. |
kyc:write | Creare e modificare: richieste, caricamenti di documenti, invii di moduli, verifiche dal vivo. |
kyc:submit | Inviare una richiesta all'elaborazione automatica. |
kyc:manage | Azioni privilegiate: sovrascrivere decisioni, eliminare documenti, cancellare o esportare i dati di un richiedente. |
Oppure scegliere autorizzazioni più ristrette, per risorsa (Lettura, Scrittura, Invio, Gestione per ciascuna risorsa):
| Risorsa | Ambiti | Copre |
|---|---|---|
| Verifiche | verifications:read · write · submit · manage | Richieste di verifica, KYB, EDD, segnali di frode |
| Moduli | forms:read · write · manage | Elenco dei moduli, invio di un modulo, monitoraggio delle consegne |
| Documenti | documents:read · write · manage | Documenti delle richieste |
| Verifica d'identità in diretta | live_id:read · write | Pianificazione e monitoraggio delle chiamate di verifica dal vivo |
| Webhook | webhooks:read · manage | Endpoint dei webhook (da concedere esplicitamente) |
| Analisi | analytics:read | Analisi e riepilogo di smistamento |
| Privacy e cancellazione | privacy:manage | Richieste di cancellazione, cancellazione, esportazione per richiedente |
Gestione su una risorsa include ogni altra azione su quella risorsa. Un ambito per risorsa non va mai oltre la propria risorsa: una chiave con il solo forms:read non può leggere le richieste di verifica.
Scegliere gli ambiti minimi di cui la chiave ha effettivamente bisogno. Una chiave per "inviare un modulo dal nostro flusso di registrazione" ha bisogno solo di forms:write.
(Facoltativo) Limitare la chiave
- Moduli: limitare la chiave a moduli specifici. Potrà quindi solo elencare, inviare e creare verifiche tramite quei moduli, e vedrà solo le verifiche create tramite essi (elenco, dettaglio, documenti, riepilogo, analisi). Qualsiasi altra operazione viene rifiutata con
403 form_not_allowed. Una chiave limitata a moduli non può creare una verifica senza indicare uno dei suoi moduli (formId), e non può usare gli endpoint di cancellazione del richiedente, delle richieste di cancellazione, di riutilizzo e di verifica dal vivo. Le verifiche già esistenti prima dell'applicazione di questa restrizione diventano visibili alla chiave limitata quando Certivant esegue la propria operazione di recupero una tantum. - Workflow: limitare la chiave a specifici workflow di automazione. Per ogni verifica creata dalla chiave, possono essere eseguiti solo quei workflow (chiunque li avvii in seguito: il richiedente, una decisione, un revisore); gli altri workflow vengono saltati per quella verifica. Le verifiche create dalla dashboard, dai richiedenti tramite un modulo pubblico o da altre chiavi non sono interessate. Nessuna chiamata API fallisce a causa di questa restrizione.
Lasciare tutto deselezionato per nessuna restrizione.
- Indirizzi IP: elencare gli indirizzi IPv4/IPv6 o gli intervalli CIDR da cui la chiave può essere usata (uno per riga, per esempio
203.0.113.7,198.51.100.0/24,2001:db8::/32). Le richieste da qualsiasi altro indirizzo vengono rifiutate con403 ip_not_allowed.

Ambiti, restrizioni e scadenza si possono modificare in seguito con Modifica (l'icona a matita): il segreto e l'ambiente non possono essere cambiati.

(Facoltativo) Scadenza
Impostare una data alla quale la chiave scade automaticamente. Consigliato per integrazioni di breve durata (token CI, dimostrazioni). Le chiavi di produzione spesso non hanno scadenza: conviene ruotarle secondo una pianificazione. Una chiave scaduta restituisce 401 api_key_expired.
Scegliere l'ambiente
Le chiavi Produzione iniziano con ck_live_, quelle Test con ck_test_ (vedi Produzione e test più sotto).
Creare
La chiave viene mostrata una sola volta in una finestra modale. Copiarla subito: non è recuperabile in seguito. La dashboard mostra solo il prefisso (per esempio ck_live_a3f1), così si possono identificare le chiavi senza esporle.
Usare la chiave
Inviarla nell'intestazione Authorization:
Authorization: Bearer ck_live_a3f...
Le chiavi create prima del formato ck_live_ / ck_test_ (che iniziano con kyk_) continuano a funzionare senza modifiche.
Il percorso più rapido verso un'integrazione funzionante:
Creare una richiesta
curl https://api.certivant.com/api/v1/kyc/requests \
-H "Authorization: Bearer $CV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "INDIVIDUAL",
"applicant": {
"fullName": "Jane Doe",
"email": "jane@example.com"
}
}'
Restituisce l'id della nuova richiesta e un URL monouso in cui il richiedente carica i documenti.
Inviare il richiedente all'URL
Si può inviare l'email da sé, integrare il link nel proprio flusso di onboarding, oppure lasciare che sia Certivant a inviarla tramite il flusso "Invia invito" della dashboard.
Ricevere l'esito tramite webhook OPPURE interrogare
- Webhook (consigliato): registrare un endpoint che gestisca
kyc.request.approved/rejected/escalated. Vedi Webhook. - Interrogazione (polling):
GET /api/v1/kyc/requests/{id}restituisce lo stato attuale. Intervallo consigliato ≥ 30 secondi.
Attribuzione ai partner e ai sotto-tenant
Se si eseguono verifiche per conto di molti clienti finali da un'unica organizzazione, lo schema classico di partner o rivenditore (per esempio una piattaforma di firma elettronica che verifica i firmatari per centinaia di aziende), non serve un'organizzazione per ogni cliente. Taggare ogni richiesta con due campi facoltativi al momento della creazione tramite API:
subTenantName: il nome visualizzato del cliente finale (per esempio "Acme Corp").subTenantExternalId: il proprio id interno per quel cliente (per esempiocust_8842).
Una volta taggate, è possibile:
- Filtrare l'endpoint dell'elenco tramite
subTenantExternalId(GET /api/v1/kyc/requests?subTenantExternalId=cust_8842). - Instradare i webhook: entrambi i campi sono riportati in ogni envelope dell'evento, così il gestore sa a quale cliente appartiene un esito senza ricerche.
- Filtrare le dashboard: Utilizzo KYC/B, Registro di audit, Monitoraggio, Report e Analisi ottengono tutti un filtro Sotto-tenant non appena una richiesta contiene i tag, e gli elenchi KYC/KYB possono mostrare le colonne Sotto-tenant + ID esterno (nascoste per impostazione predefinita: attivarle dal menu delle colonne).
Per la forma esatta della richiesta, consultare il riferimento API: Richieste KYC → Crea una richiesta.
Limiti di frequenza
Il proprio limite di richieste API al minuto è impostato dal piano (valori predefiniti tipici: 60/min su Launch, 300/min su Pro/Scale, 600/min su Enterprise). Il valore massimo esatto della propria organizzazione è mostrato in sola lettura nella pagina Sviluppatore, e ogni risposta API lo riporta nell'intestazione X-RateLimit-Limit. Ogni chiave viene misurata in modo indipendente rispetto a questo massimale.
Quando lo si supera, le richieste restituiscono HTTP 429 Too Many Requests con X-RateLimit-Reset (secondi prima che la finestra si reimposti). Rallentare e riprovare.
Serve un massimale più alto? Lo imposta il super amministratore: può aumentare il limite del proprio cliente fino al massimo del piano da Amministrazione → Clienti → (la propria organizzazione) → Modifica organizzazione (un massimale più alto richiede un piano superiore). Il limite è controllato dall'operatore: i tenant possono visualizzarlo ma non modificarlo. Per la meccanica completa, consultare il riferimento per sviluppatori: Limiti di frequenza.
Buone pratiche di sicurezza
- Conservare le chiavi in variabili d'ambiente o in un gestore di segreti. Non committarle mai in git, non condividerle in chat. Le chiavi committate in repository pubblici vengono rilevate e sfruttate in pochi minuti.
- Una chiave per ambiente. Non condividere una chiave
ck_live_...tra staging e produzione: la rotazione di una non deve influire sull'altra. - Usare chiavi con ambiti limitati. Una chiave di sola lettura per il monitoraggio e una chiave di scrittura per il servizio di onboarding sono più sicure di un'unica chiave onnipotente ovunque.
- Vincolare le chiavi ai propri server. Aggiungere la lista degli indirizzi IP consentiti per le chiavi usate solo da indirizzi fissi.
- Ruotare ogni trimestre. Usare Ruota (vedi sotto): la vecchia chiave continua a funzionare per la sovrapposizione scelta, così si può distribuire la nuova senza interruzioni. Il registro di audit registra il passaggio.
- Controllare gli utilizzi non autorizzati. L'elenco delle chiavi mostra quando e da quale indirizzo è stata usata per l'ultima volta ciascuna chiave, e il registro di audit registra creazione, modifiche, rotazione e revoca. Indagare su qualsiasi indirizzo non riconosciuto.
Ruotare una chiave

Sviluppatore → Chiavi API → Ruota crea una sostituta con la stessa etichetta, le stesse autorizzazioni, restrizioni, lista IP e scadenza, e mostra la nuova chiave una sola volta.
- Sovrapposizione (da 0 a 168 ore, predefinito 24). La vecchia chiave continua a funzionare per questo periodo, poi restituisce
401 api_key_rotated. Impostare0per revocare subito la vecchia chiave. - L'elenco contrassegna la vecchia chiave come "Ruotata: la vecchia chiave funziona fino al…" e la nuova come "Sostituisce una chiave ruotata". Una chiave già ruotata non può essere ruotata di nuovo: si ruota la sua sostituta.
- È possibile anche modificare o revocare la vecchia chiave durante la sovrapposizione, se serve interromperla prima.
Revocare una chiave
Quando una chiave è compromessa, trapelata o non più necessaria:
- Sviluppatore → Chiavi API → menu a tre puntini → Revoca.
- Effetto immediato. Qualsiasi richiesta in corso con la chiave restituisce 401 alla chiamata successiva.
- Non è reversibile: non esiste un pulsante "annulla revoca". Se ci si pente, emettere una nuova chiave.
La revoca viene registrata nel registro di audit insieme all'utente che l'ha eseguita.
Produzione e test
Ogni chiave è di uno dei due tipi:
- Test (
ck_test_...): pensata per lo sviluppo e per la CI. - Produzione (
ck_live_...): pensata per l'ambiente di produzione.
L'ambiente etichetta l'utilizzo: ogni risposta riporta X-Certivant-Environment: test oppure live, e la dashboard mostra il badge accanto alla chiave, così nei propri log si può distinguere il traffico di test da quello di produzione.
Le chiavi di test non isolano i dati. Leggono e scrivono le stesse verifiche delle chiavi di produzione. L'unico sandbox è quello in cui inizia ogni nuova organizzazione: finché Certivant non ha verificato la propria organizzazione, le funzionalità di verifica dal vivo sono bloccate per tutte le sue chiavi. Se servono dati di test completamente separati, usare un'organizzazione distinta.
Risoluzione dei problemi
401 Unauthorized
Il campo error.reason del corpo della risposta indica il motivo:
error.reason | Significato |
|---|---|
missing_api_key | Manca l'intestazione Authorization: Bearer …. |
invalid_api_key | La chiave non esiste (errore di battitura, troncata, organizzazione sbagliata). |
api_key_revoked | La chiave è stata revocata. |
api_key_expired | La data di scadenza della chiave è passata. |
api_key_rotated | La chiave è stata ruotata e la sua finestra di sovrapposizione è terminata. Usare la sostituta. |
403 Forbidden
error.reason:
error.reason | Significato |
|---|---|
insufficient_scope | La chiave non ha l'ambito richiesto dall'endpoint (il messaggio indica gli ambiti accettati). Modificare la chiave o emetterne una nuova. |
ip_not_allowed | La richiesta proviene da un indirizzo che non è nella lista IP consentiti della chiave. |
form_not_allowed | La chiave è limitata ad altri moduli: il modulo, oppure la verifica richiesta, non è stato creato tramite uno di essi. |
429 Too Many Requests
Si è soggetti al limite di frequenza. Controllare l'intestazione Retry-After (secondi) e rallentare di conseguenza. Per volumi sostenuti, chiedere un limite più alto.
"Ho perso il valore della chiave"
Le chiavi vengono mostrate una sola volta. Non esiste recupero. Revocare la vecchia chiave ed emetterne una nuova: il proprio team dovrà aggiornare il nuovo valore ovunque fosse distribuito il precedente.
Correlati
- Webhook: da abbinare all'API per un'integrazione completa.
- Elenco e dettaglio KYC: la vista dalla dashboard delle richieste create tramite API.
- Registro di audit: ogni chiamata API compare qui.
Webhook
Ricevere eventi Certivant in tempo reale nei propri sistemi quando le verifiche cambiano stato. Copre configurazione, verifica della firma HMAC, pianificazione dei nuovi tentativi e riferimento completo dei tipi di evento.
Tipi di documento, scadenza e impostazioni di recenza
Scegliere quali documenti d'identità e aziendali Certivant accetta, stabilire quanto possono essere vecchi e decidere cosa accade quando un documento è scaduto, troppo vecchio o ha una data non leggibile, sia per il KYC sia per il KYB.