Para desarrolladores

API de REDACTA

Envía un texto y recibe el mismo texto con los datos personales cambiados por etiquetas como [PERSONA], [CORREO] o [DOCUMENTO]. Pensada para ERP, CRM, historias clínicas y flujos internos de las empresas que necesitan quitar datos personales de sus textos (por ejemplo, como apoyo a sus obligaciones bajo la Ley 1581 de 2012 u otra ley de su país). La responsabilidad de revisar el resultado y de cumplir la ley es de quien publica el texto.

Qué hace la API y qué no. La API anonimiza texto. Los PDF no se envían por la API: se procesan en el navegador (por eso el documento nunca se sube entero). Para carpetas de PDF usa el procesamiento por lote de la herramienta, que entrega un ZIP.

1. Consigue una llave

Disponible en los planes Empresa y Anual Premium. Entra a Mi cuenta → Acceso por API y pulsa «Crear llave». Se muestra una sola vez: guárdala en un lugar seguro (por ejemplo, una variable de entorno). Puedes tener hasta 3 llaves y borrarlas cuando quieras; al borrarla deja de servir al instante.

2. Autenticación

Todas las llamadas llevan la llave en la cabecera Authorization. Nunca la pongas en la dirección (quedaría en los registros).

Authorization: Bearer rk_0123456789abcdef0123456789abcdef01234567

3. Comprobar que la llave funciona

curl https://redactacol.online/api/index.php?accion=api_estado \
  -H "Authorization: Bearer $REDACTA_LLAVE"

Respuesta:

{ "ok": true, "plan": "empresa", "creditos": 940, "vence": "2026-11-08" }

4. Anonimizar un texto

POST /api/index.php?accion=api_anonimizar

CampoTipoQué es
textotextoObligatorio. Hasta 12.000 caracteres por llamada (divide los textos más largos).
iatrue / falsePor defecto true: además de la red de seguridad, la IA busca nombres de personas. Cuesta 1 crédito. Con false es gratis, pero los nombres no se detectan.
paistextoOpcional. La jurisdicción cuyas reglas de búsqueda se usan: CO (Colombia), MX, BR, AR, CL, PE, EC, UY, PA, CR, SV, DO, PR, UE (Unión Europea) o US, o TODOS. Cada país usa sus propios identificadores (por ejemplo, BR busca CPF y CO busca cédulas). Si no lo mandas, se usan las reglas de todos los países a la vez, como siempre. Un código que no existe se ignora. Con ia: true, el país también se le indica a la IA.
montostrue / falsePor defecto true: también tapa cantidades de dinero. Pon false para dejarlas.
curl -X POST "https://redactacol.online/api/index.php?accion=api_anonimizar" \
  -H "Authorization: Bearer $REDACTA_LLAVE" \
  -H "Content-Type: application/json" \
  -d '{"texto": "Contrato de María Quintero, correo mq@correo.com, cel 300 123 4567, C.C. 1.023.456.789."}'

Respuesta:

{
  "ok": true,
  "texto_anonimo": "Contrato de [PERSONA], correo [CORREO], cel [TELEFONO], C.C. [DOCUMENTO].",
  "detecciones": [
    { "tipo": "nombre",   "texto": "María Quintero" },
    { "tipo": "email",    "texto": "mq@correo.com" },
    { "tipo": "telefono", "texto": "300 123 4567" },
    { "tipo": "dni",      "texto": "1.023.456.789" }
  ],
  "pais": null,
  "coste": 1,
  "creditos_restantes": 939
}

El campo pais devuelve el código que se usó (o null si no mandaste uno).

Qué detecta

TipoEtiquetaCómo se encuentra
nombre[PERSONA]Los que traen etiqueta («Paciente:», «Arrendador:», «Mr.», «Dr.», «Nome:»…) siempre; el resto, con IA (ia: true)
dni[DOCUMENTO]Cédulas y documentos con su etiqueta (C.C., C.E., T.I., NUIP…) y los de cada país, verificando sus dígitos cuando se puede: CPF y RG (Brasil), CUIL/CUIT y DNI (Argentina, Perú), RUT (Chile), CURP, RFC, clave de elector y NSS (México), cédulas de Ecuador, Uruguay, Panamá, Costa Rica y República Dominicana, DUI (El Salvador), RUC de Perú y Ecuador, DNI y NIE (España), NIR (Francia), Codice Fiscale (Italia), National Insurance (Reino Unido), Seguro Social, ITIN, licencia de conducir y MRN (EE. UU.)
email[CORREO]Siempre
telefono[TELEFONO]Celulares colombianos; fijos con su etiqueta; internacionales con «+»; de EE. UU., Puerto Rico, República Dominicana y Brasil; y con etiqueta (Tel., Cel., Móvil…) en los demás países
direccion[DIRECCION]Direcciones colombianas (Calle 45 # 12-30…), de barrio (Manzana C Casa 12), de España y Brasil (Calle Mayor 12, Rua das Flores 123), de EE. UU. (123 Main St, Apt 4B) y la IA
tarjeta[TARJETA]Números que pasan la validación de tarjetas
iban[CUENTA]Cuentas con la palabra «cuenta» o el nombre del banco, CLABE de México, CBU de Argentina, CCI de Perú y IBAN europeos (verificados con módulo 97)
matricula, radicado[MATRICULA], [RADICADO]Placas de vehículos y matrículas inmobiliarias; radicados de procesos judiciales (siempre con su etiqueta)
fecha_nacimiento, pasaporte[FECHA_NACIMIENTO], [PASAPORTE]Con su etiqueta
monto[MONTO]Cantidades de dinero ($ 2.500.000, COP…); se puede apagar

Próximamente

Todavía no existen: avisos automáticos (webhooks) cuando termina un trabajo, integraciones nativas con Google Drive, Dropbox o SharePoint, y procesamiento de PDF por la API. Hoy los PDF se procesan en el navegador (lote de hasta 200 documentos con ZIP) y la API anonimiza texto. Si necesitas una de estas integraciones, escríbenos a gerencia@reichtumgroup.com.

5. Errores y límites

CódigoSignifica
400Falta el campo texto.
401Llave ausente, inválida, borrada, o tu plan venció.
402Sin créditos. Con "ia": false sigue siendo gratis.
413El texto pasa de 12.000 caracteres.
429Demasiadas llamadas: máximo 120 por minuto por llave.
502 / 503La IA no respondió. No se descuenta ningún crédito; reintenta en un momento.

Toda respuesta de error trae { "ok": false, "error": "…" } con un mensaje en español.

Ejemplo en JavaScript

const r = await fetch("https://redactacol.online/api/index.php?accion=api_anonimizar", {
  method: "POST",
  headers: { "Authorization": "Bearer " + process.env.REDACTA_LLAVE, "Content-Type": "application/json" },
  body: JSON.stringify({ texto: historiaClinica, montos: false }),
});
const { texto_anonimo } = await r.json();

Ejemplo en PHP

$ch = curl_init("https://redactacol.online/api/index.php?accion=api_anonimizar");
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("REDACTA_LLAVE"), "Content-Type: application/json"],
  CURLOPT_POSTFIELDS => json_encode(["texto" => $texto]),
]);
$respuesta = json_decode(curl_exec($ch), true);
echo $respuesta["texto_anonimo"];

Privacidad

El texto se analiza al momento y no se guarda: en tu cuenta solo queda cuántos créditos se gastaron. Con "ia": true el texto viaja al proveedor de IA para encontrar nombres; con "ia": false no sale de nuestro servidor. Revisa siempre el resultado: ninguna detección automática es perfecta y la responsabilidad final es de quien publica el documento. Esto no es asesoría jurídica.