Integrar sistemas PHP com a API pública do PJe Comunica pode ser uma solução útil para automatizar consultas de publicações, comunicações processuais e informações disponibilizadas no Diário de Justiça Eletrônico Nacional, também conhecido como DJEN.
Neste guia, vamos mostrar uma estrutura prática para consumir a API pública do PJe Comunica em PHP, usando boas práticas como cliente HTTP, timeout, tratamento de erros, validação da resposta, logs e organização do código para uso em sistemas reais.
O que é o PJe Comunica?
O PJe Comunica é uma plataforma relacionada às comunicações processuais do ecossistema do Processo Judicial Eletrônico. Por meio dela, é possível consultar publicações e comunicações disponibilizadas por tribunais participantes.
Para empresas, escritórios de advocacia e departamentos jurídicos, esse tipo de integração pode reduzir trabalho manual, melhorar o acompanhamento de publicações e permitir a criação de alertas internos para advogados, clientes ou equipes administrativas.
Quando faz sentido consumir a API do PJe Comunica?
A integração com a API pública do PJe Comunica pode ser aplicada em diferentes cenários. O uso mais comum é a criação de rotinas automatizadas para consultar publicações e processar os dados dentro de um sistema próprio.
- Monitoramento de publicações por tribunal e data;
- Consulta automatizada de cadernos do DJEN;
- Criação de alertas para advogados e departamentos jurídicos;
- Importação de publicações para sistemas internos;
- Integração com softwares jurídicos desenvolvidos em PHP;
- Armazenamento estruturado de publicações em banco de dados;
- Conferência automática de comunicações processuais.
Cuidados antes de iniciar a integração
Antes de colocar qualquer integração em produção, é importante consultar a documentação oficial da API. Nem todo endpoint documentado é necessariamente público para qualquer aplicação externa. Alguns recursos podem exigir autenticação ou estar disponíveis apenas para tribunais e órgãos autorizados.
Também é importante evitar chamadas excessivas, tratar falhas corretamente e registrar logs de execução. Uma integração jurídica mal implementada pode gerar duplicidade, perda de dados ou dificuldade de auditoria.
- Consulte a documentação oficial antes de implementar;
- Use timeout nas requisições HTTP;
- Valide o status HTTP retornado;
- Verifique se a resposta é um JSON válido;
- Registre logs de sucesso e erro;
- Evite consultas repetidas em curto intervalo;
- Implemente controle de duplicidade;
- Armazene somente os dados necessários.
Instalando o Guzzle no projeto PHP
Embora seja possível consumir APIs usando cURL puro, em projetos PHP modernos é comum utilizar o Guzzle, um cliente HTTP bastante usado no ecossistema PHP.
Para instalar o Guzzle, execute o comando abaixo na raiz do projeto:
composer require guzzlehttp/guzzle
Depois da instalação, já é possível criar uma classe própria para centralizar as chamadas à API do PJe Comunica.
Criando um cliente PHP para consultar a API
Uma boa prática é encapsular a comunicação com a API em uma classe separada. Dessa forma, o restante do sistema não precisa conhecer detalhes como URL base, headers, timeout e tratamento de exceções.
<?php
require __DIR__ . '/vendor/autoload.php';
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
class PjeComunicaClient
{
private Client $http;
public function __construct(
private string $baseUrl = 'https://comunicaapi.pje.jus.br/api/v1'
) {
$this->http = new Client([
'base_uri' => rtrim($this->baseUrl, '/') . '/',
'timeout' => 60,
'headers' => [
'Accept' => 'application/json',
'User-Agent' => 'SistemaPHP/1.0',
],
]);
}
public function get(string $endpoint, array $query = []): array
{
try {
$response = $this->http->get(ltrim($endpoint, '/'), [
'query' => $query,
]);
$statusCode = $response->getStatusCode();
$body = (string) $response->getBody();
if ($statusCode < 200 || $statusCode >= 300) {
throw new RuntimeException("Resposta inesperada da API. HTTP {$statusCode}");
}
$json = json_decode($body, true);
if (json_last_error() !== JSON_ERROR_NONE) {
throw new RuntimeException('A resposta da API não é um JSON válido.');
}
return $json;
} catch (RequestException $e) {
$mensagem = $e->getMessage();
if ($e->hasResponse()) {
$mensagem .= ' | Resposta: ' . (string) $e->getResponse()->getBody();
}
throw new RuntimeException('Erro ao consultar a API do PJe Comunica: ' . $mensagem);
}
}
}
Esse modelo deixa o código mais limpo e facilita futuras alterações. Caso a URL base mude ou seja necessário adicionar autenticação em algum endpoint específico, a alteração pode ser feita em apenas um ponto da aplicação.
Exemplo de consulta usando PHP
Com o cliente criado, você pode consultar endpoints públicos da API conforme a documentação oficial. O exemplo abaixo demonstra uma chamada genérica, em que o endpoint e os parâmetros devem ser ajustados de acordo com o recurso desejado.
<?php
$client = new PjeComunicaClient();
try {
$resultado = $client->get('endpoint-publico', [
'dataDisponibilizacaoInicio' => '2026-06-01',
'dataDisponibilizacaoFim' => '2026-06-15',
'siglaTribunal' => 'TJSP',
]);
echo '<pre>';
print_r($resultado);
echo '</pre>';
} catch (RuntimeException $e) {
error_log($e->getMessage());
echo 'Não foi possível consultar a API neste momento.';
}
O nome do endpoint e os parâmetros precisam ser conferidos na documentação oficial da API, pois podem variar conforme o tipo de consulta desejado. O mais importante é manter a estrutura preparada para lidar com respostas válidas, erros e indisponibilidades temporárias.
Tratando erros de forma adequada
Ao consumir uma API pública, é necessário assumir que falhas podem acontecer. A API pode estar indisponível, a conexão pode expirar, o endpoint pode retornar erro ou a resposta pode vir em formato diferente do esperado.
Por isso, a aplicação deve tratar pelo menos os seguintes cenários:
- Timeout: quando a API demora demais para responder;
- Erro 400: quando os parâmetros enviados estão incorretos;
- Erro 401 ou 403: quando o endpoint exige autorização;
- Erro 404: quando o endpoint não existe ou foi alterado;
- Erro 500: quando ocorre falha no servidor da API;
- JSON inválido: quando a resposta não pode ser processada;
- Resposta vazia: quando não há dados para retornar.
Criando logs para auditoria
Em integrações com sistemas jurídicos, os logs são fundamentais. Eles ajudam a identificar quando uma consulta foi realizada, qual endpoint foi chamado, quais parâmetros foram utilizados e se a execução terminou com sucesso ou erro.
<?php
function registrarLogApi(string $mensagem, array $contexto = []): void
{
$linha = date('Y-m-d H:i:s') . ' - ' . $mensagem;
if (!empty($contexto)) {
$linha .= ' - ' . json_encode($contexto, JSON_UNESCAPED_UNICODE);
}
$diretorio = __DIR__ . '/logs';
if (!is_dir($diretorio)) {
mkdir($diretorio, 0755, true);
}
file_put_contents(
$diretorio . '/pje-comunica.log',
$linha . PHP_EOL,
FILE_APPEND
);
}
Além de facilitar o suporte técnico, os logs ajudam a comprovar o comportamento da integração e permitem reprocessar consultas em caso de falha.
Exemplo de rotina para execução automática
Em muitos projetos, a consulta à API do PJe Comunica não é feita manualmente, mas sim por uma rotina agendada. Essa rotina pode ser executada por cron, buscar publicações recentes e salvar os dados em banco de dados.
<?php
require __DIR__ . '/vendor/autoload.php';
require __DIR__ . '/PjeComunicaClient.php';
$client = new PjeComunicaClient();
$tribunais = ['TJSP', 'TRF3'];
$dataInicio = date('Y-m-d');
$dataFim = date('Y-m-d');
foreach ($tribunais as $tribunal) {
try {
registrarLogApi('Iniciando consulta ao PJe Comunica', [
'tribunal' => $tribunal,
'data_inicio' => $dataInicio,
'data_fim' => $dataFim,
]);
$resultado = $client->get('endpoint-publico', [
'dataDisponibilizacaoInicio' => $dataInicio,
'dataDisponibilizacaoFim' => $dataFim,
'siglaTribunal' => $tribunal,
]);
// Aqui você pode salvar o retorno no banco de dados.
// Também é possível enviar os dados para uma fila de processamento.
registrarLogApi('Consulta finalizada com sucesso', [
'tribunal' => $tribunal,
'total_registros' => is_array($resultado) ? count($resultado) : 0,
]);
} catch (RuntimeException $e) {
registrarLogApi('Erro ao consultar PJe Comunica', [
'tribunal' => $tribunal,
'erro' => $e->getMessage(),
]);
}
}
No Linux, essa rotina pode ser configurada no cron da seguinte forma:
0 7 * * 1-5 /usr/bin/php /caminho/do/projeto/consultar-pje-comunica.php >> /var/log/pje-comunica-cron.log 2>&1
O exemplo acima executa a consulta às 7h da manhã, de segunda a sexta-feira. O horário deve ser ajustado conforme a necessidade da aplicação e a disponibilidade das publicações.
Como evitar publicações duplicadas
Um problema comum em integrações com publicações jurídicas é a duplicidade. Se a rotina for executada mais de uma vez no mesmo dia, a mesma publicação pode ser importada repetidamente.
Uma solução simples é gerar um hash com base nos principais campos da publicação, como tribunal, data, número do processo, conteúdo e identificador retornado pela API.
<?php
function gerarHashPublicacao(array $publicacao): string
{
$base = [
$publicacao['tribunal'] ?? '',
$publicacao['dataDisponibilizacao'] ?? '',
$publicacao['numeroProcesso'] ?? '',
$publicacao['texto'] ?? '',
];
return hash('sha256', implode('|', $base));
}
Esse hash pode ser salvo no banco de dados com uma restrição de unicidade. Assim, mesmo que a rotina rode novamente, o sistema evita gravar a mesma publicação duas vezes.
Salvando os dados em banco de dados
Para uso em produção, o ideal é armazenar as publicações em uma tabela própria. A estrutura pode variar conforme o sistema, mas alguns campos costumam ser úteis.
- ID interno da publicação;
- Tribunal de origem;
- Data de disponibilização;
- Número do processo;
- Texto da publicação;
- Hash de controle;
- JSON original retornado pela API;
- Data e hora da importação;
- Status de processamento.
Guardar o JSON original pode ser útil para auditoria e reprocessamento. Porém, é importante avaliar o volume de dados e as regras internas de retenção.
Boas práticas para ambientes de produção
Uma integração com a API pública do PJe Comunica deve ser pensada como um serviço interno da aplicação. Isso significa que ela precisa ter controle de execução, logs, tratamento de erro e capacidade de reprocessamento.
- Centralize a comunicação com a API em uma classe ou serviço;
- Use timeout e limite de tentativas;
- Registre logs de cada execução;
- Controle publicações já importadas;
- Crie uma fila para processar grandes volumes;
- Evite fazer consultas diretamente a partir de páginas acessadas pelo usuário;
- Monitore falhas recorrentes;
- Documente os endpoints utilizados;
- Crie testes para validar o formato das respostas esperadas.
Integração com Laravel, CodeIgniter e sistemas legados
O exemplo deste guia foi feito em PHP puro para facilitar o entendimento, mas a mesma lógica pode ser aplicada em frameworks como Laravel e CodeIgniter.
No Laravel, o ideal é criar um Service para comunicação com a API, Jobs para processamento assíncrono e Scheduler para execução recorrente. Já no CodeIgniter, a integração pode ser organizada em Services, Libraries ou Commands, dependendo da versão utilizada.
Em sistemas PHP legados, o mais importante é evitar que a lógica de integração fique espalhada em várias telas. Mesmo em projetos antigos, é possível criar uma classe isolada para concentrar a comunicação com o PJe Comunica.
Cuidados com LGPD e dados processuais
Mesmo quando os dados são públicos, é importante tratar informações processuais com responsabilidade. Sistemas que armazenam publicações jurídicas devem observar finalidade, controle de acesso, segurança da informação e política de retenção.
Também é recomendável limitar o acesso às informações apenas aos usuários autorizados, registrar auditoria de consulta e evitar exposição desnecessária de dados pessoais em telas públicas ou relatórios externos.
Conclusão
Consumir a API pública do PJe Comunica em PHP é uma tarefa relativamente simples do ponto de vista técnico, mas exige cuidado quando a integração será usada em produção. É necessário tratar erros, controlar duplicidade, registrar logs, respeitar a documentação oficial e organizar bem o código.
Com uma implementação bem planejada, a API pode servir como base para sistemas de monitoramento jurídico, robôs de publicações, painéis internos, ferramentas de alerta e integrações com softwares jurídicos desenvolvidos em PHP.
Se a sua empresa precisa integrar sistemas PHP com o PJe Comunica, DJEN, APIs públicas, tribunais, rotinas automatizadas ou sistemas jurídicos, a Saldaris Consultoria pode apoiar no diagnóstico, desenvolvimento, implantação e manutenção da solução.


