API REST
Para programas, planilhas e automações. Você cria uma chave, envia pedidos HTTP e recebe JSON. Serve para integrar com ERPs, painéis e fluxos montados em ferramentas que fazem pedidos HTTP, como Zapier, n8n e Make.
API REST e conexão de IA
Uma API REST em JSON, com chave por escritório e permissões por escopo, documentada em OpenAPI. E uma conexão de IA (MCP) para o Claude operar o escritório com os mesmos limites do usuário que a conectou.
curl "https://app.jurispark.com.br/api/v1/me" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"{
"data": {
"usuario": {
"id": "0191c3a2-1111-7000-8000-00000000a001",
"nome": "Dr. Exemplo",
"email": "dr@example.com",
"papel": "Administrador"
},
"escritorio": {
"id": "0191c3a2-0000-7000-8000-00000000f001",
"nome": "Escritório Exemplo"
},
"chave": {
"id": "0191c3a2-4444-7000-8000-00000000b001",
"nome": "Planilha de prazos",
"prefixo": "jp_live_Ab3x",
"escopos": [
"ler"
],
"criadaEm": "2026-10-01T12:00:00.000Z",
"venceEm": null
},
"escoposEfetivos": [
"ler"
],
"operacoes": [
"obterIdentidade",
"listarProcessos"
],
"limites": {
"porMinuto": 120,
"porDia": 10000,
"usadasHoje": 3
}
}
}Exemplo com dados fictícios. A chave jp_live_SUA_CHAVE é um marcador: use a sua.
operações na API v1: consultar e registrar dados. Nenhuma apaga.
ferramentas de IA (MCP), em 9 áreas do escritório.
escopos de acesso por chave: ler, escrever e financeiro.
chamadas por minuto, por chave.
Começar
O JurisPark pode ser usado por fora do sistema de duas maneiras. Em ambas, quem acessa só vê e só faz o que o usuário que criou a chave, ou que conectou a IA, pode ver e fazer dentro do JurisPark.
Para programas, planilhas e automações. Você cria uma chave, envia pedidos HTTP e recebe JSON. Serve para integrar com ERPs, painéis e fluxos montados em ferramentas que fazem pedidos HTTP, como Zapier, n8n e Make.
Para o advogado pedir em linguagem natural, no Claude ou em outra IA compatível: "quais prazos vencem esta semana?". Não precisa programar. O login é feito no próprio JurisPark.
https://app.jurispark.com.br/api/v1Authorization: Bearer jp_live_... em todas as chamadas.data.AAAA-MM-DD. Instantes (como criadoEm) em ISO 8601, UTC. Horas de agenda em HH:MM, horário de Brasília.1500.5./api/v1/openapi.json. Serve para gerar clientes e importar no Postman ou em ferramentas parecidas.Começar
Cada integração usa uma chave própria. A chave age como o usuário que a criou, limitada aos acessos que você marcar.
Authorization: Bearer jp_live_....Criar e revogar chaves exige a permissão de configurar o escritório. Cada escritório pode ter até 10 chaves ativas. A chave começa com jp_live_ e tem 40 caracteres depois disso.
Os escopos são independentes. Uma chave só com escrever consegue criar, mas não consegue listar: se a sua integração faz as duas coisas, marque ler e escrever.
| Escopo | Nome na tela | O que libera | Operações |
|---|---|---|---|
| ler | Consultar | Ver clientes, processos, andamentos, tarefas, agenda e publicações do Diário. | GET /clientes GET /clientes/{id} GET /processos GET /processos/{id} GET /processos/{id}/andamentos GET /tarefas GET /agenda GET /publicacoes |
| escrever | Registrar | Criar e alterar clientes, tarefas e compromissos da agenda, e registrar andamentos. Nunca apaga. | POST /clientes PATCH /clientes/{id} POST /processos/{id}/andamentos POST /tarefas PATCH /tarefas/{id} POST /agenda |
| financeiro | Financeiro | Ver o resumo e os lançamentos do financeiro do escritório. | GET /financeiro/resumo GET /financeiro/lancamentos |
O que a chave consegue fazer é a interseção entre os escopos dela e as permissões atuais do usuário que a criou, conferida a cada chamada. Na prática:
403.tarefas.criar).Para ver o que uma chave consegue fazer agora, chame GET /me: a resposta traz os escopos efetivos e a lista de operações liberadas.
Começar
Troque jp_live_SUA_CHAVE pela sua chave. Em produção, leia a chave de uma variável de ambiente e nunca a deixe no código. Os exemplos em curl usam a sintaxe do Linux, macOS e Git Bash. Os de Node.js pedem a versão 18 ou mais nova e um arquivo .mjs. Os de Python usam a biblioteca requests.
GET /me funciona com qualquer chave válida. Se vier 200 com o seu usuário e o seu escritório, está tudo certo. Se vier 401 ou 403, veja Erros.
curl
curl "https://app.jurispark.com.br/api/v1/me" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/me", {
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
},
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.get(
"https://app.jurispark.com.br/api/v1/me",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados)Precisa do escopo ler. As listas usam paginação por cursor e aceitam filtros como status, responsavel e prioridade.
curl
curl "https://app.jurispark.com.br/api/v1/tarefas?status=abertas&limit=5" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/tarefas?status=abertas&limit=5", {
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
},
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.get(
"https://app.jurispark.com.br/api/v1/tarefas?status=abertas&limit=5",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados)Precisa do escopo escrever. Sem responsavelId, a tarefa fica com o dono da chave. A resposta é 201 com a tarefa criada, que já aparece na tela do sistema. O cabeçalho Idempotency-Key evita duplicar a tarefa se você precisar repetir a chamada (veja Idempotência).
curl
curl -X POST "https://app.jurispark.com.br/api/v1/tarefas" \
-H "Authorization: Bearer jp_live_SUA_CHAVE" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"titulo": "Preparar réplica",
"prazo": "2026-10-18",
"prioridade": "alta"
}'Node.js
import { randomUUID } from "node:crypto";
const resposta = await fetch("https://app.jurispark.com.br/api/v1/tarefas", {
method: "POST",
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
"Content-Type": "application/json",
"Idempotency-Key": randomUUID(),
},
body: JSON.stringify({
"titulo": "Preparar réplica",
"prazo": "2026-10-18",
"prioridade": "alta"
}),
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import uuid
import requests
resposta = requests.post(
"https://app.jurispark.com.br/api/v1/tarefas",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
"Idempotency-Key": str(uuid.uuid4()),
},
json={
"titulo": "Preparar réplica",
"prazo": "2026-10-18",
"prioridade": "alta",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados)O $(uuidgen) do curl funciona em Linux, macOS e Git Bash. No Windows, use outro valor único no lugar.
API REST
São 17 operações, agrupadas por recurso. Todas exigem a chave no cabeçalho Authorization. Cada operação mostra o escopo da chave e as permissões do usuário de que precisa, os parâmetros, um exemplo de chamada e uma resposta de exemplo. Esta referência é gerada da especificação OpenAPI (versão 1.0.0).
| Método | Caminho | O que faz | Escopo |
|---|---|---|---|
| GET | /me | Quem é esta chave | qualquer chave |
| GET | /clientes | Listar clientes | ler |
| POST | /clientes | Cadastrar um cliente | escrever |
| GET | /clientes/{id} | Ver um cliente | ler |
| PATCH | /clientes/{id} | Alterar um cliente | escrever |
| GET | /processos | Listar processos | ler |
| GET | /processos/{id} | Ver um processo | ler |
| GET | /processos/{id}/andamentos | Listar andamentos de um processo | ler |
| POST | /processos/{id}/andamentos | Registrar um andamento | escrever |
| GET | /tarefas | Listar tarefas | ler |
| POST | /tarefas | Criar uma tarefa | escrever |
| PATCH | /tarefas/{id} | Alterar uma tarefa | escrever |
| GET | /agenda | Listar a agenda | ler |
| POST | /agenda | Criar um compromisso | escrever |
| GET | /publicacoes | Listar publicações do Diário | ler |
| GET | /financeiro/resumo | Resumo do financeiro | financeiro |
| GET | /financeiro/lancamentos | Listar lançamentos | financeiro |
Nenhuma operação encontrada para essa busca. Tente outra palavra, como "tarefa", "cliente" ou "financeiro".
Identificação da chave.
/meMostra o usuário e o escritório dono da chave, os escopos e as operações que ela pode usar agora e o uso de hoje. Funciona com qualquer chave válida e serve para testar a conexão.
curl
curl "https://app.jurispark.com.br/api/v1/me" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/me", {
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
},
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.get(
"https://app.jurispark.com.br/api/v1/me",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": {
"usuario": {
"id": "0191c3a2-1111-7000-8000-00000000a001",
"nome": "Dr. Exemplo",
"email": "dr@example.com",
"papel": "Administrador"
},
"escritorio": {
"id": "0191c3a2-0000-7000-8000-00000000f001",
"nome": "Escritório Exemplo"
},
"chave": {
"id": "0191c3a2-4444-7000-8000-00000000b001",
"nome": "Planilha de prazos",
"prefixo": "jp_live_Ab3x",
"escopos": [
"ler"
],
"criadaEm": "2026-10-01T12:00:00.000Z",
"venceEm": null
},
"escoposEfetivos": [
"ler"
],
"operacoes": [
"obterIdentidade",
"listarProcessos"
],
"limites": {
"porMinuto": 120,
"porDia": 10000,
"usadasHoje": 3
}
}
}usuarioobjetosempre presenteusuario.idtextosempre presenteIdentificador do usuário.
usuario.nometextosempre presenteNome.
usuario.emailtextosempre presenteE-mail.
usuario.papeltextosempre presentePapel no escritório (Administrador, Advogado, Secretária ou Estagiário).
escritorioobjetosempre presenteescritorio.idtextosempre presenteIdentificador do escritório.
escritorio.nometextosempre presenteNome do escritório.
chaveobjetosempre presentechave.idtextosempre presenteIdentificador da chave.
chave.nometextosempre presenteNome dado à chave.
chave.prefixotextosempre presenteInício da chave, para você reconhecê-la.
chave.escoposlista de textossempre presenteEscopos da chave.
chave.criadaEmdata e hora (ISO 8601, UTC)sempre presenteCriação (UTC).
chave.venceEmdata e hora (ISO 8601, UTC), ou nulosempre presenteVencimento (UTC), ou nulo se não vence.
escoposEfetivoslista de textossempre presenteEscopos que a chave realmente pode usar agora: os da chave que também são permitidos pelas permissões atuais do usuário.
operacoeslista de textossempre presenteIdentificadores (operationId) das operações que esta chave pode chamar agora.
limitesobjetosempre presentelimites.porMinutonúmero inteirosempre presenteChamadas por minuto, por chave.
limites.porDianúmero inteirosempre presenteChamadas por dia, por chave (fuso de São Paulo).
limites.usadasHojenúmero inteirosempre presenteChamadas já feitas hoje com esta chave.
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
Cadastro de clientes.
/clientesLista os clientes do escritório em ordem alfabética, com paginação por cursor. Inclui CPF/CNPJ e os demais dados cadastrais que o usuário dono da chave pode ver no sistema.
qtextoBusca por nome, nome fantasia, e-mail ou parte do documento ou telefone.
1 a 100 caracteres
etiquetatextoSó clientes com esta etiqueta.
1 a 40 caracteres
limit e cursor: paginação, veja Paginação.
curl
curl "https://app.jurispark.com.br/api/v1/clientes?q=silva&etiqueta=trabalhista" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/clientes?q=silva&etiqueta=trabalhista", {
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
},
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.get(
"https://app.jurispark.com.br/api/v1/clientes?q=silva&etiqueta=trabalhista",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": [
{
"id": "0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"tipo": "PF",
"nome": "Maria da Silva Souza",
"documento": "529.982.247-25",
"rg": "",
"dataNascimento": "1985-03-14",
"nomeFantasia": "",
"inscricaoEstadual": "",
"representanteLegal": "",
"telefone": "(99) 98888-7777",
"telefone2": "",
"email": "maria@example.com",
"cep": "65630-000",
"logradouro": "Rua das Flores",
"numero": "120",
"complemento": "Sala 2",
"bairro": "Centro",
"cidade": "Timon",
"uf": "MA",
"observacoes": "Prefere contato por WhatsApp.",
"etiquetas": [
"trabalhista"
],
"link": "https://app.jurispark.com.br/lawyer/clients/0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"criadoEm": "2026-10-01T14:30:00.000Z"
}
],
"page": {
"limit": 25,
"total": 1,
"hasMore": false,
"nextCursor": null
}
}idtextosempre presenteIdentificador único do cliente.
tipotextosempre presentePF (pessoa física) ou PJ (pessoa jurídica).
Valores aceitos: PF PJ
nometextosempre presenteNome completo (PF) ou razão social (PJ).
documentotextosempre presenteCPF ou CNPJ com pontuação, ou vazio quando não cadastrado.
rgtextosempre presenteRG (pessoa física), ou vazio.
dataNascimentodata (AAAA-MM-DD), ou nulosempre presenteData de nascimento (AAAA-MM-DD), ou nulo.
nomeFantasiatextosempre presenteNome fantasia (pessoa jurídica), ou vazio.
inscricaoEstadualtextosempre presenteInscrição estadual (pessoa jurídica), ou vazio.
representanteLegaltextosempre presenteRepresentante legal (pessoa jurídica), ou vazio.
telefonetextosempre presenteTelefone principal, ou vazio.
telefone2textosempre presenteTelefone secundário, ou vazio.
emailtextosempre presenteE-mail, ou vazio.
ceptextosempre presenteCEP, ou vazio.
logradourotextosempre presenteRua, avenida etc.
numerotextosempre presenteNúmero do endereço.
complementotextosempre presenteComplemento.
bairrotextosempre presenteBairro.
cidadetextosempre presenteCidade.
uftextosempre presenteSigla do estado, ou vazio.
observacoestextosempre presenteAnotações internas.
etiquetaslista de textossempre presenteEtiquetas livres.
linkendereço (URL)sempre presenteEndereço do cliente dentro do JurisPark.
criadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteQuando o cadastro foi criado (UTC).
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
/clientesCadastra um cliente. O registro aparece na hora no sistema, igual a um cliente cadastrado pela tela. Use o cabeçalho Idempotency-Key para repetir a chamada com segurança, sem duplicar o cadastro.
Cabeçalho opcional Idempotency-Key: repete a chamada sem duplicar. Veja Idempotência.
tipotextoPF (pessoa física) ou PJ (pessoa jurídica). Se omitido, é deduzido do documento (11 dígitos = PF, 14 = PJ); sem documento, PF.
Valores aceitos: PF PJ
nometextoobrigatórioNome completo (PF) ou razão social (PJ).
1 a 160 caracteres
documentotextoCPF (PF) ou CNPJ (PJ). Aceita com ou sem pontuação e é validado pelos dígitos verificadores. Vazio remove.
até 20 caracteres
rgtextoRG, só para pessoa física.
até 30 caracteres
dataNascimentodata (AAAA-MM-DD), ou nuloData de nascimento (AAAA-MM-DD). Nulo remove.
nomeFantasiatextoNome fantasia, para pessoa jurídica.
até 160 caracteres
inscricaoEstadualtextoInscrição estadual, para pessoa jurídica.
até 30 caracteres
representanteLegaltextoRepresentante legal, para pessoa jurídica.
até 160 caracteres
telefonetextoTelefone principal, com DDD (10 ou 11 dígitos; o prefixo 55 é aceito e removido).
até 25 caracteres
telefone2textoTelefone secundário, com DDD.
até 25 caracteres
emailtextoE-mail do cliente.
até 160 caracteres
ceptextoCEP (8 dígitos).
até 10 caracteres
logradourotextoRua, avenida etc.
até 160 caracteres
numerotextoNúmero do endereço.
até 20 caracteres
complementotextoComplemento do endereço.
até 80 caracteres
bairrotextoBairro.
até 80 caracteres
cidadetextoCidade.
até 80 caracteres
uftextoSigla do estado (vazio se não informado).
Valores aceitos: AC AL AM AP BA CE DF ES GO MA MG MS MT PA PB PE PI PR RJ RN RO RR RS SC SE SP TO
observacoestextoAnotações internas sobre o cliente.
até 5000 caracteres
etiquetaslista de textosEtiquetas livres (até 20).
até 20 itens
curl
curl -X POST "https://app.jurispark.com.br/api/v1/clientes" \
-H "Authorization: Bearer jp_live_SUA_CHAVE" \
-H "Idempotency-Key: exemplo-criarCliente-0001" \
-H "Content-Type: application/json" \
-d '{
"tipo": "PF",
"nome": "Maria da Silva Souza",
"documento": "529.982.247-25",
"telefone": "(99) 98888-7777",
"email": "maria@example.com",
"cidade": "Timon",
"uf": "MA",
"etiquetas": [
"trabalhista"
]
}'Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/clientes", {
method: "POST",
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
"Content-Type": "application/json",
"Idempotency-Key": "exemplo-criarCliente-0001",
},
body: JSON.stringify({
"tipo": "PF",
"nome": "Maria da Silva Souza",
"documento": "529.982.247-25",
"telefone": "(99) 98888-7777",
"email": "maria@example.com",
"cidade": "Timon",
"uf": "MA",
"etiquetas": [
"trabalhista"
]
}),
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.post(
"https://app.jurispark.com.br/api/v1/clientes",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
"Idempotency-Key": "exemplo-criarCliente-0001",
},
json={
"tipo": "PF",
"nome": "Maria da Silva Souza",
"documento": "529.982.247-25",
"telefone": "(99) 98888-7777",
"email": "maria@example.com",
"cidade": "Timon",
"uf": "MA",
"etiquetas": [
"trabalhista",
],
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": {
"id": "0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"tipo": "PF",
"nome": "Maria da Silva Souza",
"documento": "529.982.247-25",
"rg": "",
"dataNascimento": "1985-03-14",
"nomeFantasia": "",
"inscricaoEstadual": "",
"representanteLegal": "",
"telefone": "(99) 98888-7777",
"telefone2": "",
"email": "maria@example.com",
"cep": "65630-000",
"logradouro": "Rua das Flores",
"numero": "120",
"complemento": "Sala 2",
"bairro": "Centro",
"cidade": "Timon",
"uf": "MA",
"observacoes": "Prefere contato por WhatsApp.",
"etiquetas": [
"trabalhista"
],
"link": "https://app.jurispark.com.br/lawyer/clients/0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"criadoEm": "2026-10-01T14:30:00.000Z"
}
}idtextosempre presenteIdentificador único do cliente.
tipotextosempre presentePF (pessoa física) ou PJ (pessoa jurídica).
Valores aceitos: PF PJ
nometextosempre presenteNome completo (PF) ou razão social (PJ).
documentotextosempre presenteCPF ou CNPJ com pontuação, ou vazio quando não cadastrado.
rgtextosempre presenteRG (pessoa física), ou vazio.
dataNascimentodata (AAAA-MM-DD), ou nulosempre presenteData de nascimento (AAAA-MM-DD), ou nulo.
nomeFantasiatextosempre presenteNome fantasia (pessoa jurídica), ou vazio.
inscricaoEstadualtextosempre presenteInscrição estadual (pessoa jurídica), ou vazio.
representanteLegaltextosempre presenteRepresentante legal (pessoa jurídica), ou vazio.
telefonetextosempre presenteTelefone principal, ou vazio.
telefone2textosempre presenteTelefone secundário, ou vazio.
emailtextosempre presenteE-mail, ou vazio.
ceptextosempre presenteCEP, ou vazio.
logradourotextosempre presenteRua, avenida etc.
numerotextosempre presenteNúmero do endereço.
complementotextosempre presenteComplemento.
bairrotextosempre presenteBairro.
cidadetextosempre presenteCidade.
uftextosempre presenteSigla do estado, ou vazio.
observacoestextosempre presenteAnotações internas.
etiquetaslista de textossempre presenteEtiquetas livres.
linkendereço (URL)sempre presenteEndereço do cliente dentro do JurisPark.
criadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteQuando o cadastro foi criado (UTC).
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
/clientes/{id}Devolve os dados de um cliente pelo id.
idtextoobrigatórioId do cliente.
curl
curl "https://app.jurispark.com.br/api/v1/clientes/0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/clientes/0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01", {
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
},
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.get(
"https://app.jurispark.com.br/api/v1/clientes/0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": {
"id": "0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"tipo": "PF",
"nome": "Maria da Silva Souza",
"documento": "529.982.247-25",
"rg": "",
"dataNascimento": "1985-03-14",
"nomeFantasia": "",
"inscricaoEstadual": "",
"representanteLegal": "",
"telefone": "(99) 98888-7777",
"telefone2": "",
"email": "maria@example.com",
"cep": "65630-000",
"logradouro": "Rua das Flores",
"numero": "120",
"complemento": "Sala 2",
"bairro": "Centro",
"cidade": "Timon",
"uf": "MA",
"observacoes": "Prefere contato por WhatsApp.",
"etiquetas": [
"trabalhista"
],
"link": "https://app.jurispark.com.br/lawyer/clients/0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"criadoEm": "2026-10-01T14:30:00.000Z"
}
}idtextosempre presenteIdentificador único do cliente.
tipotextosempre presentePF (pessoa física) ou PJ (pessoa jurídica).
Valores aceitos: PF PJ
nometextosempre presenteNome completo (PF) ou razão social (PJ).
documentotextosempre presenteCPF ou CNPJ com pontuação, ou vazio quando não cadastrado.
rgtextosempre presenteRG (pessoa física), ou vazio.
dataNascimentodata (AAAA-MM-DD), ou nulosempre presenteData de nascimento (AAAA-MM-DD), ou nulo.
nomeFantasiatextosempre presenteNome fantasia (pessoa jurídica), ou vazio.
inscricaoEstadualtextosempre presenteInscrição estadual (pessoa jurídica), ou vazio.
representanteLegaltextosempre presenteRepresentante legal (pessoa jurídica), ou vazio.
telefonetextosempre presenteTelefone principal, ou vazio.
telefone2textosempre presenteTelefone secundário, ou vazio.
emailtextosempre presenteE-mail, ou vazio.
ceptextosempre presenteCEP, ou vazio.
logradourotextosempre presenteRua, avenida etc.
numerotextosempre presenteNúmero do endereço.
complementotextosempre presenteComplemento.
bairrotextosempre presenteBairro.
cidadetextosempre presenteCidade.
uftextosempre presenteSigla do estado, ou vazio.
observacoestextosempre presenteAnotações internas.
etiquetaslista de textossempre presenteEtiquetas livres.
linkendereço (URL)sempre presenteEndereço do cliente dentro do JurisPark.
criadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteQuando o cadastro foi criado (UTC).
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
/clientes/{id}Altera só os campos enviados. Texto vazio limpa o campo. Não há rota para apagar clientes: quem exclui é o usuário, dentro do sistema.
idtextoobrigatórioId do cliente.
tipotextoPF (pessoa física) ou PJ (pessoa jurídica). Se omitido, é deduzido do documento (11 dígitos = PF, 14 = PJ); sem documento, PF.
Valores aceitos: PF PJ
nometextoNome completo (PF) ou razão social (PJ).
1 a 160 caracteres
documentotextoCPF (PF) ou CNPJ (PJ). Aceita com ou sem pontuação e é validado pelos dígitos verificadores. Vazio remove.
até 20 caracteres
rgtextoRG, só para pessoa física.
até 30 caracteres
dataNascimentodata (AAAA-MM-DD), ou nuloData de nascimento (AAAA-MM-DD). Nulo remove.
nomeFantasiatextoNome fantasia, para pessoa jurídica.
até 160 caracteres
inscricaoEstadualtextoInscrição estadual, para pessoa jurídica.
até 30 caracteres
representanteLegaltextoRepresentante legal, para pessoa jurídica.
até 160 caracteres
telefonetextoTelefone principal, com DDD (10 ou 11 dígitos; o prefixo 55 é aceito e removido).
até 25 caracteres
telefone2textoTelefone secundário, com DDD.
até 25 caracteres
emailtextoE-mail do cliente.
até 160 caracteres
ceptextoCEP (8 dígitos).
até 10 caracteres
logradourotextoRua, avenida etc.
até 160 caracteres
numerotextoNúmero do endereço.
até 20 caracteres
complementotextoComplemento do endereço.
até 80 caracteres
bairrotextoBairro.
até 80 caracteres
cidadetextoCidade.
até 80 caracteres
uftextoSigla do estado (vazio se não informado).
Valores aceitos: AC AL AM AP BA CE DF ES GO MA MG MS MT PA PB PE PI PR RJ RN RO RR RS SC SE SP TO
observacoestextoAnotações internas sobre o cliente.
até 5000 caracteres
etiquetaslista de textosEtiquetas livres (até 20).
até 20 itens
curl
curl -X PATCH "https://app.jurispark.com.br/api/v1/clientes/0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01" \
-H "Authorization: Bearer jp_live_SUA_CHAVE" \
-H "Content-Type: application/json" \
-d '{
"telefone": "(99) 97777-6666",
"observacoes": "Mudou de telefone em outubro."
}'Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/clientes/0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01", {
method: "PATCH",
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
"Content-Type": "application/json",
},
body: JSON.stringify({
"telefone": "(99) 97777-6666",
"observacoes": "Mudou de telefone em outubro."
}),
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.patch(
"https://app.jurispark.com.br/api/v1/clientes/0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
},
json={
"telefone": "(99) 97777-6666",
"observacoes": "Mudou de telefone em outubro.",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": {
"id": "0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"tipo": "PF",
"nome": "Maria da Silva Souza",
"documento": "529.982.247-25",
"rg": "",
"dataNascimento": "1985-03-14",
"nomeFantasia": "",
"inscricaoEstadual": "",
"representanteLegal": "",
"telefone": "(99) 98888-7777",
"telefone2": "",
"email": "maria@example.com",
"cep": "65630-000",
"logradouro": "Rua das Flores",
"numero": "120",
"complemento": "Sala 2",
"bairro": "Centro",
"cidade": "Timon",
"uf": "MA",
"observacoes": "Prefere contato por WhatsApp.",
"etiquetas": [
"trabalhista"
],
"link": "https://app.jurispark.com.br/lawyer/clients/0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"criadoEm": "2026-10-01T14:30:00.000Z"
}
}idtextosempre presenteIdentificador único do cliente.
tipotextosempre presentePF (pessoa física) ou PJ (pessoa jurídica).
Valores aceitos: PF PJ
nometextosempre presenteNome completo (PF) ou razão social (PJ).
documentotextosempre presenteCPF ou CNPJ com pontuação, ou vazio quando não cadastrado.
rgtextosempre presenteRG (pessoa física), ou vazio.
dataNascimentodata (AAAA-MM-DD), ou nulosempre presenteData de nascimento (AAAA-MM-DD), ou nulo.
nomeFantasiatextosempre presenteNome fantasia (pessoa jurídica), ou vazio.
inscricaoEstadualtextosempre presenteInscrição estadual (pessoa jurídica), ou vazio.
representanteLegaltextosempre presenteRepresentante legal (pessoa jurídica), ou vazio.
telefonetextosempre presenteTelefone principal, ou vazio.
telefone2textosempre presenteTelefone secundário, ou vazio.
emailtextosempre presenteE-mail, ou vazio.
ceptextosempre presenteCEP, ou vazio.
logradourotextosempre presenteRua, avenida etc.
numerotextosempre presenteNúmero do endereço.
complementotextosempre presenteComplemento.
bairrotextosempre presenteBairro.
cidadetextosempre presenteCidade.
uftextosempre presenteSigla do estado, ou vazio.
observacoestextosempre presenteAnotações internas.
etiquetaslista de textossempre presenteEtiquetas livres.
linkendereço (URL)sempre presenteEndereço do cliente dentro do JurisPark.
criadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteQuando o cadastro foi criado (UTC).
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
Processos e andamentos.
/processosLista os processos (do mais recentemente atualizado para o mais antigo), com filtros e paginação por cursor. Processos excluídos pelo usuário não aparecem.
qtextoBusca em título, número CNJ (com ou sem pontuação), tipo de ação, parte contrária, tribunal, etiquetas e nome do cliente.
1 a 100 caracteres
statustextoSituação do processo (ativo, em_recurso, suspenso, arquivado, encerrado).
1 a 30 caracteres
clientetextoSó processos deste cliente (id).
1 a 80 caracteres
areatextoÁrea do direito (por exemplo: Trabalhista).
1 a 40 caracteres
limit e cursor: paginação, veja Paginação.
curl
curl "https://app.jurispark.com.br/api/v1/processos?q=souza&status=ativo" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/processos?q=souza&status=ativo", {
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
},
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.get(
"https://app.jurispark.com.br/api/v1/processos?q=souza&status=ativo",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": [
{
"id": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"numeroCnj": "0001234-56.2024.8.10.0001",
"titulo": "Souza x Empresa Exemplo",
"natureza": "judicial",
"area": "Trabalhista",
"tipoAcao": "Reclamação trabalhista",
"status": "ativo",
"tribunal": "TJMA",
"comarca": "Timon",
"vara": "1ª Vara",
"juiz": "",
"url": "",
"valorCausa": 25000,
"dataDistribuicao": "2024-05-20",
"parteContraria": "Empresa Exemplo Ltda",
"advogadoParteContraria": "",
"clientes": [
{
"id": "0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"nome": "Maria da Silva Souza",
"papel": "Autor"
}
],
"advogados": [
{
"id": "0191c3a2-1111-7000-8000-00000000a001",
"nome": "Dr. Exemplo",
"papel": "Responsável"
}
],
"etapa": {
"id": "st-post",
"nome": "Fase postulatória"
},
"processoPrincipalId": null,
"instancia": "1º grau",
"fase": "Conhecimento",
"etiquetas": [],
"observacoes": "",
"link": "https://app.jurispark.com.br/lawyer/lawsuits/0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"criadoEm": "2026-09-20T12:00:00.000Z",
"atualizadoEm": "2026-10-05T18:10:00.000Z"
}
],
"page": {
"limit": 25,
"total": 1,
"hasMore": false,
"nextCursor": null
}
}idtextosempre presenteIdentificador único do processo.
numeroCnjtextosempre presenteNúmero CNJ (vazio para processos administrativos ou sem número).
titulotextosempre presenteTítulo do processo.
naturezatextosempre presenteNatureza do processo.
Valores aceitos: judicial administrativo
areatextosempre presenteÁrea do direito.
tipoAcaotextosempre presenteTipo de ação.
statustextosempre presenteSituação do processo (por exemplo: ativo, em_recurso, suspenso, arquivado, encerrado).
tribunaltextosempre presenteTribunal.
comarcatextosempre presenteComarca.
varatextosempre presenteVara ou órgão.
juiztextosempre presenteJuiz.
urltextosempre presenteEndereço do processo no sistema do tribunal, se cadastrado.
valorCausanúmerosempre presenteValor da causa em reais.
dataDistribuicaodata (AAAA-MM-DD), ou nulosempre presenteData de distribuição (AAAA-MM-DD), ou nulo.
parteContrariatextosempre presenteParte contrária.
advogadoParteContrariatextosempre presenteAdvogado da parte contrária.
clienteslista de objetossempre presenteClientes vinculados.
clientes[].idtextosempre presenteIdentificador do cliente.
clientes[].nometexto, ou nulosempre presenteNome do cliente (nulo se o usuário da chave não pode ver clientes).
clientes[].papeltextosempre presentePapel na ação (Autor, Réu, Terceiro, Interessado ou Outro).
advogadoslista de objetossempre presenteAdvogados vinculados.
advogados[].idtextosempre presenteIdentificador do usuário.
advogados[].nometexto, ou nulosempre presenteNome do advogado.
advogados[].papeltextosempre presenteResponsável ou Participante.
etapaobjeto, ou nulosempre presenteEtapa do funil de processos, ou nulo.
etapa.idtextosempre presenteIdentificador da etapa.
etapa.nometextosempre presenteNome da etapa.
processoPrincipalIdtexto, ou nulosempre presenteId do processo principal, quando este é um incidente ou recurso.
instanciatextosempre presenteInstância.
fasetextosempre presenteFase.
etiquetaslista de textossempre presenteEtiquetas.
observacoestextosempre presenteObservações internas.
linkendereço (URL)sempre presenteEndereço do processo dentro do JurisPark.
criadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteCriação (UTC).
atualizadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteÚltima atualização (UTC).
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
/processos/{id}Devolve os dados de um processo pelo id.
idtextoobrigatórioId do processo.
curl
curl "https://app.jurispark.com.br/api/v1/processos/0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/processos/0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02", {
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
},
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.get(
"https://app.jurispark.com.br/api/v1/processos/0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": {
"id": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"numeroCnj": "0001234-56.2024.8.10.0001",
"titulo": "Souza x Empresa Exemplo",
"natureza": "judicial",
"area": "Trabalhista",
"tipoAcao": "Reclamação trabalhista",
"status": "ativo",
"tribunal": "TJMA",
"comarca": "Timon",
"vara": "1ª Vara",
"juiz": "",
"url": "",
"valorCausa": 25000,
"dataDistribuicao": "2024-05-20",
"parteContraria": "Empresa Exemplo Ltda",
"advogadoParteContraria": "",
"clientes": [
{
"id": "0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"nome": "Maria da Silva Souza",
"papel": "Autor"
}
],
"advogados": [
{
"id": "0191c3a2-1111-7000-8000-00000000a001",
"nome": "Dr. Exemplo",
"papel": "Responsável"
}
],
"etapa": {
"id": "st-post",
"nome": "Fase postulatória"
},
"processoPrincipalId": null,
"instancia": "1º grau",
"fase": "Conhecimento",
"etiquetas": [],
"observacoes": "",
"link": "https://app.jurispark.com.br/lawyer/lawsuits/0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"criadoEm": "2026-09-20T12:00:00.000Z",
"atualizadoEm": "2026-10-05T18:10:00.000Z"
}
}idtextosempre presenteIdentificador único do processo.
numeroCnjtextosempre presenteNúmero CNJ (vazio para processos administrativos ou sem número).
titulotextosempre presenteTítulo do processo.
naturezatextosempre presenteNatureza do processo.
Valores aceitos: judicial administrativo
areatextosempre presenteÁrea do direito.
tipoAcaotextosempre presenteTipo de ação.
statustextosempre presenteSituação do processo (por exemplo: ativo, em_recurso, suspenso, arquivado, encerrado).
tribunaltextosempre presenteTribunal.
comarcatextosempre presenteComarca.
varatextosempre presenteVara ou órgão.
juiztextosempre presenteJuiz.
urltextosempre presenteEndereço do processo no sistema do tribunal, se cadastrado.
valorCausanúmerosempre presenteValor da causa em reais.
dataDistribuicaodata (AAAA-MM-DD), ou nulosempre presenteData de distribuição (AAAA-MM-DD), ou nulo.
parteContrariatextosempre presenteParte contrária.
advogadoParteContrariatextosempre presenteAdvogado da parte contrária.
clienteslista de objetossempre presenteClientes vinculados.
clientes[].idtextosempre presenteIdentificador do cliente.
clientes[].nometexto, ou nulosempre presenteNome do cliente (nulo se o usuário da chave não pode ver clientes).
clientes[].papeltextosempre presentePapel na ação (Autor, Réu, Terceiro, Interessado ou Outro).
advogadoslista de objetossempre presenteAdvogados vinculados.
advogados[].idtextosempre presenteIdentificador do usuário.
advogados[].nometexto, ou nulosempre presenteNome do advogado.
advogados[].papeltextosempre presenteResponsável ou Participante.
etapaobjeto, ou nulosempre presenteEtapa do funil de processos, ou nulo.
etapa.idtextosempre presenteIdentificador da etapa.
etapa.nometextosempre presenteNome da etapa.
processoPrincipalIdtexto, ou nulosempre presenteId do processo principal, quando este é um incidente ou recurso.
instanciatextosempre presenteInstância.
fasetextosempre presenteFase.
etiquetaslista de textossempre presenteEtiquetas.
observacoestextosempre presenteObservações internas.
linkendereço (URL)sempre presenteEndereço do processo dentro do JurisPark.
criadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteCriação (UTC).
atualizadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteÚltima atualização (UTC).
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
/processos/{id}/andamentosHistórico de andamentos de um processo, do mais recente para o mais antigo.
idtextoobrigatórioId do processo.
limit e cursor: paginação, veja Paginação.
curl
curl "https://app.jurispark.com.br/api/v1/processos/0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02/andamentos" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/processos/0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02/andamentos", {
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
},
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.get(
"https://app.jurispark.com.br/api/v1/processos/0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02/andamentos",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": [
{
"id": "0191c3a2-9b22-7e30-9c33-1d4f8a2b6c03",
"processoId": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"data": "2026-10-05",
"titulo": "Juntada de contestação",
"descricao": "Contestação protocolada pela parte contrária.",
"origem": "Manual",
"prazo": "2026-10-20",
"criadoEm": "2026-10-05T18:10:00.000Z"
}
],
"page": {
"limit": 25,
"total": 1,
"hasMore": false,
"nextCursor": null
}
}idtextosempre presenteIdentificador único do andamento.
processoIdtextosempre presenteProcesso ao qual o andamento pertence.
datadata (AAAA-MM-DD)sempre presenteData do andamento (AAAA-MM-DD).
titulotextosempre presenteTítulo.
descricaotextosempre presenteDescrição.
origemtextosempre presenteDe onde veio o andamento.
Valores aceitos: Manual DJEN DataJud
prazodata (AAAA-MM-DD), ou nulosempre presentePrazo gerado pelo andamento (AAAA-MM-DD), ou nulo.
criadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteCriação (UTC).
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
/processos/{id}/andamentosRegistra um andamento manual em um processo e atualiza a data de atualização do processo, como o sistema faz. Use Idempotency-Key para não duplicar em caso de nova tentativa.
Cabeçalho opcional Idempotency-Key: repete a chamada sem duplicar. Veja Idempotência.
idtextoobrigatórioId do processo.
titulotextoobrigatórioTítulo curto do andamento.
1 a 200 caracteres
datadata (AAAA-MM-DD)Data do andamento (AAAA-MM-DD). Padrão: hoje (horário de Brasília).
descricaotextoDetalhes do andamento.
até 3000 caracteres
prazodata (AAAA-MM-DD)Prazo decorrente do andamento (AAAA-MM-DD), se houver.
curl
curl -X POST "https://app.jurispark.com.br/api/v1/processos/0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02/andamentos" \
-H "Authorization: Bearer jp_live_SUA_CHAVE" \
-H "Idempotency-Key: exemplo-criarAndamento-0001" \
-H "Content-Type: application/json" \
-d '{
"titulo": "Juntada de contestação",
"data": "2026-10-05",
"descricao": "Contestação protocolada pela parte contrária.",
"prazo": "2026-10-20"
}'Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/processos/0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02/andamentos", {
method: "POST",
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
"Content-Type": "application/json",
"Idempotency-Key": "exemplo-criarAndamento-0001",
},
body: JSON.stringify({
"titulo": "Juntada de contestação",
"data": "2026-10-05",
"descricao": "Contestação protocolada pela parte contrária.",
"prazo": "2026-10-20"
}),
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.post(
"https://app.jurispark.com.br/api/v1/processos/0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02/andamentos",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
"Idempotency-Key": "exemplo-criarAndamento-0001",
},
json={
"titulo": "Juntada de contestação",
"data": "2026-10-05",
"descricao": "Contestação protocolada pela parte contrária.",
"prazo": "2026-10-20",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": {
"id": "0191c3a2-9b22-7e30-9c33-1d4f8a2b6c03",
"processoId": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"data": "2026-10-05",
"titulo": "Juntada de contestação",
"descricao": "Contestação protocolada pela parte contrária.",
"origem": "Manual",
"prazo": "2026-10-20",
"criadoEm": "2026-10-05T18:10:00.000Z"
}
}idtextosempre presenteIdentificador único do andamento.
processoIdtextosempre presenteProcesso ao qual o andamento pertence.
datadata (AAAA-MM-DD)sempre presenteData do andamento (AAAA-MM-DD).
titulotextosempre presenteTítulo.
descricaotextosempre presenteDescrição.
origemtextosempre presenteDe onde veio o andamento.
Valores aceitos: Manual DJEN DataJud
prazodata (AAAA-MM-DD), ou nulosempre presentePrazo gerado pelo andamento (AAAA-MM-DD), ou nulo.
criadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteCriação (UTC).
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
Tarefas do escritório.
/tarefasLista as tarefas do escritório por prazo (as sem prazo vão para o fim), com filtros e paginação por cursor.
qtextoBusca no título e na descrição.
1 a 100 caracteres
statustextoSituação. "abertas" reúne tudo que não está concluído.
Valores aceitos: abertas pendente andamento revisao concluida
responsaveltexto"eu" (o dono da chave) ou o id de um usuário.
1 a 80 caracteres
prioridadetextoPrioridade.
Valores aceitos: baixa media alta urgente
processotextoSó tarefas deste processo (id).
1 a 80 caracteres
clientetextoSó tarefas deste cliente (id).
1 a 80 caracteres
fromdata (AAAA-MM-DD)Só com prazo a partir desta data (AAAA-MM-DD).
todata (AAAA-MM-DD)Só com prazo até esta data (AAAA-MM-DD).
limit e cursor: paginação, veja Paginação.
curl
curl "https://app.jurispark.com.br/api/v1/tarefas?q=r%C3%A9plica&status=abertas" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/tarefas?q=r%C3%A9plica&status=abertas", {
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
},
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.get(
"https://app.jurispark.com.br/api/v1/tarefas?q=r%C3%A9plica&status=abertas",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": [
{
"id": "0191c3a2-aa33-7f40-8d22-2e5a9b3c7d04",
"titulo": "Preparar réplica",
"descricao": "Revisar a contestação e redigir a réplica.",
"prioridade": "alta",
"status": "pendente",
"prazo": "2026-10-18",
"responsavel": {
"id": "0191c3a2-1111-7000-8000-00000000a001",
"nome": "Dr. Exemplo"
},
"processo": {
"id": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"numeroCnj": "0001234-56.2024.8.10.0001",
"titulo": "Souza x Empresa Exemplo"
},
"cliente": {
"id": "0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"nome": "Maria da Silva Souza"
},
"etiquetas": [],
"checklist": [
{
"id": "0191c3a2-bb44-7a50-8e11-3f6b0c4d8e05",
"texto": "Ler a contestação",
"feito": false
}
],
"totalComentarios": 0,
"link": "https://app.jurispark.com.br/lawyer/tasks/0191c3a2-aa33-7f40-8d22-2e5a9b3c7d04",
"criadoEm": "2026-10-05T18:20:00.000Z",
"atualizadoEm": "2026-10-05T18:20:00.000Z"
}
],
"page": {
"limit": 25,
"total": 1,
"hasMore": false,
"nextCursor": null
}
}idtextosempre presenteIdentificador único da tarefa.
titulotextosempre presenteTítulo.
descricaotextosempre presenteDescrição.
prioridadetextosempre presentePrioridade.
Valores aceitos: baixa media alta urgente
statustextosempre presenteSituação.
Valores aceitos: pendente andamento revisao concluida
prazodata (AAAA-MM-DD), ou nulosempre presentePrazo (AAAA-MM-DD), ou nulo.
responsavelobjeto, ou nulosempre presenteResponsável pela tarefa, ou nulo.
responsavel.idtextosempre presenteIdentificador do usuário.
responsavel.nometextosempre presenteNome do usuário.
processoobjeto, ou nulosempre presenteProcesso vinculado, ou nulo.
processo.idtextosempre presenteIdentificador do processo.
processo.numeroCnjtextoNúmero CNJ do processo (ausente se o usuário da chave não pode ver processos).
processo.titulotextoTítulo do processo (ausente se o usuário da chave não pode ver processos).
clienteobjeto, ou nulosempre presenteCliente vinculado, ou nulo.
cliente.idtextosempre presenteIdentificador do cliente.
cliente.nometextoNome do cliente (ausente se o usuário da chave não pode ver clientes).
etiquetaslista de textossempre presenteEtiquetas.
checklistlista de objetossempre presenteItens da lista de verificação.
checklist[].idtextosempre presenteIdentificador do item.
checklist[].textotextosempre presenteTexto do item.
checklist[].feitoverdadeiro ou falsosempre presenteSe o item foi concluído.
totalComentariosnúmero inteirosempre presenteQuantidade de comentários.
linkendereço (URL)sempre presenteEndereço da tarefa dentro do JurisPark.
criadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteCriação (UTC).
atualizadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteÚltima atualização (UTC).
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
/tarefasCria uma tarefa. Sem responsavelId, a tarefa fica com o usuário dono da chave. Use Idempotency-Key para não duplicar em caso de nova tentativa.
Cabeçalho opcional Idempotency-Key: repete a chamada sem duplicar. Veja Idempotência.
titulotextoobrigatórioTítulo curto da tarefa.
1 a 200 caracteres
descricaotextoDetalhes.
até 5000 caracteres
prazodata (AAAA-MM-DD)Prazo (AAAA-MM-DD).
prioridadetextoPrioridade. Padrão: media.
Valores aceitos: baixa media alta urgente
responsavelIdtextoId do usuário responsável. Padrão: o usuário dono da chave. Atribuir a outra pessoa exige a permissão de atribuir tarefas.
até 80 caracteres
processoIdtextoProcesso relacionado.
até 80 caracteres
clienteIdtextoCliente relacionado.
até 80 caracteres
etiquetaslista de textosEtiquetas (até 20).
até 20 itens
checklistlista de textosItens da lista de verificação (até 30).
até 30 itens
curl
curl -X POST "https://app.jurispark.com.br/api/v1/tarefas" \
-H "Authorization: Bearer jp_live_SUA_CHAVE" \
-H "Idempotency-Key: exemplo-criarTarefa-0001" \
-H "Content-Type: application/json" \
-d '{
"titulo": "Preparar réplica",
"descricao": "Revisar a contestação e redigir a réplica.",
"prazo": "2026-10-18",
"prioridade": "alta",
"processoId": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"checklist": [
"Ler a contestação"
]
}'Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/tarefas", {
method: "POST",
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
"Content-Type": "application/json",
"Idempotency-Key": "exemplo-criarTarefa-0001",
},
body: JSON.stringify({
"titulo": "Preparar réplica",
"descricao": "Revisar a contestação e redigir a réplica.",
"prazo": "2026-10-18",
"prioridade": "alta",
"processoId": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"checklist": [
"Ler a contestação"
]
}),
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.post(
"https://app.jurispark.com.br/api/v1/tarefas",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
"Idempotency-Key": "exemplo-criarTarefa-0001",
},
json={
"titulo": "Preparar réplica",
"descricao": "Revisar a contestação e redigir a réplica.",
"prazo": "2026-10-18",
"prioridade": "alta",
"processoId": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"checklist": [
"Ler a contestação",
],
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": {
"id": "0191c3a2-aa33-7f40-8d22-2e5a9b3c7d04",
"titulo": "Preparar réplica",
"descricao": "Revisar a contestação e redigir a réplica.",
"prioridade": "alta",
"status": "pendente",
"prazo": "2026-10-18",
"responsavel": {
"id": "0191c3a2-1111-7000-8000-00000000a001",
"nome": "Dr. Exemplo"
},
"processo": {
"id": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"numeroCnj": "0001234-56.2024.8.10.0001",
"titulo": "Souza x Empresa Exemplo"
},
"cliente": {
"id": "0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"nome": "Maria da Silva Souza"
},
"etiquetas": [],
"checklist": [
{
"id": "0191c3a2-bb44-7a50-8e11-3f6b0c4d8e05",
"texto": "Ler a contestação",
"feito": false
}
],
"totalComentarios": 0,
"link": "https://app.jurispark.com.br/lawyer/tasks/0191c3a2-aa33-7f40-8d22-2e5a9b3c7d04",
"criadoEm": "2026-10-05T18:20:00.000Z",
"atualizadoEm": "2026-10-05T18:20:00.000Z"
}
}idtextosempre presenteIdentificador único da tarefa.
titulotextosempre presenteTítulo.
descricaotextosempre presenteDescrição.
prioridadetextosempre presentePrioridade.
Valores aceitos: baixa media alta urgente
statustextosempre presenteSituação.
Valores aceitos: pendente andamento revisao concluida
prazodata (AAAA-MM-DD), ou nulosempre presentePrazo (AAAA-MM-DD), ou nulo.
responsavelobjeto, ou nulosempre presenteResponsável pela tarefa, ou nulo.
responsavel.idtextosempre presenteIdentificador do usuário.
responsavel.nometextosempre presenteNome do usuário.
processoobjeto, ou nulosempre presenteProcesso vinculado, ou nulo.
processo.idtextosempre presenteIdentificador do processo.
processo.numeroCnjtextoNúmero CNJ do processo (ausente se o usuário da chave não pode ver processos).
processo.titulotextoTítulo do processo (ausente se o usuário da chave não pode ver processos).
clienteobjeto, ou nulosempre presenteCliente vinculado, ou nulo.
cliente.idtextosempre presenteIdentificador do cliente.
cliente.nometextoNome do cliente (ausente se o usuário da chave não pode ver clientes).
etiquetaslista de textossempre presenteEtiquetas.
checklistlista de objetossempre presenteItens da lista de verificação.
checklist[].idtextosempre presenteIdentificador do item.
checklist[].textotextosempre presenteTexto do item.
checklist[].feitoverdadeiro ou falsosempre presenteSe o item foi concluído.
totalComentariosnúmero inteirosempre presenteQuantidade de comentários.
linkendereço (URL)sempre presenteEndereço da tarefa dentro do JurisPark.
criadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteCriação (UTC).
atualizadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteÚltima atualização (UTC).
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
/tarefas/{id}Altera só os campos enviados (situação, prazo, prioridade, responsável, vínculos ou texto) e/ou acrescenta um comentário. Mudanças de prazo e de situação entram no histórico da tarefa. Não há rota para apagar tarefas.
idtextoobrigatórioId da tarefa.
titulotextoNovo título.
1 a 200 caracteres
descricaotextoNova descrição.
até 5000 caracteres
statustextoNova situação.
Valores aceitos: pendente andamento revisao concluida
prazodata (AAAA-MM-DD), ou nuloNovo prazo (AAAA-MM-DD). Nulo remove o prazo.
prioridadetextoNova prioridade.
Valores aceitos: baixa media alta urgente
responsavelIdtexto, ou nuloNovo responsável (id de usuário). Nulo remove. Exige a permissão de atribuir tarefas.
até 80 caracteres
processoIdtexto, ou nuloNovo processo vinculado. Nulo desvincula.
até 80 caracteres
clienteIdtexto, ou nuloNovo cliente vinculado. Nulo desvincula.
até 80 caracteres
comentariotextoComentário a acrescentar na tarefa.
1 a 1000 caracteres
curl
curl -X PATCH "https://app.jurispark.com.br/api/v1/tarefas/0191c3a2-aa33-7f40-8d22-2e5a9b3c7d04" \
-H "Authorization: Bearer jp_live_SUA_CHAVE" \
-H "Content-Type: application/json" \
-d '{
"status": "concluida",
"comentario": "Réplica protocolada."
}'Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/tarefas/0191c3a2-aa33-7f40-8d22-2e5a9b3c7d04", {
method: "PATCH",
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
"Content-Type": "application/json",
},
body: JSON.stringify({
"status": "concluida",
"comentario": "Réplica protocolada."
}),
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.patch(
"https://app.jurispark.com.br/api/v1/tarefas/0191c3a2-aa33-7f40-8d22-2e5a9b3c7d04",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
},
json={
"status": "concluida",
"comentario": "Réplica protocolada.",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": {
"id": "0191c3a2-aa33-7f40-8d22-2e5a9b3c7d04",
"titulo": "Preparar réplica",
"descricao": "Revisar a contestação e redigir a réplica.",
"prioridade": "alta",
"status": "pendente",
"prazo": "2026-10-18",
"responsavel": {
"id": "0191c3a2-1111-7000-8000-00000000a001",
"nome": "Dr. Exemplo"
},
"processo": {
"id": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"numeroCnj": "0001234-56.2024.8.10.0001",
"titulo": "Souza x Empresa Exemplo"
},
"cliente": {
"id": "0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"nome": "Maria da Silva Souza"
},
"etiquetas": [],
"checklist": [
{
"id": "0191c3a2-bb44-7a50-8e11-3f6b0c4d8e05",
"texto": "Ler a contestação",
"feito": false
}
],
"totalComentarios": 0,
"link": "https://app.jurispark.com.br/lawyer/tasks/0191c3a2-aa33-7f40-8d22-2e5a9b3c7d04",
"criadoEm": "2026-10-05T18:20:00.000Z",
"atualizadoEm": "2026-10-05T18:20:00.000Z"
}
}idtextosempre presenteIdentificador único da tarefa.
titulotextosempre presenteTítulo.
descricaotextosempre presenteDescrição.
prioridadetextosempre presentePrioridade.
Valores aceitos: baixa media alta urgente
statustextosempre presenteSituação.
Valores aceitos: pendente andamento revisao concluida
prazodata (AAAA-MM-DD), ou nulosempre presentePrazo (AAAA-MM-DD), ou nulo.
responsavelobjeto, ou nulosempre presenteResponsável pela tarefa, ou nulo.
responsavel.idtextosempre presenteIdentificador do usuário.
responsavel.nometextosempre presenteNome do usuário.
processoobjeto, ou nulosempre presenteProcesso vinculado, ou nulo.
processo.idtextosempre presenteIdentificador do processo.
processo.numeroCnjtextoNúmero CNJ do processo (ausente se o usuário da chave não pode ver processos).
processo.titulotextoTítulo do processo (ausente se o usuário da chave não pode ver processos).
clienteobjeto, ou nulosempre presenteCliente vinculado, ou nulo.
cliente.idtextosempre presenteIdentificador do cliente.
cliente.nometextoNome do cliente (ausente se o usuário da chave não pode ver clientes).
etiquetaslista de textossempre presenteEtiquetas.
checklistlista de objetossempre presenteItens da lista de verificação.
checklist[].idtextosempre presenteIdentificador do item.
checklist[].textotextosempre presenteTexto do item.
checklist[].feitoverdadeiro ou falsosempre presenteSe o item foi concluído.
totalComentariosnúmero inteirosempre presenteQuantidade de comentários.
linkendereço (URL)sempre presenteEndereço da tarefa dentro do JurisPark.
criadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteCriação (UTC).
atualizadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteÚltima atualização (UTC).
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
Compromissos, audiências e prazos.
/agendaCompromissos, audiências e prazos que tocam o período pedido (padrão: de hoje a 30 dias; no máximo 366 dias), em ordem de data e hora. Compromissos recorrentes aparecem uma vez, na data inicial. Cancelados só aparecem com status=cancelado.
fromdata (AAAA-MM-DD)Início do período (AAAA-MM-DD). Padrão: hoje (horário de Brasília).
todata (AAAA-MM-DD)Fim do período (AAAA-MM-DD). Padrão: 30 dias depois de from.
tipotextoTipo do compromisso.
Valores aceitos: audiencia prazo_judicial prazo_interno reuniao compromisso diligencia pericia exigencia
statustextoSituação. Sem este filtro, os cancelados ficam de fora.
Valores aceitos: agendado concluido cancelado
processotextoSó deste processo (id).
1 a 80 caracteres
clientetextoSó deste cliente (id).
1 a 80 caracteres
limit e cursor: paginação, veja Paginação.
curl
curl "https://app.jurispark.com.br/api/v1/agenda?from=2026-10-01&to=2026-10-31" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/agenda?from=2026-10-01&to=2026-10-31", {
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
},
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.get(
"https://app.jurispark.com.br/api/v1/agenda?from=2026-10-01&to=2026-10-31",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": [
{
"id": "0191c3a2-cc55-7b60-8f00-4a7c1d5e9f06",
"tipo": "audiencia",
"titulo": "Audiência de instrução",
"data": "2026-11-12",
"hora": "14:30",
"dataFim": "2026-11-12",
"horaFim": "15:30",
"diaInteiro": false,
"local": "Fórum de Timon, sala 3",
"descricao": "",
"status": "agendado",
"recorrencia": "nenhuma",
"processo": {
"id": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"numeroCnj": "0001234-56.2024.8.10.0001",
"titulo": "Souza x Empresa Exemplo"
},
"cliente": {
"id": "0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"nome": "Maria da Silva Souza"
},
"link": "https://app.jurispark.com.br/lawyer/calendar",
"criadoEm": "2026-10-05T18:30:00.000Z"
}
],
"page": {
"limit": 25,
"total": 1,
"hasMore": false,
"nextCursor": null
}
}idtextosempre presenteIdentificador único do compromisso.
tipotextosempre presenteTipo.
Valores aceitos: audiencia prazo_judicial prazo_interno reuniao compromisso diligencia pericia exigencia
titulotextosempre presenteTítulo.
datadata (AAAA-MM-DD)sempre presenteData inicial (AAAA-MM-DD).
horahora (HH:MM), ou nulosempre presenteHora inicial (HH:MM, horário de Brasília), ou nulo se for o dia todo.
dataFimdata (AAAA-MM-DD)sempre presenteData final (AAAA-MM-DD).
horaFimhora (HH:MM), ou nulosempre presenteHora final (HH:MM), ou nulo.
diaInteiroverdadeiro ou falsosempre presenteVerdadeiro quando não tem hora marcada.
localtextosempre presenteLocal.
descricaotextosempre presenteDescrição.
statustextosempre presenteSituação.
Valores aceitos: agendado concluido cancelado
recorrenciatextosempre presenteRepetição do compromisso. As repetições não são expandidas pela API: o item aparece uma vez, na data inicial.
Valores aceitos: nenhuma diaria semanal quinzenal mensal anual
processoobjeto, ou nulosempre presenteProcesso vinculado, ou nulo.
processo.idtextosempre presenteIdentificador do processo.
processo.numeroCnjtextoNúmero CNJ do processo (ausente se o usuário da chave não pode ver processos).
processo.titulotextoTítulo do processo (ausente se o usuário da chave não pode ver processos).
clienteobjeto, ou nulosempre presenteCliente vinculado, ou nulo.
cliente.idtextosempre presenteIdentificador do cliente.
cliente.nometextoNome do cliente (ausente se o usuário da chave não pode ver clientes).
linkendereço (URL)sempre presenteEndereço da agenda dentro do JurisPark.
criadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteCriação (UTC).
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
/agendaCria um compromisso, audiência ou prazo na agenda. Os lembretes seguem o padrão configurado pelo escritório. Use Idempotency-Key para não duplicar em caso de nova tentativa.
Cabeçalho opcional Idempotency-Key: repete a chamada sem duplicar. Veja Idempotência.
tipotextoobrigatórioTipo do compromisso.
Valores aceitos: audiencia prazo_judicial prazo_interno reuniao compromisso diligencia pericia exigencia
titulotextoobrigatórioTítulo.
1 a 200 caracteres
datadata (AAAA-MM-DD)obrigatórioData inicial (AAAA-MM-DD).
horahora (HH:MM)Hora inicial (HH:MM). Omita para compromisso de dia inteiro.
dataFimdata (AAAA-MM-DD)Data final (AAAA-MM-DD). Padrão: a mesma data inicial.
horaFimhora (HH:MM)Hora final (HH:MM).
localtextoLocal.
até 200 caracteres
descricaotextoDetalhes.
até 2000 caracteres
processoIdtextoProcesso relacionado.
até 80 caracteres
clienteIdtextoCliente relacionado.
até 80 caracteres
curl
curl -X POST "https://app.jurispark.com.br/api/v1/agenda" \
-H "Authorization: Bearer jp_live_SUA_CHAVE" \
-H "Idempotency-Key: exemplo-criarCompromisso-0001" \
-H "Content-Type: application/json" \
-d '{
"tipo": "audiencia",
"titulo": "Audiência de instrução",
"data": "2026-11-12",
"hora": "14:30",
"horaFim": "15:30",
"local": "Fórum de Timon, sala 3",
"processoId": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02"
}'Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/agenda", {
method: "POST",
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
"Content-Type": "application/json",
"Idempotency-Key": "exemplo-criarCompromisso-0001",
},
body: JSON.stringify({
"tipo": "audiencia",
"titulo": "Audiência de instrução",
"data": "2026-11-12",
"hora": "14:30",
"horaFim": "15:30",
"local": "Fórum de Timon, sala 3",
"processoId": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02"
}),
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.post(
"https://app.jurispark.com.br/api/v1/agenda",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
"Idempotency-Key": "exemplo-criarCompromisso-0001",
},
json={
"tipo": "audiencia",
"titulo": "Audiência de instrução",
"data": "2026-11-12",
"hora": "14:30",
"horaFim": "15:30",
"local": "Fórum de Timon, sala 3",
"processoId": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": {
"id": "0191c3a2-cc55-7b60-8f00-4a7c1d5e9f06",
"tipo": "audiencia",
"titulo": "Audiência de instrução",
"data": "2026-11-12",
"hora": "14:30",
"dataFim": "2026-11-12",
"horaFim": "15:30",
"diaInteiro": false,
"local": "Fórum de Timon, sala 3",
"descricao": "",
"status": "agendado",
"recorrencia": "nenhuma",
"processo": {
"id": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"numeroCnj": "0001234-56.2024.8.10.0001",
"titulo": "Souza x Empresa Exemplo"
},
"cliente": {
"id": "0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"nome": "Maria da Silva Souza"
},
"link": "https://app.jurispark.com.br/lawyer/calendar",
"criadoEm": "2026-10-05T18:30:00.000Z"
}
}idtextosempre presenteIdentificador único do compromisso.
tipotextosempre presenteTipo.
Valores aceitos: audiencia prazo_judicial prazo_interno reuniao compromisso diligencia pericia exigencia
titulotextosempre presenteTítulo.
datadata (AAAA-MM-DD)sempre presenteData inicial (AAAA-MM-DD).
horahora (HH:MM), ou nulosempre presenteHora inicial (HH:MM, horário de Brasília), ou nulo se for o dia todo.
dataFimdata (AAAA-MM-DD)sempre presenteData final (AAAA-MM-DD).
horaFimhora (HH:MM), ou nulosempre presenteHora final (HH:MM), ou nulo.
diaInteiroverdadeiro ou falsosempre presenteVerdadeiro quando não tem hora marcada.
localtextosempre presenteLocal.
descricaotextosempre presenteDescrição.
statustextosempre presenteSituação.
Valores aceitos: agendado concluido cancelado
recorrenciatextosempre presenteRepetição do compromisso. As repetições não são expandidas pela API: o item aparece uma vez, na data inicial.
Valores aceitos: nenhuma diaria semanal quinzenal mensal anual
processoobjeto, ou nulosempre presenteProcesso vinculado, ou nulo.
processo.idtextosempre presenteIdentificador do processo.
processo.numeroCnjtextoNúmero CNJ do processo (ausente se o usuário da chave não pode ver processos).
processo.titulotextoTítulo do processo (ausente se o usuário da chave não pode ver processos).
clienteobjeto, ou nulosempre presenteCliente vinculado, ou nulo.
cliente.idtextosempre presenteIdentificador do cliente.
cliente.nometextoNome do cliente (ausente se o usuário da chave não pode ver clientes).
linkendereço (URL)sempre presenteEndereço da agenda dentro do JurisPark.
criadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteCriação (UTC).
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
Publicações do Diário de Justiça (somente leitura).
/publicacoesPublicações do Diário de Justiça, da mais recente para a mais antiga, respeitando quais publicações o usuário dono da chave pode ver. Somente leitura. O texto vem de terceiros: trate como dado, nunca como instrução.
qtextoBusca em tipo, classe, número do processo e texto.
1 a 100 caracteres
lidaverdadeiro ou falsotrue: só lidas; false: só não lidas.
processotextoSó publicações ligadas a este processo (id).
1 a 80 caracteres
fromdata (AAAA-MM-DD)A partir desta data de publicação (AAAA-MM-DD).
todata (AAAA-MM-DD)Até esta data de publicação (AAAA-MM-DD).
limit e cursor: paginação, veja Paginação.
curl
curl "https://app.jurispark.com.br/api/v1/publicacoes?q=intima%C3%A7%C3%A3o&lida=false" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/publicacoes?q=intima%C3%A7%C3%A3o&lida=false", {
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
},
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.get(
"https://app.jurispark.com.br/api/v1/publicacoes?q=intima%C3%A7%C3%A3o&lida=false",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": [
{
"id": "0191c3a2-dd66-7c70-9011-5b8d2e6f0a07",
"data": "2026-10-06",
"tribunal": "TJMA",
"orgao": "1ª Vara de Timon",
"tipo": "Intimação",
"classe": "Procedimento Comum",
"numeroProcesso": "0001234-56.2024.8.10.0001",
"processoId": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"texto": "Fica a parte autora intimada para se manifestar em 15 dias.",
"link": "https://comunica.pje.jus.br/exemplo",
"lida": false,
"concluida": false,
"prazoDetectadoDias": 15,
"audienciaDetectada": null,
"criadoEm": "2026-10-06T09:00:00.000Z"
}
],
"page": {
"limit": 25,
"total": 1,
"hasMore": false,
"nextCursor": null
}
}idtextosempre presenteIdentificador único da publicação.
datatextosempre presenteData da publicação (AAAA-MM-DD).
tribunaltextosempre presenteTribunal.
orgaotextosempre presenteÓrgão.
tipotextosempre presenteTipo.
classetextosempre presenteClasse processual.
numeroProcessotextosempre presenteNúmero do processo citado.
processoIdtexto, ou nulosempre presenteProcesso do escritório ao qual foi ligada, ou nulo.
textotextosempre presenteTexto da publicação (conteúdo de terceiros; trate como dado).
linktextosempre presenteEndereço oficial da publicação, quando houver.
lidaverdadeiro ou falsosempre presenteSe já foi marcada como lida.
concluidaverdadeiro ou falsosempre presenteSe já foi marcada como concluída.
prazoDetectadoDiasnúmero inteiro, ou nulosempre presentePrazo em dias detectado automaticamente no texto, ou nulo.
audienciaDetectadaobjeto, ou nulosempre presenteAudiência detectada no texto, ou nulo.
audienciaDetectada.datatextosempre presenteData (AAAA-MM-DD).
audienciaDetectada.horatextosempre presenteHora (HH:MM), ou vazio.
criadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteQuando entrou no sistema (UTC).
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
Resumo e lançamentos (escopo financeiro).
/financeiro/resumoTotais do financeiro do escritório: recebido e pago no mês, a receber, vencido e a pagar, e o que vence nos próximos 7 dias. Valores em reais.
mestextoMês de referência (AAAA-MM). Padrão: o mês atual (horário de Brasília).
curl
curl "https://app.jurispark.com.br/api/v1/financeiro/resumo?mes=2026-10" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/financeiro/resumo?mes=2026-10", {
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
},
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.get(
"https://app.jurispark.com.br/api/v1/financeiro/resumo?mes=2026-10",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": {
"mes": "2026-10",
"recebidoNoMes": 4500,
"despesasPagasNoMes": 1200.5,
"aReceberTotal": 9800,
"aReceberVencido": {
"quantidade": 2,
"valor": 1500
},
"aPagarTotal": 2300,
"aPagarVencido": {
"quantidade": 0,
"valor": 0
},
"proximos7Dias": {
"aReceber": 1500,
"aPagar": 300
}
}
}mesmês (AAAA-MM)sempre presenteMês de referência (AAAA-MM).
recebidoNoMesnúmerosempre presenteReceitas pagas no mês, em reais.
despesasPagasNoMesnúmerosempre presenteDespesas pagas no mês, em reais.
aReceberTotalnúmerosempre presenteTotal de receitas pendentes, em reais.
aReceberVencidoobjetosempre presenteaReceberVencido.quantidadenúmero inteirosempre presenteQuantidade.
aReceberVencido.valornúmerosempre presenteValor em reais.
aPagarTotalnúmerosempre presenteTotal de despesas pendentes, em reais.
aPagarVencidoobjetosempre presenteaPagarVencido.quantidadenúmero inteirosempre presenteQuantidade.
aPagarVencido.valornúmerosempre presenteValor em reais.
proximos7Diasobjetosempre presenteproximos7Dias.aRecebernúmerosempre presenteA receber nos próximos 7 dias.
proximos7Dias.aPagarnúmerosempre presenteA pagar nos próximos 7 dias.
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
/financeiro/lancamentosLançamentos do financeiro (receitas e despesas) por vencimento, com filtros e paginação por cursor. Valores em reais.
statustextoSituação.
Valores aceitos: pendente pago cancelado
tipotextoReceita ou despesa.
Valores aceitos: receita despesa
fromdata (AAAA-MM-DD)Vencimento a partir desta data (AAAA-MM-DD).
todata (AAAA-MM-DD)Vencimento até esta data (AAAA-MM-DD).
clientetextoSó lançamentos deste cliente (id).
1 a 80 caracteres
processotextoSó lançamentos deste processo (id).
1 a 80 caracteres
limit e cursor: paginação, veja Paginação.
curl
curl "https://app.jurispark.com.br/api/v1/financeiro/lancamentos?status=pendente&from=2026-10-01" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/financeiro/lancamentos?status=pendente&from=2026-10-01", {
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
},
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);Python
import requests
resposta = requests.get(
"https://app.jurispark.com.br/api/v1/financeiro/lancamentos?status=pendente&from=2026-10-01",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados){
"data": [
{
"id": "0191c3a2-ee77-7d80-9122-6c9e3f7a1b08",
"tipo": "receita",
"natureza": "honorario",
"categoria": "Honorários advocatícios",
"valor": 1500,
"descricao": "Honorários iniciais",
"competencia": "2026-10",
"vencimento": "2026-10-30",
"status": "pendente",
"pagoEm": null,
"formaPagamento": "",
"cliente": {
"id": "0191c3a2-7e4b-7c10-9a55-3f1d2b8c6a01",
"nome": "Maria da Silva Souza"
},
"processo": {
"id": "0191c3a2-8a11-7d20-8b44-6c2e9f1a7b02",
"numeroCnj": "0001234-56.2024.8.10.0001",
"titulo": "Souza x Empresa Exemplo"
},
"parcela": {
"numero": 1,
"total": 3
},
"criadoEm": "2026-10-01T15:00:00.000Z"
}
],
"page": {
"limit": 25,
"total": 1,
"hasMore": false,
"nextCursor": null
}
}idtextosempre presenteIdentificador único do lançamento.
tipotextosempre presenteReceita ou despesa.
Valores aceitos: receita despesa
naturezatextosempre presenteComo o lançamento foi classificado no sistema.
Valores aceitos: honorario recebimento despesa
categoriatextosempre presenteCategoria financeira.
valornúmerosempre presenteValor em reais.
descricaotextosempre presenteDescrição.
competenciatextosempre presenteMês de competência (AAAA-MM), ou vazio.
vencimentotextosempre presenteData de vencimento (AAAA-MM-DD).
statustextosempre presenteSituação.
Valores aceitos: pendente pago cancelado
pagoEmtexto, ou nulosempre presenteData do pagamento (AAAA-MM-DD), ou nulo.
formaPagamentotextosempre presenteForma de pagamento prevista ou usada.
clienteobjeto, ou nulosempre presenteCliente vinculado, ou nulo.
cliente.idtextosempre presenteIdentificador do cliente.
cliente.nometextoNome do cliente (ausente se o usuário da chave não pode ver clientes).
processoobjeto, ou nulosempre presenteProcesso vinculado, ou nulo.
processo.idtextosempre presenteIdentificador do processo.
processo.numeroCnjtextoNúmero CNJ do processo (ausente se o usuário da chave não pode ver processos).
processo.titulotextoTítulo do processo (ausente se o usuário da chave não pode ver processos).
parcelaobjeto, ou nulosempre presenteParcela, quando o lançamento faz parte de um parcelamento; senão nulo.
parcela.numeronúmero inteirosempre presenteNúmero da parcela.
parcela.totalnúmero inteirosempre presenteTotal de parcelas.
criadoEmdata e hora (ISO 8601, UTC), ou nulosempre presenteCriação (UTC).
Nomes com ponto indicam campos dentro de outro objeto; [] indica itens de uma lista.
API REST
As listas devolvem os itens em data e as informações de paginação em page. A paginação é por cursor: você pede a primeira página e, enquanto houver mais, envia de volta o cursor recebido.
limit define o tamanho da página: de 1 a 100, padrão 25.page.nextCursor traz o cursor da próxima página. Envie em ?cursor=. Na última página ele é null e page.hasMore é false.page.total é o total de itens que atendem aos filtros, somando todas as páginas.400 cursor_invalido).{
"page": {
"limit": 2,
"total": 5,
"hasMore": true,
"nextCursor": "eyJrIjoiLi4uIn0"
}
}curl
# primeira página
curl "https://app.jurispark.com.br/api/v1/tarefas?limit=2" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"
# próxima página: troque CURSOR pelo valor de page.nextCursor da resposta anterior
curl "https://app.jurispark.com.br/api/v1/tarefas?limit=2&cursor=CURSOR" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"Node.js
let cursor = null;
const tarefas = [];
do {
const url = new URL("https://app.jurispark.com.br/api/v1/tarefas");
url.searchParams.set("limit", "100");
if (cursor) url.searchParams.set("cursor", cursor);
const resposta = await fetch(url, {
headers: { Authorization: "Bearer jp_live_SUA_CHAVE" },
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
tarefas.push(...json.data);
cursor = json.page.nextCursor;
} while (cursor);
console.log(`${tarefas.length} tarefas`);Python
import requests
tarefas = []
cursor = None
while True:
params = {"limit": 100}
if cursor:
params["cursor"] = cursor
resposta = requests.get(
"https://app.jurispark.com.br/api/v1/tarefas",
headers={"Authorization": "Bearer jp_live_SUA_CHAVE"},
params=params,
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
tarefas += dados["data"]
cursor = dados["page"]["nextCursor"]
if not cursor:
break
print(f"{len(tarefas)} tarefas")API REST
Se a rede cair no meio de um POST, você não sabe se o registro foi criado. Com o cabeçalho Idempotency-Key, repetir a chamada é seguro.
POST (criar cliente, andamento, tarefa e compromisso).. _ : -, de 1 a 255 caracteres.Idempotent-Replayed: true, e não cria um segundo registro.422 idempotencia_conflito.curl
curl -i -X POST "https://app.jurispark.com.br/api/v1/tarefas" \
-H "Authorization: Bearer jp_live_SUA_CHAVE" \
-H "Idempotency-Key: minha-operacao-0001" \
-H "Content-Type: application/json" \
-d '{
"titulo": "Preparar réplica",
"prioridade": "alta"
}'Node.js
const resposta = await fetch("https://app.jurispark.com.br/api/v1/tarefas", {
method: "POST",
headers: {
Authorization: "Bearer jp_live_SUA_CHAVE",
"Content-Type": "application/json",
"Idempotency-Key": "minha-operacao-0001",
},
body: JSON.stringify({
"titulo": "Preparar réplica",
"prioridade": "alta"
}),
});
const json = await resposta.json();
if (!resposta.ok) throw new Error(`${json.error}: ${json.message}`);
console.log(resposta.status, json);
console.log("repetida?", resposta.headers.get("Idempotent-Replayed") === "true");Python
import requests
resposta = requests.post(
"https://app.jurispark.com.br/api/v1/tarefas",
headers={
"Authorization": "Bearer jp_live_SUA_CHAVE",
"Idempotency-Key": "minha-operacao-0001",
},
json={
"titulo": "Preparar réplica",
"prioridade": "alta",
},
timeout=30,
)
dados = resposta.json()
if not resposta.ok:
raise RuntimeError(f"{dados['error']}: {dados['message']}")
print(resposta.status_code, dados)
print("repetida?", resposta.headers.get("Idempotent-Replayed") == "true")Rode o exemplo duas vezes: a segunda resposta vem com Idempotent-Replayed: true (no curl, a opção -i mostra os cabeçalhos) e a tarefa não é duplicada.
API REST
Os limites valem por chave e protegem o escritório de integrações que repetem chamadas sem parar.
| Limite | Valor | O que acontece ao passar |
|---|---|---|
| Chamadas por minuto | 120 por chave | 429 limite_de_taxa, com Retry-After em segundos. |
| Chamadas por dia | 10.000 por chave (padrão), contadas no horário de Brasília | 429 limite_diario. Zera à meia-noite. |
| Chave inválida | muitas tentativas seguidas | 429 muitas_tentativas. Aguarde um minuto. |
| Tamanho do corpo | 256 KB | 413 corpo_grande_demais |
| Itens por página | 100 | 400 validacao |
| Chaves ativas | 10 por escritório | Revogue uma chave para criar outra. |
| Período da agenda | 366 dias por consulta (padrão: hoje até 30 dias) | 400 validacao |
X-RateLimit-LimitX-RateLimit-RemainingX-RateLimit-ResetRetry-AfterX-Request-IdIdempotent-Replayedtrue quando a resposta é a repetição de uma chamada anterior com a mesma Idempotency-Key.WWW-AuthenticateEspere o tempo de Retry-After e tente de novo. Não repita imediatamente: isso só gasta o limite. Erros 5xx também merecem nova tentativa, com espera crescente.
curl
# --retry respeita o cabeçalho Retry-After nas respostas 429 e 5xx
curl --retry 3 "https://app.jurispark.com.br/api/v1/tarefas?limit=5" \
-H "Authorization: Bearer jp_live_SUA_CHAVE"Node.js
async function chamar(url, opcoes, tentativas = 4) {
for (let i = 0; i < tentativas; i++) {
const resposta = await fetch(url, opcoes);
if (resposta.status !== 429 && resposta.status < 500) return resposta;
// espera o tempo que a API pediu (Retry-After, em segundos) ou 2 s, 4 s, 8 s...
const espera = Number(resposta.headers.get("Retry-After")) || 2 ** (i + 1);
await new Promise((ok) => setTimeout(ok, espera * 1000));
}
throw new Error("A API continuou indisponível ou limitada depois de várias tentativas.");
}
const resposta = await chamar("https://app.jurispark.com.br/api/v1/tarefas?limit=5", {
headers: { Authorization: "Bearer jp_live_SUA_CHAVE" },
});
console.log(resposta.status, await resposta.json());Python
import time
import requests
def chamar(metodo, url, tentativas=4, **opcoes):
for i in range(tentativas):
resposta = requests.request(metodo, url, timeout=30, **opcoes)
if resposta.status_code != 429 and resposta.status_code < 500:
return resposta
# espera o tempo que a API pediu (Retry-After, em segundos) ou 2 s, 4 s, 8 s...
time.sleep(int(resposta.headers.get("Retry-After", 2 ** (i + 1))))
raise RuntimeError("A API continuou indisponível ou limitada depois de várias tentativas.")
resposta = chamar(
"GET",
"https://app.jurispark.com.br/api/v1/tarefas?limit=5",
headers={"Authorization": "Bearer jp_live_SUA_CHAVE"},
)
print(resposta.status_code, resposta.json())API REST
Todo erro tem o mesmo formato. Trate o campo error no seu programa, que é um código curto e estável, e mostre o message às pessoas.
{
"error": "validacao",
"message": "Alguns campos estão inválidos.",
"details": [
{ "campo": "nome", "mensagem": "é obrigatório" }
]
}details é opcional. Em erros de validação traz uma lista de { campo, mensagem }. Parâmetros de consulta e campos de corpo que a API não conhece também geram 400, para pegar erros de digitação.
| Status | Código (error) | Quando acontece |
|---|---|---|
| 400 | validacao | Campo ausente, com formato errado ou desconhecido. Veja details. |
| 400 | json_invalido | O corpo não é um JSON válido. |
| 400 | cursor_invalido | Cursor alterado, ou usado com filtros diferentes dos da consulta original. |
| 401 | nao_autenticado | Faltou o cabeçalho Authorization: Bearer. |
| 401 | chave_invalida | A chave não existe ou foi copiada incompleta. |
| 401 | chave_revogada | A chave foi revogada. Crie outra. |
| 401 | chave_vencida | A chave passou do vencimento. Crie outra. |
| 402 | licenca_expirada | A licença do escritório não permite gravar agora. A leitura continua liberada. |
| 402 | espaco_esgotado | O espaço de armazenamento do plano do escritório acabou. |
| 403 | escopo_insuficiente | A chave não tem o escopo que a operação exige. |
| 403 | sem_permissao | O usuário dono da chave não tem a permissão necessária no sistema. |
| 403 | api_desligada_no_escritorio | O administrador ainda não ligou a API em Configurações. |
| 403 | usuario_inativo | O usuário dono da chave foi desativado ou removido. |
| 403 | conta_bloqueada | A conta do escritório está suspensa ou cancelada. |
| 403 | demonstracao | A API não está disponível na demonstração. |
| 404 | nao_encontrado | O registro não existe neste escritório. |
| 404 | rota_nao_encontrada | O endereço não existe. A lista das rotas está no OpenAPI. |
| 405 | metodo_nao_permitido | O método HTTP não vale para esse endereço. O cabeçalho Allow lista os aceitos. |
| 413 | corpo_grande_demais | O corpo passa de 256 KB. |
| 415 | tipo_nao_suportado | O corpo não veio como Content-Type: application/json. |
| 422 | idempotencia_conflito | A mesma Idempotency-Key foi usada com outro conteúdo. |
| 429 | limite_de_taxa, limite_diario, muitas_tentativas | Limite por minuto, limite do dia ou muitas tentativas com chave inválida. Veja Retry-After. |
| 500 | erro_interno | Erro inesperado no servidor. Tente de novo e, se persistir, informe o X-Request-Id. |
| 503 | api_desligada | A API foi desligada em todo o sistema (manutenção). |
429, 500 e 503, com espera. Nos POST, reutilize a mesma Idempotency-Key.4xx indicam um problema na chamada ou na configuração. Corrija antes de tentar de novo.Conexão de IA (MCP)
MCP é um padrão aberto que permite a assistentes de IA usarem sistemas externos como ferramentas. Ao conectar o JurisPark, o Claude consulta e, se você permitir, registra dados do escritório a partir de pedidos em linguagem natural. O login é feito no JurisPark, sem copiar chave.
https://app.jurispark.com.br/mcpCole exatamente assim, sem barra no final. É o mesmo endereço para todos os clientes de IA.
Funciona no site claude.ai, no Claude Desktop e no app do celular, com a mesma conta. O conector personalizado está disponível nos planos Free (com 1 conector), Pro, Max, Team e Enterprise, segundo a documentação do Claude.
https://app.jurispark.com.br/mcp.Planos Team e Enterprise: o Owner da organização adiciona o conector primeiro, em Organization settings, Connectors, Add, Custom (se perguntar o tipo, escolha Web). Depois cada pessoa vai em Customize, Connectors, acha o conector com o rótulo Custom e clica em Connect.
Os nomes dos menus estão como aparecem em inglês e podem variar conforme o idioma e a versão do aplicativo. Em Customize, Connectors você pode marcar ferramentas individuais como Blocked, por exemplo as que gravam dados. O Claude também pede a sua aprovação antes de usar cada ferramenta: use "Always allow" só se confiar.
Para quem usa o Claude Code no terminal.
claude mcp add --transport http jurispark https://app.jurispark.com.br/mcp/mcp e escolha o JurisPark para entrar pelo navegador. Ou, no terminal: claude mcp login jurispark.Por padrão o servidor vale só para a pasta atual. Para todos os projetos, acrescente --scope user ao comando. Para desconectar: claude mcp logout jurispark. Use uma versão atual do Claude Code.
Ainda sem teste completo. O JurisPark segue o padrão que o ChatGPT exige para conectores (HTTPS público, OAuth), mas não validamos o fluxo inteiro em uma conta real do ChatGPT. Os menus mudam com frequência, e a disponibilidade de conectores personalizados, e se eles podem gravar dados ou só ler, depende do plano e da política da OpenAI. Consulte a ajuda da OpenAI para o seu plano. Se não funcionar, use o Claude.
https://app.jurispark.com.br/mcp e escolha autenticação OAuth.O ChatGPT só conecta a endereços públicos, nunca a servidores em computador local.
Qualquer programa que fale o padrão MCP por internet (transporte HTTP) com login OAuth deve funcionar. As configurações abaixo seguem a documentação de cada ferramenta e não foram testadas por nós.
No arquivo ~/.cursor/mcp.json (ou .cursor/mcp.json dentro do projeto). Depois, entre pelo navegador quando o Cursor pedir.
{
"mcpServers": {
"jurispark": { "url": "https://app.jurispark.com.br/mcp" }
}
}No arquivo ~/.gemini/settings.json. Depois, no Gemini CLI, rode /mcp auth jurispark. Precisa de navegador no mesmo computador.
{
"mcpServers": {
"jurispark": {
"httpUrl": "https://app.jurispark.com.br/mcp",
"oauth": { "enabled": true }
}
}
}Clientes que só aceitam uma chave fixa, sem login OAuth, não são compatíveis. Se o seu cliente mostrar erro de endereço de retorno (redirect URI) recusado, ele ainda não foi liberado no JurisPark.
Conexão de IA (MCP)
Seis exemplos de pedidos que usam só ferramentas que existem hoje. A IA monta o resumo e a análise com o raciocínio dela, em cima dos dados que leu: o JurisPark entrega os dados, não gera o resumo por esse caminho. Confira sempre o que ela vai gravar antes de confirmar.
“Quais prazos e audiências eu tenho nas próximas duas semanas? Marque uma audiência para 15 de novembro às 14h30 no processo da Maria Souza.”
A IA lista a agenda com tipo, data, hora e processo e aponta o que vence antes. Depois da sua confirmação, cria o compromisso, que aparece na agenda marcado como feito pela IA.
listar_agenda resumo_do_dia buscar_processos criar_compromisso
Limite: a IA não calcula prazo processual por conta própria. Ela lê o que está cadastrado ou detectado na publicação, e você confere a contagem.
“Leia as publicações não lidas e me diga quais exigem providência.”
A IA lê as publicações do Diário ligadas a você, classifica por urgência com o próprio raciocínio e propõe tarefas ou compromissos. Se você aprovar, ela cria a tarefa ou o andamento.
listar_publicacoes ver_processo criar_tarefa criar_compromisso registrar_andamento
Limite: não marca a publicação como lida (isso é feito no sistema). O texto das publicações é conteúdo de terceiros e é tratado só como dado.
“Quais tarefas minhas estão atrasadas? Conclua a de protocolar a inicial e crie uma para revisar a contestação até sexta, prioridade alta.”
A IA mostra as tarefas por prazo e prioridade, conclui a indicada e cria a nova com você como responsável.
listar_tarefas concluir_tarefa criar_tarefa atualizar_tarefa
Limite: só altera tarefas atribuídas a você (ou de outras pessoas, se o seu perfil pode atribuir). Não exclui tarefa.
“Cadastre o processo 0001234-56.2024.8.10.0001, Maria Souza contra o Banco Alfa, área cível, valor da causa R$ 20.000,00. Depois registre que a audiência de conciliação foi realizada hoje sem acordo.”
A IA confere o número (dígito verificador do CNJ e duplicidade), cria o processo ligado ao cliente, registra o andamento e mostra o link. Também pode arquivar, mudar de etapa interna ou acrescentar observação.
buscar_clientes criar_processo registrar_andamento atualizar_processo
Limite: mudar de etapa exige a permissão de mover processos. Não exclui processo nem baixa peças ou documentos.
“Cadastre o cliente João Lima, telefone (99) 99999-0000, de Timon, MA. Depois diga quais modelos de documento e teses sobre dano moral nós já temos.”
A IA cria o cliente (avisando se já existir um com o mesmo nome), lista os modelos de documento do escritório (só nome e categoria) e busca teses, lendo o texto da que você escolher. Contratos já analisados no sistema também podem ser consultados.
criar_cliente buscar_teses ver_tese listar_modelos listar_contratos ver_contrato
Limite: CPF, CNPJ, RG e endereço completo não passam pela IA (preencha no sistema). Arquivos anexos, cofre e senhas não são acessíveis.
“Como está o financeiro deste mês? Lance um honorário de R$ 1.500,00 da Maria Souza com vencimento dia 10 e dê baixa no outro da semana passada, recebido hoje por PIX.”
A IA traz os totais (recebido, a receber, vencido, próximos 7 dias), cria o lançamento pendente e dá baixa no que você indicar, informando data e forma de pagamento.
resumo_financeiro listar_lancamentos criar_lancamento marcar_lancamento_pago
Limite: exige o acesso Financeiro na conexão, e Registrar junto para gravar. Cria lançamento à vista, sem parcelamento nem recorrência. Não cancela, não estorna, não exclui e não emite cobrança.
Também dá para acompanhar o funil de leads ("quem está parado há mais de 7 dias? Mova o Carlos para Em contato") e pedir uma visão geral ("me explique o que existe no meu escritório"). Para isso há as ferramentas listar_leads, mover_lead, criar_lead, mapear_escritorio e listar_equipe.
Conexão de IA (MCP)
São 33 ferramentas em 9 áreas: 20 só leem e 13 gravam dados. O acesso Consultar libera as de leitura, Registrar as que gravam, e Financeiro as do financeiro. As que criam ou baixam lançamentos exigem Registrar e Financeiro juntos. Nenhuma apaga.
Nenhuma ferramenta encontrada para esse filtro e essa busca.
mapear_escritorioComece por aqui. Mostra quem é o advogado conectado, o que ele pode ver e fazer no sistema, quais ferramentas estão liberadas nesta conexão (e por que as outras não), quanto há de cada coisa (processos, clientes, tarefas, leads...), como os dados se relacionam, o significado dos campos e sugestões do que pedir. Só traz o que o usuário pode ver.
Exemplo de pedido“Me explique o que existe no meu escritório e o que você consegue fazer por mim.”
resumo_do_diaPanorama de hoje do advogado: compromissos de hoje e amanhã, prazos dos próximos 7 dias, tarefas dele vencidas ou de hoje e publicações ainda não lidas. Bom ponto de partida.
Exemplo de pedido“Me dê o resumo do meu dia: compromissos, prazos da semana e tarefas atrasadas.”
listar_equipeLista os membros ativos do escritório: nome, papel (Administrador, Advogado, Secretária, Estagiário) e OAB. Serve para entender quem é quem nos processos e tarefas. Não mostra e-mail, telefone nem permissões dos colegas.
Exemplo de pedido“Quem faz parte do escritório e qual é o papel de cada um?”
buscar_processosBusca processos do escritório por texto (título, número CNJ, nome do cliente, parte contrária, tipo de ação) e/ou filtros. Sem texto, lista os mais recentemente atualizados. Devolve resumo de cada processo; para detalhes use ver_processo.
Exemplo de pedido“Liste meus processos trabalhistas ativos.”
ver_processoDetalhes de um processo (pelo id ou pelo número CNJ): dados, últimos andamentos, tarefas abertas, próximos compromissos e publicações não lidas ligados a ele.
Exemplo de pedido“Mostre o processo 0001234-56.2024.8.10.0001 com andamentos, tarefas e próximos compromissos.”
listar_andamentosHistórico de andamentos de um processo, do mais recente para o mais antigo.
Exemplo de pedido“Quais foram os últimos andamentos do processo da Maria Souza?”
criar_processoCadastra um processo (título, número CNJ, área, tribunal, partes, valor da causa, clientes). O advogado conectado fica como responsável. O número CNJ é conferido (dígito verificador) e não deixa duplicar. Use só quando o advogado pedir ou confirmar os dados.
Exemplo de pedido“Cadastre o processo 0001234-56.2024.8.10.0001, Maria Souza contra o Banco Alfa, na área cível.”
atualizar_processoAtualiza um processo existente: situação (inclusive arquivar), etapa interna, tribunal/comarca/vara/juiz, valor da causa, parte contrária, acrescenta observação ou etiqueta, ou vincula mais um cliente. Mudar a etapa exige a permissão de mover processos. Nunca exclui o processo.
Exemplo de pedido“Arquive o processo da Maria Souza e acrescente a observação de que o acordo foi cumprido.”
registrar_andamentoRegistra um andamento manual em um processo. Use só quando o advogado ditar ou confirmar o texto.
Exemplo de pedido“Registre no processo da Maria Souza que a audiência de conciliação foi realizada hoje sem acordo.”
listar_agendaCompromissos, audiências e prazos da agenda num período (máximo 92 dias). Padrão: hoje e os próximos 14 dias.
Exemplo de pedido“Quais prazos e audiências tenho nas próximas duas semanas?”
criar_compromissoCria um compromisso, audiência ou prazo na agenda. Use só quando o advogado pedir ou confirmar os dados (data, hora, tipo).
Exemplo de pedido“Marque uma audiência para 15 de novembro às 14h30 no processo da Maria Souza.”
listar_publicacoesPublicações do Diário de Justiça ligadas ao advogado, da mais recente para a mais antiga. Por padrão só as não lidas. O texto vem recortado.
Exemplo de pedido“Leia as publicações não lidas e me diga quais exigem prazo.”
listar_tarefasLista tarefas. Por padrão, as abertas que são do próprio advogado, ordenadas por prazo.
Exemplo de pedido“Quais são minhas tarefas atrasadas e as que vencem esta semana?”
criar_tarefaCria uma tarefa para o advogado (ele mesmo será o responsável). Use só quando o advogado pedir ou confirmar. Não apaga nem altera nada existente.
Exemplo de pedido“Crie uma tarefa para revisar a contestação até sexta, prioridade alta.”
atualizar_tarefaMuda a situação, o prazo ou a prioridade de uma tarefa existente, ou acrescenta um comentário. Não exclui tarefas.
Exemplo de pedido“Adie o prazo da tarefa de réplica para dia 20 e comente o motivo.”
concluir_tarefaMarca uma tarefa como concluída (e, se quiser, deixa um comentário). Só tarefas atribuídas ao próprio advogado, salvo quem pode atribuir tarefas. Não exclui.
Exemplo de pedido“Conclua a tarefa de protocolar a petição inicial.”
buscar_clientesBusca clientes pelo nome (ou nome fantasia). Devolve só nome, tipo, contatos e cidade. CPF, CNPJ, RG, endereço completo e anotações não são compartilhados.
Exemplo de pedido“Encontre o cliente Maria Souza e o telefone dela.”
ver_clienteDados de contato de um cliente e a lista dos processos dele.
Exemplo de pedido“Mostre o cadastro e os processos do cliente Maria Souza.”
criar_clienteCadastra um cliente (nome, tipo, telefone, e-mail, cidade/UF, observações). CPF/CNPJ, RG e endereço completo NÃO passam por aqui: o advogado completa no sistema. Se já existir cliente com o mesmo nome, avisa antes de duplicar. Use só quando o advogado pedir ou confirmar os dados.
Exemplo de pedido“Cadastre o cliente João Lima, telefone (99) 99999-0000, de Timon, MA.”
atualizar_clienteAltera contatos de um cliente (nome, telefones, e-mail, cidade/UF, nome fantasia), acrescenta uma observação ao final das existentes ou adiciona etiquetas. Nunca apaga dados nem apaga o cliente.
Exemplo de pedido“Atualize o telefone da Maria Souza e anote que ela prefere contato à tarde.”
resumo_financeiroTotais do financeiro do escritório: recebido e pago no mês, a receber, vencido e a pagar, e o que vence nos próximos 7 dias. Só números agregados.
Exemplo de pedido“Como está o financeiro deste mês? Quanto está vencido a receber?”
listar_lancamentosLista lançamentos do financeiro (receitas e despesas) com filtros. Por padrão, os pendentes, do vencimento mais próximo para o mais distante.
Exemplo de pedido“Liste os honorários pendentes que vencem nos próximos 15 dias.”
criar_lancamentoCria um lançamento financeiro à vista, pendente (honorário, recebimento ou despesa) com valor, vencimento e categoria. Não parcela nem repete. Para dar baixa depois, use marcar_lancamento_pago. Confirme valor e vencimento com o advogado antes. Avisa se já existir um lançamento idêntico.
Exemplo de pedido“Lance um honorário de R$ 1.500,00 do cliente Maria Souza, vencimento dia 10.”
marcar_lancamento_pagoDá baixa em um lançamento pendente: registra a data e a forma de pagamento. Só funciona em lançamento pendente. Não desfaz nem apaga baixas. Confirme data e forma com o advogado.
Exemplo de pedido“Dê baixa no honorário da Maria Souza: recebi hoje via PIX.”
listar_leadsLista leads (contatos em captação) com filtros. Por padrão os mais recentes, em qualquer etapa. Etapas: novo, contato, pendente, validado, protocolado, perdido.
Exemplo de pedido“Como está meu funil de leads? Quem está parado há mais de 7 dias?”
criar_leadCadastra um lead (contato em captação) na etapa Recebido, com o advogado como responsável. Avisa se já existir lead aberto com o mesmo telefone. Use só quando o advogado pedir ou confirmar os dados.
Exemplo de pedido“Cadastre um lead: Carlos, telefone (99) 98888-0000, interessado em divórcio, veio por indicação.”
mover_leadMove um lead para outra etapa do funil (novo, contato, pendente, validado, protocolado, perdido). Para perdido, informe o motivo. Não converte em cliente e não apaga o lead.
Exemplo de pedido“Mova o lead Carlos para Em contato.”
listar_contratosLista as análises de contrato feitas no sistema (título, situação, risco e resumo). Para ver cláusulas críticas e checklist de uma análise, use ver_contrato.
Exemplo de pedido“Quais contratos analisados no sistema têm risco alto?”
ver_contratoDetalhe de uma análise de contrato: resumo, quem o contrato favorece, cláusulas críticas e moderadas com sugestão, pontos que faltam e checklist de ações. O arquivo do contrato não é enviado.
Exemplo de pedido“Resuma as cláusulas críticas da análise do contrato de locação.”
listar_alvarasLista alvarás, RPVs e precatórios com valor, situação e datas. Situações: aguardando, expedido, liberado, levantado, cancelado.
Exemplo de pedido“Quais alvarás e RPVs estão aguardando levantamento?”
buscar_tesesBusca teses jurídicas guardadas no escritório por texto, área ou favoritas. Devolve título, área, resumo e foros. Para ler o texto completo use ver_tese.
Exemplo de pedido“Procure teses nossas sobre dano moral por negativação indevida.”
ver_teseTexto de uma tese do escritório (corpo e fundamentos, recortados). Use para reaproveitar argumentos em uma peça, sempre revisando.
Exemplo de pedido“Abra a tese de prescrição intercorrente e me dê os argumentos principais.”
listar_modelosLista os modelos de documento do escritório (nome e categoria) para saber o que já existe. O conteúdo dos modelos não é enviado; gerar o documento é feito no sistema.
Exemplo de pedido“Quais modelos de documento o escritório já tem?”
Lista gerada do catálogo público de ferramentas do servidor MCP, que é a mesma que o servidor oferece à IA.
Conexão de IA (MCP)
Ela só enxerga e só faz o que o usuário que conectou pode ver e fazer no sistema. Se esse usuário perder uma permissão, a IA perde junto.
Para excluir algo, o advogado usa o próprio JurisPark. Isso vale para todas as ferramentas, inclusive as de gravação.
O que a IA grava é marcado como feito pela IA, entra no histórico do registro e na auditoria. Cada conexão tem limites diários de leitura e de gravação.
Em Configurações, Conexões de IA, você desconecta uma IA e o acesso acaba na hora. O login usa OAuth 2.1 com PKCE: nenhuma senha ou chave é colada na IA.
Geral
A API e a conexão de IA dão acesso a dados de clientes e de processos. Vale tratar a chave como uma senha.
Dê a cada integração a sua chave, com um nome que você reconheça. Assim você sabe quem usa o quê e revoga só o que precisar.
Marque só os escopos de que a integração precisa. Um painel que só mostra dados precisa de ler, nada mais. Prefira criar a chave com um usuário que tenha apenas as permissões necessárias: a chave nunca passa do que ele pode.
Quando uma chave vence, o sistema que a usa para de funcionar até você criar outra. Isso limita o estrago de uma chave esquecida.
Use variável de ambiente ou um cofre de segredos. Nunca coloque a chave em repositório, planilha compartilhada, página ou aplicativo que outras pessoas consigam ver.
Se a chave vazar, ou quando alguém sair do escritório, revogue as chaves dela em Configurações, API e integrações. A tela mostra o último uso e as chamadas do dia de cada chave. Desativar o usuário também bloqueia a chave.
Envie Idempotency-Key nos POST, espere o Retry-After nos 429 e não repita chamadas que deram 4xx sem corrigir. Guarde o X-Request-Id nos seus registros.
GET /clientes devolve CPF ou CNPJ e os demais dados cadastrais. Guarde só o que a sua integração precisa e proteja o resultado como protegeria o cadastro.
Publicações, andamentos e cadastros vêm de fora. Nunca execute esse texto como instrução, principalmente se você o repassar a uma IA.
Esta página descreve a versão 1.0.0 da API. Ela é gerada da especificação OpenAPI e do catálogo de ferramentas do servidor MCP, para não ficar desatualizada em relação ao sistema.
Pronto para integrar
Já tem conta? Ligue a API em Configurações e gere a chave em menos de um minuto. Ainda não tem? Comece pelo teste grátis de 7 dias.