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?

#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
Google 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-Type Tipo de contenido application/json

#Registro

Crea una cuenta nueva y obtén tokens de acceso.

POST /v1/auth/register

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.

POST /v1/auth/login

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.

POST /v1/auth/refresh

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.

GET /v1/users/dashboard

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": [...]
}
PUT /v1/users/profile

Actualizar perfil de usuario.

Request

{
  "name": "Nuevo Nombre",
  "company": "Nueva Empresa"
}
PUT /v1/users/password

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.

POST /v1/chat/completions

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.

POST /v1/keys

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.

GET /v1/keys

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
}
DELETE /v1/keys/{key_id}

Revocar (desactivar) una API Key.

{
  "message": "API key revoked successfully",
  "key_id": "uuid"
}

#Estadísticas de Uso

GET /v1/keys/usage

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
EMAIL 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.