API Audiencias

Inicio / APIs Judiciales / API Audiencias

Descripcion

La API Pública de Audiencias es un servicio web desarrollado por el Poder Judicial que facilita la consulta programática de información sobre audiencias judiciales programadas. A través de esta herramienta, los usuarios pueden acceder a datos detallados de las audiencias, utilizando el Número Único de Caso (NUC) como identificador principal. Esto permite conocer de manera precisa las fechas, horas, tribunales y salas asignadas para cada audiencia, lo que contribuye a mejorar el acceso, la transparencia y la organización de los procesos judiciales, tanto para profesionales del derecho como para la ciudadanía en general.

Manual de Usuario - API Pública de Decisiones Judiciales

API Pública de Audiencias

Poder Judicial - Versión 1.0

Introducción

La API Pública de Audiencias es un servicio web desarrollado por el Poder Judicial que permite consultar información sobre audiencias judiciales programadas de manera programática. Esta API proporciona acceso a datos de audiencias utilizando el Número Único de Caso (NUC) como identificador principal.

Propósito

Esta API está diseñada para facilitar el acceso a información pública sobre audiencias judiciales, permitiendo a desarrolladores, instituciones, ciudadanos y profesionales del derecho consultar datos de forma automatizada y eficiente sobre las audiencias programadas en los diferentes tribunales.

Información General

Versión 1.0
Protocolo HTTPS
Formato de Respuesta JSON
Framework .NET 8.0
Autenticación No requiere (API pública)

Requisitos Previos

Para utilizar esta API, necesitará:

  • Conexión a Internet: Acceso estable a la red
  • Cliente HTTP: Cualquier herramienta capaz de realizar peticiones HTTP (curl, Postman, navegador web, etc.)
  • Número Único de Caso (NUC): El identificador del caso judicial cuyas audiencias desea consultar
  • Conocimientos básicos de:
    • Peticiones HTTP GET
    • Formato JSON
    • Manejo de respuestas de API REST

Endpoint Disponible

ObtenerAudienciasPorNuc

Consulta información de audiencias asociadas a un Número Único de Caso (NUC).

GET
/Audiencias/ObtenerAudienciasPorNuc

URL Base

https://api.poderjudicial.gob.do/Audiencias

Descripción

Este endpoint devuelve una lista de todas las audiencias programadas asociadas al NUC especificado. La respuesta incluye información detallada sobre cada audiencia como la fecha, hora, tribunal, sala, tipo de audiencia, modalidad (presencial/virtual) y enlaces de acceso cuando corresponda.

Parámetros de Consulta

Los parámetros se envían como query parameters en la URL.

Parámetro Tipo Requerido Descripción Validaciones
nuc string Número Único de Caso No puede estar vacío o nulo

Descripción Detallada de Parámetros

nuc (Número Único de Caso)

  • Identificador único del caso judicial asignado por el sistema
  • Formato: Cadena de texto alfanumérica
  • Ejemplo: "199-2020-ELAB-00094"
  • Sensible a mayúsculas y minúsculas

Importante

El parámetro nuc es obligatorio. Si no se proporciona o está vacío, la API devolverá un error 400 (Bad Request).

Estructura de Respuesta

Respuesta Exitosa (200 OK)

La API devuelve un objeto que contiene un array de audiencias en el campo data:

{
  "data": [
    {
      "nuc": "199-2020-ELAB-00094",
      "numeroTramite": "2020-001234",
      "asunto": "Demanda Laboral",
      "tribunal": "Tribunal de Trabajo",
      "sala": "Sala 1",
      "salon": "Salón A",
      "tipoAudiencia": "Audiencia Preliminar",
      "estado": "Programada",
      "urlAudiencia": "https://audiencias.poderjudicial.gob.do/audiencia/12345",
      "urlCelebracion": "https://meet.poderjudicial.gob.do/audiencia/12345",
      "fechaAudiencia": "2024-11-15T09:00:00",
      "horaAudiencia": "09:00 AM",
      "modalidad": "Virtual",
      "fechaAudienciaLetra": "15 de Noviembre de 2024",
      "tipoResultado": "Pendiente"
    }
  ]
}

Campos de la Respuesta

Campo Tipo Descripción
nuc string Número Único de Caso
numeroTramite string Número de trámite del caso
asunto string Descripción breve del asunto del caso
tribunal string Nombre del tribunal donde se celebrará la audiencia
sala string Sala del tribunal asignada
salon string Salón específico dentro de la sala
tipoAudiencia string Tipo de audiencia (Preliminar, Fondo, Conciliación, etc.)
estado string Estado actual de la audiencia (Programada, Celebrada, Cancelada, etc.)
urlAudiencia string URL para acceder a la información de la audiencia
urlCelebracion string URL para acceder a la audiencia virtual (si aplica)
fechaAudiencia datetime Fecha y hora de la audiencia en formato ISO 8601
horaAudiencia string Hora de la audiencia en formato legible
modalidad string Modalidad de la audiencia (Presencial, Virtual, Mixta)
fechaAudienciaLetra string Fecha de la audiencia en formato texto completo
tipoResultado string Resultado o estado del proceso de la audiencia

Nota sobre valores nulos

Algunos campos pueden ser null dependiendo del tipo de audiencia o del estado del proceso. Por ejemplo, urlCelebracion solo estará disponible para audiencias virtuales.

Ejemplos de Uso

Ejemplo 1: Consulta Básica con curl

curl -X GET "https://api.poderjudicial.gob.do/Audiencias/Audiencias/ObtenerAudienciasPorNuc?nuc=199-2020-ELAB-00094"

Ejemplo 2: Consulta con JavaScript (Fetch API)

const obtenerAudiencias = async (nuc) => {
  const url = `https://api.poderjudicial.gob.do/Audiencias/Audiencias/ObtenerAudienciasPorNuc?nuc=${nuc}`;

  try {
    const response = await fetch(url);

    if (!response.ok) {
      throw new Error(`Error HTTP: ${response.status}`);
    }

    const result = await response.json();

    console.log('Total de audiencias:', result.data.length);
    console.log('Audiencias:', result.data);

    return result.data;

  } catch (error) {
    console.error('Error al consultar audiencias:', error);
  }
};

// Uso
obtenerAudiencias('199-2020-ELAB-00094');

Ejemplo 3: Consulta con Python (requests)

import requests

def obtener_audiencias(nuc):
    url = "https://api.poderjudicial.gob.do/Audiencias/Audiencias/ObtenerAudienciasPorNuc"

    params = {
        'nuc': nuc
    }

    try:
        response = requests.get(url, params=params)
        response.raise_for_status()

        result = response.json()
        audiencias = result.get('data', [])

        print(f"Total de audiencias: {len(audiencias)}")

        for audiencia in audiencias:
            print(f"Fecha: {audiencia['fechaAudienciaLetra']}")
            print(f"Tipo: {audiencia['tipoAudiencia']}")
            print(f"Estado: {audiencia['estado']}")
            print(f"Modalidad: {audiencia['modalidad']}")
            print("---")

        return audiencias

    except requests.exceptions.RequestException as e:
        print(f"Error al consultar la API: {e}")
        return None

# Uso
audiencias = obtener_audiencias('199-2020-ELAB-00094')

Ejemplo 4: Consulta con C# (.NET)

using System;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
using System.Collections.Generic;

public class AudienciasClient
{
    private readonly HttpClient _httpClient;
    private const string BaseUrl = "https://api.poderjudicial.gob.do/Audiencias";

    public AudienciasClient()
    {
        _httpClient = new HttpClient();
    }

    public async Task<List<AudienciaResponse>> ObtenerAudienciasPorNuc(string nuc)
    {
        var url = $"{BaseUrl}/Audiencias/ObtenerAudienciasPorNuc?nuc={nuc}";

        try
        {
            var response = await _httpClient.GetAsync(url);
            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();
            var resultado = JsonSerializer.Deserialize<ApiResponse>(content);

            Console.WriteLine($"Total de audiencias: {resultado.Data.Count}");

            foreach (var audiencia in resultado.Data)
            {
                Console.WriteLine($"Fecha: {audiencia.FechaAudienciaLetra}");
                Console.WriteLine($"Tipo: {audiencia.TipoAudiencia}");
                Console.WriteLine($"Estado: {audiencia.Estado}");
                Console.WriteLine("---");
            }

            return resultado.Data;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
            return null;
        }
    }
}

public class ApiResponse
{
    public List<AudienciaResponse> Data { get; set; }
}

public class AudienciaResponse
{
    public string Nuc { get; set; }
    public string NumeroTramite { get; set; }
    public string Asunto { get; set; }
    public string Tribunal { get; set; }
    public string Sala { get; set; }
    public string Salon { get; set; }
    public string TipoAudiencia { get; set; }
    public string Estado { get; set; }
    public string UrlAudiencia { get; set; }
    public string UrlCelebracion { get; set; }
    public DateTime? FechaAudiencia { get; set; }
    public string HoraAudiencia { get; set; }
    public string Modalidad { get; set; }
    public string FechaAudienciaLetra { get; set; }
    public string TipoResultado { get; set; }
}

Ejemplo 5: Consulta con PHP

<?php
function obtenerAudiencias($nuc) {
    $url = "https://api.poderjudicial.gob.do/Audiencias/Audiencias/ObtenerAudienciasPorNuc?nuc=" . urlencode($nuc);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    curl_close($ch);

    if ($httpCode === 200) {
        $result = json_decode($response, true);
        $audiencias = $result['data'] ?? [];

        echo "Total de audiencias: " . count($audiencias) . "\n";

        foreach ($audiencias as $audiencia) {
            echo "Fecha: " . $audiencia['fechaAudienciaLetra'] . "\n";
            echo "Tipo: " . $audiencia['tipoAudiencia'] . "\n";
            echo "Estado: " . $audiencia['estado'] . "\n";
            echo "---\n";
        }

        return $audiencias;
    } else {
        echo "Error HTTP: " . $httpCode . "\n";
        return null;
    }
}

// Uso
$audiencias = obtenerAudiencias('199-2020-ELAB-00094');
?>

Códigos de Estado HTTP

La API utiliza los siguientes códigos de estado HTTP estándar:

Código Descripción Situación
200 OK Solicitud exitosa Los datos se devolvieron correctamente
400 Bad Request El parámetro NUC no fue proporcionado o está vacío
404 Not Found No se encontraron audiencias para el NUC especificado
429 Too Many Requests Se excedió el límite de peticiones permitidas
500 Internal Server Error Ocurrió un error interno en el servidor

Limitación de Peticiones

La API implementa un sistema de limitación de peticiones (Rate Limiting) para garantizar un uso equitativo del servicio y proteger la infraestructura.

Límites Actuales

  • Límite: 100 peticiones por minuto
  • Ventana de tiempo: 1 minuto
  • Identificación: Por dirección IP o API Key (si se proporciona mediante header X-Api-Key)
  • Algoritmo: Token Bucket con auto-reabastecimiento

Comportamiento al Exceder el Límite

Cuando se excede el límite de peticiones:

  1. Código de respuesta: 429 Too Many Requests
  2. Mensaje de error:
{
  "error": "Ha superado el límite de peticiones permitidas."
}

Recomendaciones

  • Implemente lógica de reintento con retroceso exponencial (exponential backoff)
  • Distribuya sus peticiones a lo largo del tiempo en lugar de ráfagas
  • Cache los resultados cuando sea posible para reducir llamadas repetidas
  • Monitoree el código de respuesta 429 en sus aplicaciones
  • Si necesita límites más altos, contacte al equipo de soporte para obtener un API Key personalizado

Ejemplo de Implementación con Reintento

async function obtenerAudienciasConReintentos(nuc, maxReintentos = 3) {
  for (let intento = 0; intento < maxReintentos; intento++) {
    try {
      const response = await fetch(
        `https://api.poderjudicial.gob.do/Audiencias/Audiencias/ObtenerAudienciasPorNuc?nuc=${nuc}`
      );

      if (response.status === 429) {
        // Esperar antes de reintentar (retroceso exponencial)
        const espera = Math.pow(2, intento) * 1000;
        console.log(`Límite excedido. Reintentando en ${espera}ms...`);
        await new Promise(resolve => setTimeout(resolve, espera));
        continue;
      }

      if (!response.ok) {
        throw new Error(`Error HTTP: ${response.status}`);
      }

      return await response.json();

    } catch (error) {
      if (intento === maxReintentos - 1) throw error;
    }
  }
}

Manejo de Errores

Error 400 - Parámetro Faltante o Inválido

Ejemplo de respuesta:
{
  "message": "Debe verificar los parametros suministrados 'nuc'"
}
Causa: El parámetro nuc no fue proporcionado, está vacío o es nulo.

Solución: Verifique que el parámetro nuc esté presente en la URL y contenga un valor válido.

Error 404 - Sin Resultados

Ejemplo de respuesta:
{
  "message": "No se encontraron resultados para el caso: 199-2020-ELAB-00094"
}
Causa: No existen audiencias programadas para el NUC especificado en el sistema.

Solución:
  • Verifique que el NUC sea correcto y esté bien escrito
  • Confirme que el caso tenga audiencias programadas
  • El caso puede ser válido pero no tener audiencias asociadas aún

Error 429 - Límite de Peticiones Excedido

Ejemplo de respuesta:
{
  "error": "Ha superado el límite de peticiones permitidas."
}
Causa: Se excedió el límite de 100 peticiones por minuto.

Solución:
  • Espere un minuto antes de realizar nuevas peticiones
  • Implemente un sistema de reintentos con retroceso exponencial
  • Reduzca la frecuencia de sus peticiones
  • Si necesita límites más altos, solicite un API Key personalizado

Error 500 - Error Interno del Servidor

Ejemplo de respuesta:
{
  "message": "Descripción del error interno"
}
Causa: Ocurrió un error inesperado en el servidor al procesar la solicitud.

Solución:
  • Reintente la petición después de unos momentos
  • Si el error persiste, contacte al equipo de soporte técnico
  • Proporcione el NUC y la hora exacta del error al reportar el incidente

Preguntas Frecuentes

Una API (Interfaz de Programación de Aplicaciones) es un puente de comunicación que permite que tu aplicación solicite y reciba datos específicos de nuestros sistemas de justicia de forma segura y estandarizada.

Puedes encontrar la documentación completa en la página de cada una de las APIs listadas en la sección de APIs Judiciales. Incluye ejemplos de código y guías detalladas para ayudarte a integrarlas de forma rápida, ya que nuestras APIs son gratuitas y abiertas.

Como nuestras APIs son abiertas, puedes empezar a usarlas de inmediato. Solo tienes que ir a la sección de APIs Judiciales, seleccionar la que necesites y seguir la documentación para empezar a hacer tus primeras consultas. No necesitas registrarte ni obtener una clave API.