Documenti
Riferimento API dei documenti di Certivant — caricamento multipart di passaporti, documenti d'identità, selfie e prove di residenza su una richiesta KYC, recupero degli URL di download firmati e consultazione dei tipi di documento supportati e dei valori di stato.
I documenti sono collegati a una richiesta, non direttamente a un richiedente. Ogni caricamento avvicina la richiesta madre allo stato "pronta per l'invio" — quando pendingDocTypes è vuoto, si può inviare la richiesta per l'elaborazione.
Carica un documento
POST /api/v1/kyc/requests/:requestId/documents Ambito: kyc:write
Caricamento multipart. Passi documentType (e side, se applicabile) come parametri di query, e il file in un campo di modulo file.
Parametri di query
| Parametro | Tipo | Obbligatorio | Note |
|---|---|---|---|
documentType | enum | sì | Vedi l'elenco qui sotto |
side | enum | condizionale | front oppure back. Obbligatorio per GOVERNMENT_ID |
Corpo del modulo
| Campo | Tipo | Note |
|---|---|---|
file | binario | Il file del documento. Massimo 10 MB. Tipi MIME: image/jpeg, image/png, image/webp, application/pdf |
Tipi di documento
| Valore | Descrizione | A due facciate? |
|---|---|---|
GOVERNMENT_ID | Carta d'identità nazionale, patente di guida, permesso di soggiorno | Sì |
PASSPORT | Pagina dei dati anagrafici del passaporto | No |
SELFIE | Foto dal vivo del richiedente per il confronto del volto e il controllo di vivacità | No |
PROOF_OF_ADDRESS | Bolletta, estratto conto bancario, comunicazione ufficiale (di non più di 3 mesi) | No |
CERTIFICATE_OF_INCORPORATION | KYB — prova che l'azienda esiste | No |
COMPANY_OWNERSHIP_STRUCTURE | KYB — organigramma o libro dei soci | No |
BANK_STATEMENT | Estratto conto per i controlli sull'origine dei fondi | No |
OTHER | Qualsiasi documento non elencato — da usare con parsimonia; i controlli non vengono eseguiti sui documenti OTHER | No |
Carichi sempre la versione con la risoluzione più alta che possiede. L'OCR e i controlli di autenticità perdono precisione rapidamente sotto i 1024 px sul lato lungo. Un JPEG con qualità 80 o superiore va bene; eviti di comprimerlo in anticipo per "risparmiare banda".
Esempio
# Upload the front of a driver's license
curl -X POST "https://app.certivant.com/api/v1/kyc/requests/req_01J.../documents?documentType=GOVERNMENT_ID&side=front" \
-H "Authorization: Bearer ck_live_..." \
-F "file=@/path/to/license-front.jpg"
Risposta (201)
{
"id": "doc_01J...",
"documentType": "GOVERNMENT_ID",
"side": "front",
"status": "pending",
"fileSize": 412938,
"mimeType": "image/jpeg",
"requestStatus": "PENDING_UPLOAD",
"pendingDocTypes": ["GOVERNMENT_ID", "SELFIE"],
"message": "Document uploaded. Front of GOVERNMENT_ID received; back of GOVERNMENT_ID still required."
}
La risposta indica sempre ciò che manca ancora tramite pendingDocTypes. Quando quell'array è vuoto, la chiamata successiva deve essere POST /requests/:id/submit.
Valori di stato del documento
pending— caricato, non ancora elaborato (accade solo prima dell'invio della richiesta).verified— ha superato tutti i controlli di autenticità dopo l'invio della richiesta.failed— non ha superato un controllo di autenticità. Consulti i record dei controlli collegati inGET /requests/:idper il motivo specifico.corrupted— il file non può essere decodificato. Lo carichi di nuovo.
Errori
400 BAD_REQUEST:- Il file supera i 10 MB.
- Tipo MIME non supportato.
sidemancante perGOVERNMENT_ID.documentTypenon consentito dalle impostazioni KYC dell'organizzazione.
404 NOT_FOUND— la richiesta madre non esiste in questa organizzazione.409 CONFLICT— la richiesta non è inPENDING_UPLOAD. Non si possono aggiungere documenti a una richiesta già inviata.
Ottieni un URL di download
GET /api/v1/kyc/requests/:requestId/documents/:docId/url Ambito: kyc:read
I documenti sono archiviati in uno storage privato di oggetti. Per visualizzarne o scaricarne uno, recuperi un URL firmato a breve scadenza.
Risposta
{
"url": "https://storage.certivant.com/kyc/org_.../req_.../doc_....jpg?X-Amz-Signature=...",
"expiresIn": 900
}
expiresIn è espresso in secondi — l'URL è valido per 15 minuti. Ne generi uno nuovo ogni volta che deve visualizzare un documento; non memorizzarli nella cache.
L'url restituito è un URL di storage prefirmato (S3 / Azure Blob / GCS). Si apre direttamente in una scheda del browser e viene visualizzato senza intestazione Authorization:
- Immagini (
image/jpeg,image/png,image/webp) →<img src="{url}" /> - PDF (
application/pdf) →<iframe src="{url}" />oppure<object data="{url}" type="application/pdf" />
Controlli il mimeType di ciascun documento (da GET /requests/:id) per decidere cosa visualizzare.
Per definizione, gli URL firmati non richiedono autenticazione: chiunque conosca l'URL può visualizzare il documento fino alla sua scadenza. Non li registri mai, non li includa nelle email e non li esponga lato client senza un controllo di autorizzazione sul Suo lato.
Scarica i byte grezzi
GET /api/v1/kyc/requests/:requestId/documents/:docId/download Ambito: kyc:read
Trasmette direttamente i byte del file del documento, con il Content-Type memorizzato (image/jpeg, image/png, image/webp oppure application/pdf) e Content-Disposition: inline. Nessun URL firmato, nessun reindirizzamento.
curl -L "https://app.certivant.com/api/v1/kyc/requests/req_01J.../documents/doc_01J.../download" \
-H "Authorization: Bearer ck_live_..." \
-o government_id_front.jpg
Preferisca questo percorso rispetto alla route con URL firmato quando visualizza i documenti all'interno della propria dashboard:
- Funziona con qualsiasi backend di storage, incluso il disco locale — il cui URL firmato
/uploads/…è raggiungibile solo dall'interno dell'host di Certivant e darà 404 da un'altra origine. - Lo faccia passare dal proprio backend e lo serva nella stessa origine (
<img src="/your-proxy/doc">per le immagini,<iframe>per i PDF). La chiaveAuthorization: Bearerresta lato server e non raggiunge mai il browser. - Nessun URL di storage viene mai esposto, quindi non c'è nulla da far trapelare o che possa scadere.
Quale usare? Usi /url quando va bene inviare al browser un link pubblico di storage
a breve scadenza (storage cloud, per esempio S3/Azure). Usi /download quando vuole
mantenere tutto dietro la propria autenticazione, oppure quando Certivant gira su storage
su disco locale. La route /download è l'opzione sicura predefinita per una console
partner.
Sostituzione dei documenti
Non è possibile modificare un documento sul posto. Se il richiedente ha caricato una foto sfocata e si desidera una nuova acquisizione:
- La richiesta deve essere in
PENDING_UPLOAD(oppure va prima reinviata una richiesta rifiutata, per cancellare i documenti precedenti). - Carichi un nuovo documento con lo stesso
documentTypeeside. Il precedente viene sostituito — per l'elaborazione viene usata solo l'ultima versione.
Questa regola serve all'integrità dell'audit: una cronologia immutabile di ogni caricamento sopravvive nel registro di audit, anche quando cambia il documento attivo.
Elencare i documenti di una richiesta
Non esiste un endpoint separato per l'elenco dei documenti. L'elenco completo è incluso nella risposta di GET /api/v1/kyc/requests/:id:
{
"id": "req_...",
"documents": [
{ "id": "doc_a", "documentType": "GOVERNMENT_ID", "side": "front", "status": "verified", ... },
{ "id": "doc_b", "documentType": "GOVERNMENT_ID", "side": "back", "status": "verified", ... },
{ "id": "doc_c", "documentType": "SELFIE", "status": "verified", ... }
]
}
Scorra documents e richiami /download (per trasmettere i byte tramite il proprio server) oppure /url (per un link firmato) su qualsiasi documento specifico che desidera visualizzare.
Correlati
- Richieste KYC — la richiesta madre a cui si collegano i documenti.
- Sessioni ospitate — lasci che sia Certivant a raccogliere direttamente i documenti dal richiedente.
- Schemi — elenco completo di
documentType,statuse valori correlati.
Richieste KYB
Riferimento API KYB di Certivant — allega i dati dell'azienda, gli amministratori e i titolari effettivi a una richiesta BUSINESS, avvia le ricerche nei registri e gestisci le sotto-richieste KYC per ogni amministratore.
Sessioni ospitate
Generi un URL a breve scadenza con cui il richiedente completa l'acquisizione dei documenti, il controllo di vivacità e le fasi di identificazione.