Referencia
Referencia de la API
Cada endpoint, documentado entero: para qué sirve, sus parámetros, la forma exacta de la respuesta, los errores que puede dar y un ejemplo en curl, Python y JavaScript.
Autenticación
Todas las llamadas necesitan la clave de API en la cabecera Authorization, como bearer. No hay ningún otro método de autenticación, y nunca va en la URL ni en el cuerpo.
Authorization: Bearer iuris_sk_…Dirección base
Mientras no exista un punto de conexión propio para la API (api.jurilia.com, todavía sin abrir), la plataforma vive en la misma dirección que el resto de la aplicación. Todas las rutas de este documento son relativas a ella:
https://app.jurilia.com/v1Restricción por IP/CIDR
Cada clave puede llevar, desde Configuración › API, una lista blanca de IPs o redes (CIDR, IPv4 o IPv6). Vacía —lo normal— significa sin restricción. Con la lista puesta, una llamada desde fuera de ella da 403 aunque la clave sea válida: ver Errores y límites.
Límite de peticiones
120 llamadas por minuto, por clave. Toda respuesta lleva las cabeceras `X-RateLimit-Limit`, `X-RateLimit-Remaining` y `X-RateLimit-Reset`: ver Errores y límites para el detalle.
Antes de los ejemplos: un ayudante en tres líneas
Cada endpoint de abajo muestra su `curl` completo, y además una llamada a este mismo ayudante en Python y en JavaScript, para no repetir la cabecera y la URL en cada ejemplo.
import requests
def dev_api(ruta, **parametros):
r = requests.get(
f"https://app.jurilia.com/v1/dev{ruta}",
headers={"Authorization": "Bearer TU_CLAVE"},
params=parametros,
)
r.raise_for_status() # lanza si es 4xx/5xx — ver Errores y límites
return r.json()async function devApi(ruta, parametros = {}) {
const url = new URL(`https://app.jurilia.com/v1/dev${ruta}`);
for (const [clave, valor] of Object.entries(parametros)) {
url.searchParams.set(clave, valor);
}
const r = await fetch(url, { headers: { Authorization: "Bearer TU_CLAVE" } });
if (!r.ok) throw new Error(`${r.status}: ${(await r.json()).mensaje}`);
return r.json();
}El contrato entero, en una línea
Todo lo de esta página sale de un único OpenAPI 3.1 que la propia API genera y expone en tiempo real. Pégalo en editor.swagger.io, o impórtalo en Postman o Insomnia, para una vista interactiva con la que probar llamadas sin escribir código:
https://app.jurilia.com/v1/openapi.jsonLos endpoints
Diez, hoy: el eco de comprobación y los datos públicos del BORME (art. 13 LPI) que ya usa la aplicación. Nada que cuelgue de un despacho —ni cartera, ni correo de novedades, ni vincular una parte a un expediente—: eso es terreno de la sesión del abogado, no de una clave de un tercero.
/v1/dev/pingComprobar la clave
Confirma que la clave es válida y devuelve el despacho al que pertenece. No lee ni expone ningún dato de negocio: ni expedientes, ni documentos, ni nada del art. 9 o el art. 10 RGPD. El primer paso de cualquier integración, antes de construir nada encima.
Parámetros
Ninguno.
Respuesta
{
"ok": true,
"despachoId": "9f2c1e40-2b3a-4d11-9c8a-1234567890ab",
"ambitos": [],
"ahora": "2026-10-01T09:00:00.000Z"
}Puede dar también
401 (Falta la clave, o no existe, o ha sido revocada.) · 403 (La clave no admite llamadas desde esta IP.) · 429 (Demasiadas llamadas seguidas con esta clave.)
curl
curl https://app.jurilia.com/v1/dev/ping \
-H "Authorization: Bearer TU_CLAVE"Python
dev_api("/ping")JavaScript
await devApi('/ping')/v1/dev/empresasBuscar empresas en el BORME
Entiende un CIF, una hoja registral («M 167931») o un nombre; menos de tres letras no busca. `provincia` y `cnae` filtran el resultado ya encontrado; `cnae` es la división (dos dígitos) del objeto social publicado, no el código completo del Registro.
Parámetros
qstringobligatorio— El CIF, la hoja o el nombre a buscar.provinciastringopcional— Nombre exacto de la provincia.cnaestringopcional— División CNAE, dos dígitos («62» = programación y consultoría informática).limiteenteroopcional— Entre 1 y 100. Por defecto, 25.
Respuesta
{
"tipo": "nombre",
"sugerencia": null,
"empresas": [
{
"id": "1234567",
"denominacion": "ACME SOCIEDAD LIMITADA",
"provincia": "Madrid",
"hoja": "M 167931",
"titular": "sociedad",
"primeraPublicacion": "2010-03-15",
"ultimaPublicacion": "2026-06-02",
"concursalPublicadoEn": null,
"disolucionPublicadaEn": null,
"extincionPublicadaEn": null,
"nombreQueCasa": null
}
]
}Puede dar también
401 (Falta la clave, o no existe, o ha sido revocada.) · 403 (La clave no admite llamadas desde esta IP.) · 429 (Demasiadas llamadas seguidas con esta clave.) · 400 (Un parámetro no tiene la forma pedida.)
curl
curl "https://app.jurilia.com/v1/dev/empresas?q=acme&provincia=Madrid" \
-H "Authorization: Bearer TU_CLAVE"Python
dev_api("/empresas", q="acme", provincia="Madrid")JavaScript
await devApi('/empresas', { q: 'acme', provincia: 'Madrid' })/v1/dev/empresas/{empresaId}Ficha de una empresa
Lo compacto de la ficha: situación (activa, concurso, disuelta, extinguida, con su fecha), capital, cargos vigentes y la última inscripción. `empresaId` es el que devuelve el buscador.
Parámetros
empresaIdstringobligatorio— El identificador, en la ruta.paginaenteroopcional— De la cronología de inscripciones.
Respuesta
{
"id": "1234567",
"denominacion": "ACME SOCIEDAD LIMITADA",
"provincia": "Madrid",
"hoja": "M 167931",
"titular": "sociedad",
"situacion": "activa",
"situacionFecha": null,
"constitucionFecha": "2010-03-15",
"primeraPublicacion": "2010-03-15",
"ultimaPublicacion": "2026-06-02",
"capitalCentimos": 300000,
"totalInscripciones": 14,
"denominaciones": [],
"cargosVigentes": [{ "cargo": "Administrador único", "nombre": "…" }],
"ultimaInscripcion": {
"fecha": "2026-06-02",
"boletin": "BORME-A-2026-104-12",
"urlPdf": "https://www.boe.es/borme/dias/2026/06/02/pdfs/…pdf",
"actos": [{ "tipo": "cambio_de_administradores", "etiqueta": null }]
}
}Puede dar también
401 (Falta la clave, o no existe, o ha sido revocada.) · 403 (La clave no admite llamadas desde esta IP.) · 429 (Demasiadas llamadas seguidas con esta clave.) · 404 (No está en lo cargado del BORME.)
curl
curl https://app.jurilia.com/v1/dev/empresas/1234567 \
-H "Authorization: Bearer TU_CLAVE"Python
dev_api("/empresas/1234567")JavaScript
await devApi('/empresas/1234567')/v1/dev/personasBuscar personas en el BORME por su nombre
Dato público del boletín. El BORME no publica el DNI: nombres iguales pueden ser personas distintas, y la respuesta lo dice (`homonimos: "posibles"`). Nunca una etiqueta sobre la persona: sólo el hecho publicado, con su cita.
Parámetros
qstringobligatorio— El nombre a buscar.
Respuesta
{
"personas": [
{
"slug": "juan-perez-garcia",
"nombre": "JUAN PÉREZ GARCÍA",
"empresas": 2,
"ultimaAparicion": "2026-05-10",
"homonimos": "posibles"
}
]
}Puede dar también
401 (Falta la clave, o no existe, o ha sido revocada.) · 403 (La clave no admite llamadas desde esta IP.) · 429 (Demasiadas llamadas seguidas con esta clave.) · 400 (Un parámetro no tiene la forma pedida.)
curl
curl "https://app.jurilia.com/v1/dev/personas?q=juan+perez" \
-H "Authorization: Bearer TU_CLAVE"Python
dev_api("/personas", q="juan perez")JavaScript
await devApi('/personas', { q: 'juan perez' })/v1/dev/personas/{slug}Ficha de una persona del BORME
Sus sociedades y las variantes con que ha aparecido su nombre. `slug` es el que devuelve el buscador de personas.
Parámetros
slugstringobligatorio— En la ruta.
Respuesta
{
"slug": "juan-perez-garcia",
"nombre": "JUAN PÉREZ GARCÍA",
"variantes": ["JUAN PÉREZ GARCÍA"],
"recortada": false,
"homonimos": "posibles",
"empresas": [{ "empresaId": "1234567", "denominacion": "ACME SOCIEDAD LIMITADA", "provincia": "Madrid" }]
}Puede dar también
401 (Falta la clave, o no existe, o ha sido revocada.) · 403 (La clave no admite llamadas desde esta IP.) · 429 (Demasiadas llamadas seguidas con esta clave.) · 404 (No está en lo cargado del BORME.)
curl
curl https://app.jurilia.com/v1/dev/personas/juan-perez-garcia \
-H "Authorization: Bearer TU_CLAVE"Python
dev_api("/personas/juan-perez-garcia")JavaScript
await devApi('/personas/juan-perez-garcia')/v1/dev/provinciasProvincias con algún boletín del BORME cargado
Para el filtro `provincia` de `GET /v1/dev/empresas`. Sin parámetros.
Parámetros
Ninguno.
Respuesta
{
"provincias": ["Álava", "Albacete", "Alicante", "…"]
}Puede dar también
401 (Falta la clave, o no existe, o ha sido revocada.) · 403 (La clave no admite llamadas desde esta IP.) · 429 (Demasiadas llamadas seguidas con esta clave.)
curl
curl https://app.jurilia.com/v1/dev/provincias \
-H "Authorization: Bearer TU_CLAVE"Python
dev_api("/provincias")JavaScript
await devApi('/provincias')/v1/dev/boletinesLos días con BORME cargado de un mes
Del más reciente al más antiguo.
Parámetros
mesAAAA-MMobligatorio— El mes a consultar.
Respuesta
{
"dias": [
{ "fecha": "2026-09-30", "numero": 184, "documentos": 52, "inscripciones": 1402 }
]
}Puede dar también
401 (Falta la clave, o no existe, o ha sido revocada.) · 403 (La clave no admite llamadas desde esta IP.) · 429 (Demasiadas llamadas seguidas con esta clave.) · 400 (Un parámetro no tiene la forma pedida.)
curl
curl "https://app.jurilia.com/v1/dev/boletines?mes=2026-09" \
-H "Authorization: Bearer TU_CLAVE"Python
dev_api("/boletines", mes="2026-09")JavaScript
await devApi('/boletines', { mes: '2026-09' })/v1/dev/boletines/{fecha}Las novedades publicadas en una fecha
Un día de BORME: sus boletines provinciales, con el PDF oficial de cada uno y cuántas inscripciones trae. 404 si ese día no se ha cargado —todavía, o nunca hubo boletín: fin de semana o festivo—.
Parámetros
fechaAAAA-MM-DDobligatorio— En la ruta.
Respuesta
{
"fecha": "2026-09-30",
"numero": 184,
"documentos": 52,
"inscripciones": 1402,
"provincias": [
{
"identificador": "BORME-A-2026-184-28",
"provincia": "Madrid",
"urlPdf": "https://www.boe.es/borme/dias/2026/09/30/pdfs/…pdf",
"anuncios": 311
}
]
}Puede dar también
401 (Falta la clave, o no existe, o ha sido revocada.) · 403 (La clave no admite llamadas desde esta IP.) · 429 (Demasiadas llamadas seguidas con esta clave.) · 404 (No está en lo cargado del BORME.)
curl
curl https://app.jurilia.com/v1/dev/boletines/2026-09-30 \
-H "Authorization: Bearer TU_CLAVE"Python
dev_api("/boletines/2026-09-30")JavaScript
await devApi('/boletines/2026-09-30')/v1/dev/estadisticasCuántos actos por tipo y cuántas inscripciones por provincia
El intervalo se acota en el servidor a 31 días; si se recorta, la respuesta lo dice (`recortado: true`) y cuenta desde `hasta` hacia atrás.
Parámetros
desdeAAAA-MM-DDobligatoriohastaAAAA-MM-DDobligatorioprovinciastringopcional— Acota el recuento a una provincia.
Respuesta
{
"desde": "2026-09-01",
"hasta": "2026-09-30",
"recortado": false,
"provincia": null,
"dias": 22,
"inscripciones": 38420,
"actos": 41106,
"porTipo": [{ "tipo": "cambio_de_administradores", "actos": 9122 }],
"porProvincia": [{ "provincia": "Madrid", "inscripciones": 7310 }]
}Puede dar también
401 (Falta la clave, o no existe, o ha sido revocada.) · 403 (La clave no admite llamadas desde esta IP.) · 429 (Demasiadas llamadas seguidas con esta clave.) · 400 (Un parámetro no tiene la forma pedida.)
curl
curl "https://app.jurilia.com/v1/dev/estadisticas?desde=2026-09-01&hasta=2026-09-30" \
-H "Authorization: Bearer TU_CLAVE"Python
dev_api("/estadisticas", desde="2026-09-01", hasta="2026-09-30")JavaScript
await devApi('/estadisticas', { desde: '2026-09-01', hasta: '2026-09-30' })/v1/dev/estadoHasta dónde está cargado el BORME
El último día con BORME cargado y cuántos días e inscripciones hay en total. Útil para saber si «no hay resultados» significa eso, o que el BORME lleva días sin actualizarse.
Parámetros
Ninguno.
Respuesta
{
"ultimoDia": "2026-09-30",
"diasCargados": 4215,
"inscripciones": 9834201
}Puede dar también
401 (Falta la clave, o no existe, o ha sido revocada.) · 403 (La clave no admite llamadas desde esta IP.) · 429 (Demasiadas llamadas seguidas con esta clave.)
curl
curl https://app.jurilia.com/v1/dev/estado \
-H "Authorization: Bearer TU_CLAVE"Python
dev_api("/estado")JavaScript
await devApi('/estado')Todavía no disponible
Construido por dentro de la aplicación, sin ruta pública todavía. Se abre por fases; esta página se actualiza cuando lo haga. Nada de un despacho (expedientes, escritos, clientes) entra nunca en esta API: es un catálogo sobre fuentes públicas y sobre el asistente que las lee.
API del asistente jurídico
Preguntas en castellano sobre los cuatro órdenes —civil, penal, social y contencioso-administrativo— con respuesta y cita verificada, o «no encontrado» si no hay fuente. Se abre después que el directorio BORME: esta página se actualiza en cuanto lo haga.