curl --fail \
https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/generate-pdf/ \
-H 'x-api-key: YOUR_API_KEY' \
--output report.pdffrom didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
content = client.sessions.generate_pdf(
"11111111-2222-3333-4444-555555555555",
)
with open("download.pdf", "wb") as file:
file.write(content)import { writeFile } from "node:fs/promises";
import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const content = await didit.sessions.generatePdf("11111111-2222-3333-4444-555555555555");
await writeFile("download.pdf", Buffer.from(await content.arrayBuffer()));ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
resp, err := client.Sessions.GeneratePDF(ctx, "11111111-2222-3333-4444-555555555555")
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
file, err := os.Create("download.pdf")
if err != nil {
log.Fatal(err)
}
defer file.Close()
if _, err := io.Copy(file, resp.Body); err != nil {
log.Fatal(err)
}import java.nio.file.Path;
import me.didit.Didit;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
client.sessions().generatePdf("11111111-2222-3333-4444-555555555555")
.writeTo(Path.of("download.pdf"));<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$content = $didit->sessions->generatePdf('11111111-2222-3333-4444-555555555555');
$content->saveTo('download.pdf');require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
content = didit.sessions.generate_pdf("11111111-2222-3333-4444-555555555555")
File.binwrite("download.pdf", content)using System;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var content = await client.Sessions.GeneratePdfAsync("11111111-2222-3333-4444-555555555555");
await content.SaveToAsync("download.pdf");"<string>"API para generar PDF: informes de cumplimiento KYC y KYB
Descarga informes PDF de cumplimiento de sesiones KYC o KYB con GET /v3/session//generate-pdf/ de Didit. Marca blanca, listos para auditoría.
curl --fail \
https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/generate-pdf/ \
-H 'x-api-key: YOUR_API_KEY' \
--output report.pdffrom didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
content = client.sessions.generate_pdf(
"11111111-2222-3333-4444-555555555555",
)
with open("download.pdf", "wb") as file:
file.write(content)import { writeFile } from "node:fs/promises";
import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const content = await didit.sessions.generatePdf("11111111-2222-3333-4444-555555555555");
await writeFile("download.pdf", Buffer.from(await content.arrayBuffer()));ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
resp, err := client.Sessions.GeneratePDF(ctx, "11111111-2222-3333-4444-555555555555")
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
file, err := os.Create("download.pdf")
if err != nil {
log.Fatal(err)
}
defer file.Close()
if _, err := io.Copy(file, resp.Body); err != nil {
log.Fatal(err)
}import java.nio.file.Path;
import me.didit.Didit;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
client.sessions().generatePdf("11111111-2222-3333-4444-555555555555")
.writeTo(Path.of("download.pdf"));<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$content = $didit->sessions->generatePdf('11111111-2222-3333-4444-555555555555');
$content->saveTo('download.pdf');require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
content = didit.sessions.generate_pdf("11111111-2222-3333-4444-555555555555")
File.binwrite("download.pdf", content)using System;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var content = await client.Sessions.GeneratePdfAsync("11111111-2222-3333-4444-555555555555");
await content.SaveToAsync("download.pdf");"<string>"Compatibilidad con KYC y KYB
Funciona tanto con sesiones de Verificación de usuario (KYC) como de Verificación de empresas (KYB). Didit usa automáticamente la plantilla de PDF que corresponde:- Sesión de Verificación de usuario (KYC) → informe con secciones de verificación de identidad, prueba de vida, coincidencia facial, AML y prueba de domicilio.
- Sesión de Verificación de empresas (KYB) → informe con secciones de registro de empresas, personas clave (UBO y cargos directivos), documentos, AML, cuestionario, teléfono, correo electrónico y análisis de IP, cuando esas funciones forman parte del flujo.
Convención de nombres de archivo
| Tipo | Nombre de archivo |
|---|---|
| Usuario | session_<session_id>.pdf |
| Empresa | business_<session_id>.pdf |
Content-Disposition: attachment; filename=....
Requisito de estado
Para generar un PDF, la sesión debe estar enAPPROVED, DECLINED o IN_REVIEW. Las sesiones en curso o que aún no se han iniciado devuelven 403.
Ejemplos
- PDF de verificación de usuarios (KYC)
- PDF de verificación de empresas (KYB)
curl https://verification.didit.me/v3/session/4c5c7f3a-.../generate-pdf/ \
-H "x-api-key: YOUR_API_KEY" \
-o kyc-report.pdf
curl https://verification.didit.me/v3/session/bs-01HJX1.../generate-pdf/ \
-H "x-api-key: YOUR_API_KEY" \
-o kyb-report.pdf
Marca blanca
Cuando la aplicación tiene activada la personalización de marca blanca, el PDF usa tu logotipo y la URL de tu política de privacidad. Configúralo en Console → Customization.Permiso
Requiereread:sessions. Es el mismo scope para ambos tipos.
Relacionado
- Visión general de las sesiones
- Obtener una sesión: versión JSON de la misma decisión
- Descargar el PDF del historial de un usuario: todas las sesiones notificables de un usuario, en un único archivo
- Esquema de respuesta de KYB: campos incluidos en los PDF de empresas
Autorizaciones
La clave de API de tu aplicación, que encontrarás en Developers -> API keys en la Business Console. La clave principal tiene acceso completo. Una clave con nombre puede tener un alcance limitado: ninguno, lectura o escritura por recurso, limitada a algunos flujos o a sesiones aprobadas, a una lista de direcciones IP y a una fecha de caducidad. 401 significa que la clave es incorrecta, se revocó o expiró; 403 significa que no se envió ninguna clave, que la clave no tiene acceso a este recurso o acción, o que la solicitud provino de una dirección fuera de su lista de IP; 404 en una ruta de sesión significa que la sesión está fuera de los flujos o estados de la clave. Una clave sin acceso a contenido multimedia recibe las URL de imágenes, videos y PDF como null, y una clave sin permiso de escritura en sesiones recibe los enlaces y tokens de sesión como null. Consulta https://docs.didit.me/console/api-keys.
Parámetros de ruta
UUID de la sesión de Verificación de usuarios (KYC) o Verificación de empresas (KYB) que se va a generar: el session_id que devuelve POST /v3/session/. La misma ruta sirve para ambos tipos de sesión; usa el nombre de archivo de Content-Disposition en la respuesta para saber qué tipo de informe recibiste.
Debe ser un UUID bien formado y en minúsculas. La ruta solo coincide con UUID válidos, por lo que el enrutador de URL rechaza un valor mal formado antes de que se ejecute cualquier código de la aplicación, y la respuesta es una página HTML 404 en lugar del sobre JSON {"detail": ...} que se muestra a continuación. El conversor de UUID de la ruta solo coincide con la forma canónica en minúsculas: los UUID con hexadecimales en mayúsculas se rechazan con el 404 en HTML.
"11111111-2222-3333-4444-555555555555"
Respuesta
El documento PDF generado, devuelto directamente como binario application/pdf: no hay envoltorio JSON ni redirección a una URL de descarga. El cuerpo empieza con los bytes mágicos %PDF (PDF 1.7). Guárdalo en un archivo .pdf o transmítelo directamente a quien hizo la llamada.
The response is of type file.