Utilizzo di CertivantLive ID e sviluppatoriSviluppatore — chiavi API e API REST

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.

Who can do this:Org ownerOrg admin— I membri hanno bisogno del permesso api.access per visualizzare. Emettere le chiavi richiede il ruolo di amministratore.

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:

  1. 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.
  2. 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.

La scheda Chiavi API nella pagina Sviluppatore: ogni chiave mostra i badge dell'ambiente e delle autorizzazioni, il prefisso della chiave, la data di creazione e dell'ultimo utilizzo, e i pulsanti modifica, ruota e revoca.

Si apre una finestra.

La finestra Crea chiave API: un'etichetta, l'ambiente Produzione o Test, le autorizzazioni Lettura, Scrittura, Invio e Gestione, e le autorizzazioni per risorsa.

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:

AmbitoCosa consente
kyc:readLeggere tutto: richieste, documenti, moduli, analisi.
kyc:writeCreare e modificare: richieste, caricamenti di documenti, invii di moduli, verifiche dal vivo.
kyc:submitInviare una richiesta all'elaborazione automatica.
kyc:manageAzioni 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):

RisorsaAmbitiCopre
Verificheverifications:read · write · submit · manageRichieste di verifica, KYB, EDD, segnali di frode
Moduliforms:read · write · manageElenco dei moduli, invio di un modulo, monitoraggio delle consegne
Documentidocuments:read · write · manageDocumenti delle richieste
Verifica d'identità in direttalive_id:read · writePianificazione e monitoraggio delle chiamate di verifica dal vivo
Webhookwebhooks:read · manageEndpoint dei webhook (da concedere esplicitamente)
Analisianalytics:readAnalisi e riepilogo di smistamento
Privacy e cancellazioneprivacy:manageRichieste 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 con 403 ip_not_allowed.

La metà inferiore della finestra Crea chiave API: l'elenco Limita a moduli, la casella Indirizzi IP consentiti, la data di scadenza facoltativa e il pulsante Crea chiave API.

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

La finestra Modifica chiave API: le stesse autorizzazioni e restrizioni della creazione; l'ambiente è in grigio perché non può essere modificato.

(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 esempio cust_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

La finestra Ruota chiave API: per quante ore la vecchia chiave continua a funzionare (da 0 a 168) e il pulsante Ruota 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. Impostare 0 per 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.reasonSignificato
missing_api_keyManca l'intestazione Authorization: Bearer ….
invalid_api_keyLa chiave non esiste (errore di battitura, troncata, organizzazione sbagliata).
api_key_revokedLa chiave è stata revocata.
api_key_expiredLa data di scadenza della chiave è passata.
api_key_rotatedLa chiave è stata ruotata e la sua finestra di sovrapposizione è terminata. Usare la sostituta.

403 Forbidden

error.reason:

error.reasonSignificato
insufficient_scopeLa chiave non ha l'ambito richiesto dall'endpoint (il messaggio indica gli ambiti accettati). Modificare la chiave o emetterne una nuova.
ip_not_allowedLa richiesta proviene da un indirizzo che non è nella lista IP consentiti della chiave.
form_not_allowedLa 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.