Documentación de SecuryPrompt
Aprende a integrar SecuryPrompt en tu aplicación para proteger datos sensibles cuando uses LLMs como GPT-4, Claude o Gemini.
Quick Start
Integra SecuryPrompt en 5 minutos con solo cambiar una URL.
API Reference
Documentación completa de todos los endpoints disponibles.
SDKs
Ejemplos en Python, JavaScript y otros lenguajes.
#Introducción
SecuryPrompt es un proxy de sanitización PII (Información Personal Identificable) que se interpone entre tu aplicación y los proveedores de IA como OpenAI. Automáticamente detecta y reemplaza datos sensibles antes de enviarlos al LLM, y restaura los valores originales en la respuesta.
Drop-in replacement: SecuryPrompt es 100% compatible con la API de OpenAI. Solo necesitas cambiar la URL base.
¿Qué problema resuelve?
- Los datos de tus clientes nunca llegan a servidores de terceros
- Cumplimiento automático con GDPR, HIPAA, CCPA
- Sin cambios en tu código existente
- Latencia mínima (<50ms adicionales)
#Quick Start
1. Obtén tu API Key de SecuryPrompt
Regístrate en nuestra página para obtener tu API Key gratuita.
2. Configura tu código
Cambia la URL base y añade los headers requeridos:
# Antes (directo a OpenAI - datos expuestos)
client = OpenAI(
api_key="sk-tu-openai-key",
base_url="https://api.openai.com/v1"
)
# Después (a través de SecuryPrompt - datos protegidos)
client = OpenAI(
api_key="sk_sanitizer_xxx", # Tu API Key de SecuryPrompt
base_url="https://api.prompt.secury.site/v1",
default_headers={
"X-LLM-API-Key": "sk-tu-openai-key" # Tu API Key de OpenAI/Claude/Gemini
}
)
BYOK (Bring Your Own Key): Usas tu propia API key de OpenAI, Anthropic o Google. SecuryPrompt solo sanitiza los datos. Tú controlas y pagas tu uso del LLM directamente.
3. Usa normalmente
Tu código existente funciona sin cambios. La sanitización es transparente:
response = client.chat.completions.create(
model="gpt-4o-mini", # O claude-3-sonnet, gemini-1.5-flash, etc.
messages=[{
"role": "user",
"content": "El cliente Juan García (juan@empresa.com) necesita ayuda"
}]
)
# El LLM recibió: "El cliente <PERSON_1> (<EMAIL_1>) necesita ayuda"
# Tú recibes la respuesta con "Juan García" y "juan@empresa.com" restaurados
#Autenticación
Headers requeridos para el proxy
| Header | Descripción | Ejemplo |
|---|---|---|
Authorization |
Tu API Key de SecuryPrompt | Bearer sk_sanitizer_xxx |
X-LLM-API-Key |
Tu API Key del proveedor LLM | sk-proj-xxx (OpenAI) |
X-LLM-Provider |
Proveedor (opcional, se detecta del modelo) | openai, anthropic, google |
Proveedores soportados
| Proveedor | Modelos | Obtén tu API Key |
|---|---|---|
| OpenAI | gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-3.5-turbo | platform.openai.com |
| Anthropic | claude-3-opus, claude-3-sonnet, claude-3-haiku | console.anthropic.com |
| gemini-1.5-pro, gemini-1.5-flash, gemini-pro | aistudio.google.com |
JWT Tokens (para dashboard)
Para endpoints de usuario y configuración, usa tokens JWT obtenidos en login:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Tokens JWT: El access token expira en 30 minutos. Usa el refresh token para obtener uno nuevo sin re-autenticar.
Bearer sk_sanitizer_xxx o Bearer eyJ...Content-Typeapplication/json#Registro
Crea una cuenta nueva y obtén tokens de acceso.
Request Body
{
"email": "usuario@empresa.com",
"password": "SecurePassword123!",
"name": "Nombre Usuario",
"company": "Empresa S.A."
}
Response (201)
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"refresh_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "bearer",
"expires_in": 1800
}
#Login
Inicia sesión con credenciales existentes.
Request Body
{
"email": "usuario@empresa.com",
"password": "SecurePassword123!"
}
Response (200)
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"refresh_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "bearer",
"expires_in": 1800
}
#Refresh Token
Renueva el access token antes de que expire.
Headers
Authorization: Bearer <refresh_token>
Response (200)
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "bearer",
"expires_in": 1800
}
#Dashboard de Usuario
Endpoints para gestionar tu cuenta y configuración.
Obtener datos del dashboard (requiere JWT).
Response
{
"user": {
"id": "uuid",
"email": "usuario@empresa.com",
"name": "Nombre Usuario",
"tier": "startup"
},
"usage": {
"requests_this_month": 4500,
"monthly_limit": 100000,
"percentage_used": 4.5
},
"api_keys": [...]
}
Actualizar perfil de usuario.
Request
{
"name": "Nuevo Nombre",
"company": "Nueva Empresa"
}
Cambiar contraseña.
Request
{
"current_password": "OldPassword123!",
"new_password": "NewSecurePassword456!"
}
#Chat Completions
Endpoint principal compatible con OpenAI. Envía mensajes y recibe respuestas con PII sanitizado automáticamente.
Request Body
| Parámetro | Tipo | Descripción |
|---|---|---|
modelRequired |
string | ID del modelo (gpt-4, gpt-3.5-turbo, etc.) |
messagesRequired |
array | Lista de mensajes del chat |
temperatureOptional |
number | Creatividad (0-2). Default: 1 |
max_tokensOptional |
integer | Máximo de tokens en respuesta |
Ejemplo Request
curl -X POST https://api.prompt.secury.site/v1/chat/completions \
-H "Authorization: Bearer sk_sanitizer_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4",
"messages": [
{
"role": "user",
"content": "Ayuda a Juan Pérez (juan@test.com) con su pedido"
}
],
"temperature": 0.7
}'
Ejemplo Response
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1706889600,
"model": "gpt-4",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hola Juan Pérez, con gusto te ayudo..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 50,
"total_tokens": 75
}
}
#API Keys
Gestiona tus API Keys programáticamente. Requiere autenticación con JWT token.
Crea una nueva API Key.
Request Body
{
"name": "Key para producción"
}
Response
{
"key": "sk_sanitizer_xxxxxxxxxxxxx",
"key_id": "uuid-xxx",
"name": "Key para producción",
"prefix": "sk_sanitizer_xxx...",
"created_at": "2026-02-04T16:00:00Z"
}
Guarda tu API Key inmediatamente. Por seguridad, no la mostramos de nuevo.
Lista todas tus API Keys.
{
"keys": [
{
"key_id": "uuid",
"name": "Default Key",
"prefix": "sk_sanitizer_abc...",
"is_active": true,
"created_at": "2026-02-04T16:00:00Z",
"total_requests": 1250
}
],
"total": 1
}
Revocar (desactivar) una API Key.
{
"message": "API key revoked successfully",
"key_id": "uuid"
}
#Estadísticas de Uso
Consulta las estadísticas de uso del periodo actual.
{
"requests_this_month": 450,
"monthly_limit": 100,
"percentage_used": 4.5,
"tier": "free",
"reset_date": "2026-03-02T16:00:00Z"
}
#Tipos de PII Detectados
SecuryPrompt detecta automáticamente los siguientes tipos de información personal:
| Tipo | Ejemplos | Placeholder |
|---|---|---|
| juan@empresa.com, contact@gmail.com | <REDACTED_EMAIL_1> |
|
| PHONE_NUMBER | +34 612 345 678, (555) 123-4567 | <REDACTED_PHONE_NUMBER_1> |
| PERSON | Juan García López, Dr. María Sánchez | <REDACTED_PERSON_1> |
Próximamente: Tarjetas de crédito, DNI/SSN, direcciones, y tipos personalizados (Enterprise).
#Cómo Funciona
Tu App SecuryPrompt OpenAI
│ │ │
│ "Email de Juan García │ │
│ es juan@test.com" │ │
├───────────────────────────►│ │
│ │ │
│ │ 1. Detecta PII │
│ │ 2. Crea mapeo: │
│ │ Juan García → PERSON_1 │
│ │ juan@test.com → EMAIL_1│
│ │ │
│ │ "Email de <PERSON_1> │
│ │ es <EMAIL_1>" │
│ ├───────────────────────────►│
│ │ │
│ │ "Guardé el email de │
│ │ <PERSON_1>" │
│ │◄───────────────────────────┤
│ │ │
│ │ 3. Restaura valores: │
│ │ PERSON_1 → Juan García │
│ │ │
│ "Guardé el email de │ │
│ Juan García" │ │
│◄───────────────────────────┤ │
│ │ │
#Python SDK
Usa el SDK oficial de OpenAI con SecuryPrompt:
from openai import OpenAI
# Configura el cliente con ambas API keys
client = OpenAI(
api_key="sk_sanitizer_tu-api-key", # Tu API Key de SecuryPrompt
base_url="https://api.prompt.secury.site/v1",
default_headers={
"X-LLM-API-Key": "sk-tu-openai-key" # Tu API Key de OpenAI
}
)
# Usa normalmente - ¡la sanitización es automática!
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "user", "content": "Cliente: Juan López (juan@test.com)"}
]
)
print(response.choices[0].message.content)
# OpenAI nunca vio "Juan López" ni "juan@test.com"
#JavaScript SDK
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'sk_sanitizer_tu-api-key', // Tu API Key de SecuryPrompt
baseURL: 'https://api.prompt.secury.site/v1',
defaultHeaders: {
'X-LLM-API-Key': 'sk-tu-openai-key' // Tu API Key de OpenAI
}
});
const response = await client.chat.completions.create({
model: 'gpt-4o-mini',
messages: [
{ role: 'user', content: 'Cliente: Ana García (ana@empresa.com)' }
]
});
console.log(response.choices[0].message.content);
#n8n
Usa SecuryPrompt en tus workflows de n8n con el nodo HTTP Request:
Configuración del nodo HTTP Request
| Campo | Valor |
|---|---|
| Method | POST |
| URL | https://api.prompt.secury.site/v1/chat/completions |
| Authentication | None (usamos headers manuales) |
| Send Headers | ✅ Activado |
| Send Body | ✅ Activado |
| Body Content Type | JSON |
Headers requeridos
| Name | Value |
|---|---|
Authorization |
Bearer sk_sanitizer_tu-api-key |
X-LLM-API-Key |
sk-proj-tu-openai-key |
Content-Type |
application/json |
Body JSON
{
"model": "gpt-4o-mini",
"messages": [
{
"role": "user",
"content": "{{ $json.mensaje }}"
}
]
}
Tip: Usa expresiones de n8n como {{ $json.mensaje }} para pasar datos dinámicos de nodos anteriores. Los datos sensibles serán sanitizados automáticamente.
Respuesta
La respuesta llega en formato estándar de OpenAI. Accede al contenido con:
{{ $json.choices[0].message.content }}
#Anthropic (Claude)
import OpenAI from 'openai';
// SecuryPrompt normaliza la API - usa el mismo formato para todos los proveedores
const client = new OpenAI({
apiKey: 'sk_sanitizer_tu-api-key',
baseURL: 'https://api.prompt.secury.site/v1',
defaultHeaders: {
'X-LLM-API-Key': 'sk-ant-tu-anthropic-key' // Tu API Key de Anthropic
}
});
const response = await client.chat.completions.create({
model: 'claude-3-5-sonnet-20241022', // Modelo de Anthropic
messages: [
{ role: 'user', content: 'Analiza el caso de María López (maria@corp.com)' }
]
});
#cURL
curl https://api.prompt.secury.site/v1/chat/completions \
-H "Authorization: Bearer sk_sanitizer_xxx" \
-H "X-LLM-API-Key: sk-tu-openai-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{"role": "user", "content": "Ayuda a Juan (juan@test.com)"}
]
}'
#Códigos de Error
| Código | Descripción | Solución |
|---|---|---|
400 |
Request inválido | Verifica el formato JSON y campos requeridos |
401 |
API Key inválida o faltante | Verifica el header Authorization |
403 |
API Key revocada o expirada | Genera una nueva API Key |
429 |
Rate limit excedido | Espera y reintenta, o actualiza tu plan |
500 |
Error interno | Contacta soporte |
502 |
Error conectando a OpenAI | Reintenta en unos segundos |
#Rate Limits
| Plan | Requests/min | Requests/mes |
|---|---|---|
| Free | 20 | 100 |
| Startup | 100 | 100,000 |
| Enterprise | 1,000+ | Ilimitado |
Cuando excedes el límite, recibes un error 429 con el header Retry-After indicando cuántos segundos esperar.
#Precios
Free
$0
100 requests/mes
Startup
$49/mes
100,000 requests/mes
Enterprise
Custom
Volumen ilimitado
Ver comparación completa de planes →
¿Necesitas ayuda? support@SecuryPrompt.io
© 2026 SecuryPrompt. Todos los derechos reservados.