Introducción a la API
Guía de autenticación, headers requeridos y convenciones de la API REST de Plea
curl -X POST https://app.getplea.com/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "usuario@ejemplo.com", "password": "tu-contraseña"}'
const res = await fetch('https://app.getplea.com/api/auth/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email: 'usuario@ejemplo.com',
password: 'tu-contraseña'
})
});
const { token, user } = await res.json();
import requests
response = requests.post('https://app.getplea.com/api/auth/login',
json={
'email': 'usuario@ejemplo.com',
'password': 'tu-contraseña'
}
)
data = response.json()
token = data['token']
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"email": "usuario@ejemplo.com",
"fullName": "María García López"
}
}
{
"error": "Unauthorized",
"message": "Credenciales inválidas"
}
curl -X POST https://app.getplea.com/api/uploads/request-url \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{"filename": "contrato.pdf", "contentType": "application/pdf"}'
const { uploadUrl, fileUrl } = await fetch('/api/uploads/request-url', {
method: 'POST',
headers: {
'Authorization': 'Bearer TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
filename: 'contrato.pdf',
contentType: 'application/pdf'
})
}).then(r => r.json());
await fetch(uploadUrl, {
method: 'PUT',
body: file,
headers: { 'Content-Type': 'application/pdf' }
});
{
"uploadUrl": "https://storage.googleapis.com/plea-uploads/signed-url...",
"fileUrl": "https://storage.googleapis.com/plea-uploads/org-id/contrato.pdf"
}
La API REST de Plea permite integrar tu despacho con aplicaciones externas, automatizar procesos y acceder a todos los datos de tu organización de forma programática.
Base URL
Todas las peticiones se realizan contra:
https://app.getplea.com/api
Autenticación
Plea utiliza autenticación basada en Bearer Token (JWT). Para obtener un token, realiza una petición al endpoint de login.
Headers requeridos
Incluye estos headers en todas las peticiones autenticadas:
| Header | Valor | Descripción |
|---|---|---|
Authorization | Bearer <token> | Token JWT obtenido en el login |
Content-Type | application/json | Tipo de contenido para peticiones con body |
x-organization-id | <uuid> | Identificador de la organización activa |
El header x-organization-id es necesario en la mayoría de endpoints. Un usuario puede pertenecer a varias organizaciones, y este header indica cuál está activa.
Paginación
Los endpoints de lista aceptan parámetros de paginación:
| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
limit | number | 50 | Número máximo de resultados |
offset | number | 0 | Desplazamiento desde el inicio |
Filtros de fecha
Para filtrar por rango de fechas, usa:
| Parámetro | Formato | Ejemplo |
|---|---|---|
dateFrom | ISO 8601 | 2026-01-01 |
dateTo | ISO 8601 | 2026-12-31 |
Códigos de respuesta
| Código | Significado |
|---|---|
200 | OK — Petición exitosa |
201 | Created — Recurso creado correctamente |
400 | Bad Request — Parámetros inválidos o faltantes |
401 | Unauthorized — Token inválido o expirado |
403 | Forbidden — Sin permisos para esta acción |
404 | Not Found — Recurso no encontrado |
409 | Conflict — El recurso ya existe |
500 | Internal Server Error — Error del servidor |
Streaming (SSE)
Los endpoints de IA que terminan en -stream devuelven Server-Sent Events. Mantén la conexión abierta y procesa los eventos conforme llegan:
const eventSource = new EventSource('/api/ai/case-assistant-stream', {
headers: { 'Authorization': 'Bearer TOKEN' }
});
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log(data.content);
};
Subida de archivos
Para subir archivos, primero solicita una URL firmada:
Last updated today