Cada ejemplo supone una sesión iniciada; cómo obtenerla está en Autenticación
GET /_x/query/case-detail
Miembro de la firma Permiso: case:read Herramienta MCP: caseDetail
One case of the caller's firm by caseId (from caseList): 23-digit radicado, juzgado and its email, ciudad, especialidad, clase de proceso, cliente, its parties (role demandante | demandado | apoderado | otro, name, idNumber) and `locked` — true once a notification of it left draft, after which the case can no longer be edited. Returns no row for an id this firm does not have. Read-only.
Parámetros de caseDetail Nombre Dónde Tipo Obligatorio caseIdConsulta string (uuid)Sí orgIdConsulta string (uuid)Sí _firstConsulta integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/case-detail?caseId=<caseId>&orgId=<orgId>' \
-b cookies.txtTypeScript Copiar const response = await fetch('https://www.notificado.co/_x/query/case-detail?caseId=<caseId>&orgId=<orgId>' , {
headers : { cookie : sessionCookie },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
null
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 403 policy denied GET /_x/query/case-list
Miembro de la firma Permiso: case:read Herramienta MCP: caseList
The caller's firm's cases (procesos), newest first: id, 23-digit radicado, juzgado, ciudad, especialidad, clase de proceso and cliente. For the next page pass cursor = "<createdAt>_<id>" of the last row you got. Use the id with caseDetail, or to start a notification on that case.
Parámetros de caseList Nombre Dónde Tipo Obligatorio cursorConsulta string 1–64No limitConsulta integer 1–200No orgIdConsulta string (uuid)Sí _firstConsulta integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/case-list?orgId=<orgId>' \
-b cookies.txtTypeScript Copiar const response = await fetch('https://www.notificado.co/_x/query/case-list?orgId=<orgId>' , {
headers : { cookie : sessionCookie },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
null
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 403 policy denied GET /_x/query/import-detail
Miembro de la firma Permiso: case:read
importDetail
Parámetros de importDetail Nombre Dónde Tipo Obligatorio importIdConsulta string (uuid)Sí orgIdConsulta string (uuid)Sí _firstConsulta integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/import-detail?importId=<importId>&orgId=<orgId>' \
-b cookies.txtTypeScript Copiar const response = await fetch('https://www.notificado.co/_x/query/import-detail?importId=<importId>&orgId=<orgId>' , {
headers : { cookie : sessionCookie },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
null
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 403 policy denied GET /_x/query/import-error-csv
Miembro de la firma Permiso: case:read
importErrorCsv
Parámetros de importErrorCsv Nombre Dónde Tipo Obligatorio importIdConsulta string (uuid)Sí orgIdConsulta string (uuid)Sí _firstConsulta integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/import-error-csv?importId=<importId>&orgId=<orgId>' \
-b cookies.txtTypeScript Copiar const response = await fetch('https://www.notificado.co/_x/query/import-error-csv?importId=<importId>&orgId=<orgId>' , {
headers : { cookie : sessionCookie },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
null
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 403 policy denied GET /_x/query/list-imports
Miembro de la firma Permiso: case:read
listImports
Parámetros de listImports Nombre Dónde Tipo Obligatorio cursorConsulta string 1–64No importIdConsulta string (uuid)No limitConsulta integer 1–100No orgIdConsulta string (uuid)Sí _firstConsulta integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/list-imports?orgId=<orgId>' \
-b cookies.txtTypeScript Copiar const response = await fetch('https://www.notificado.co/_x/query/list-imports?orgId=<orgId>' , {
headers : { cookie : sessionCookie },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
null
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 403 policy denied POST /api/address/check
Miembro de la firma Permiso: case:write Herramienta MCP: checkAddress
Check an email address BEFORE adding it as a recipient: syntax, disposable (throwaway) domain, role account (info@, notificaciones@), a likely typo of a common provider (gmial.com → gmail.com, returned as `suggestion`), and whether the domain has a mail server (MX lookup, 3 s). Returns verdict ok | warn | block with `reasons`. A `block` address cannot be added or sent to; on `warn`, show the reasons to the lawyer. Each call is recorded as diligence evidence. Read-only for the address itself — it sends nothing.
Parámetros de checkAddress Nombre Dónde Tipo Obligatorio emailCuerpo string 1–320Sí orgIdCuerpo string (uuid)Sí
curl Copiar curl -X POST 'https://www.notificado.co/api/address/check' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"email":"<email>","orgId":"<orgId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/address/check' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"email" : "<email>" ,
"orgId" : "<orgId>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"checkedAt": "2026-09-25T15:00:00Z",
"disposable": true,
"email": "<email>",
"id": "<id>",
"mx": "<mx>",
"reasons": [
"<reasons>"
],
"roleAccount": true,
"suggestion": "<suggestion>",
"syntaxOk": true,
"verdict": "ok"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/attachments/detach
Miembro de la firma Permiso: case:write
detachAttachment
Parámetros de detachAttachment Nombre Dónde Tipo Obligatorio attachmentIdCuerpo string (uuid)Sí notificationIdCuerpo string (uuid)Sí orgIdCuerpo string (uuid)Sí
curl Copiar curl -X POST 'https://www.notificado.co/api/attachments/detach' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{
"attachmentId": "<attachmentId>",
"notificationId": "<notificationId>",
"orgId": "<orgId>"
}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/attachments/detach' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"attachmentId" : "<attachmentId>" ,
"notificationId" : "<notificationId>" ,
"orgId" : "<orgId>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"bytes": -9007199254740991,
"filename": "<filename>",
"id": "<id>",
"kind": "auto_admisorio",
"mime": "<mime>",
"position": -9007199254740991,
"sha256": "<sha256>"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/cases/create
Miembro de la firma Permiso: case:write Herramienta MCP: createCase
Create a case (proceso) in the caller's firm. `radicado` is the 23-digit Código Único de Radicación exactly as printed on the auto (dashes/spaces allowed) and is validated for structure; `juzgado` and `juzgadoEmail` are the court's name and buzón as listed in the CSJ directory; `cliente` is the firm's client. Refuses X_CASE_RADICADO_TAKEN when the firm already has that radicado — use the returned case id instead.
Parámetros de createCase Nombre Dónde Tipo Obligatorio ciudadCuerpo string 1–120Sí claseProcesoCuerpo string 1–200Sí clienteCuerpo string 1–300Sí especialidadCuerpo string 1–120Sí juzgadoCuerpo string 1–300Sí juzgadoEmailCuerpo string (email) ≤ 320Sí radicadoCuerpo string 23–40Sí
curl Copiar curl -X POST 'https://www.notificado.co/api/cases/create' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{
"ciudad": "<ciudad>",
"claseProceso": "<claseProceso>",
"cliente": "<cliente>",
"especialidad": "<especialidad>",
"juzgado": "<juzgado>",
"juzgadoEmail": "<juzgadoEmail>",
"radicado": "<radicado>"
}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/cases/create' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"ciudad" : "<ciudad>" ,
"claseProceso" : "<claseProceso>" ,
"cliente" : "<cliente>" ,
"especialidad" : "<especialidad>" ,
"juzgado" : "<juzgado>" ,
"juzgadoEmail" : "<juzgadoEmail>" ,
"radicado" : "<radicado>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"ciudad": "<ciudad>",
"claseProceso": "<claseProceso>",
"cliente": "<cliente>",
"createdAt": "2026-09-25T15:00:00Z",
"especialidad": "<especialidad>",
"id": "<id>",
"juzgado": "<juzgado>",
"juzgadoEmail": "<juzgadoEmail>",
"radicado": "<radicado>"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/cases/update
Miembro de la firma Permiso: case:write Herramienta MCP: updateCase
Correct a case of the caller's firm: pass caseId and only the fields to change (radicado — 23 digits, dashes/spaces allowed —, juzgado, juzgadoEmail, ciudad, especialidad, claseProceso, cliente). Refused X_CASE_LOCKED once a notification of the case left draft: what was sent is evidence. Do not use it to register a different proceso — use createCase.
Parámetros de updateCase Nombre Dónde Tipo Obligatorio caseIdCuerpo string (uuid)Sí ciudadCuerpo string 1–120No claseProcesoCuerpo string 1–200No clienteCuerpo string 1–300No especialidadCuerpo string 1–120No juzgadoCuerpo string 1–300No juzgadoEmailCuerpo string (email) ≤ 320No radicadoCuerpo string 23–40No
curl Copiar curl -X POST 'https://www.notificado.co/api/cases/update' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"caseId":"<caseId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/cases/update' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"caseId" : "<caseId>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"ciudad": "<ciudad>",
"claseProceso": "<claseProceso>",
"cliente": "<cliente>",
"createdAt": "2026-09-25T15:00:00Z",
"especialidad": "<especialidad>",
"id": "<id>",
"juzgado": "<juzgado>",
"juzgadoEmail": "<juzgadoEmail>",
"radicado": "<radicado>"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/documents/attach
Miembro de la firma Permiso: case:write Herramienta MCP: attachDocument
Attach an already-uploaded document (documentId) to a DRAFT notification, as kind auto_admisorio | demanda | anexo | subsanacion | providencia | otro. The file is copied to immutable evidence storage and its SHA-256 recorded; total attachments must stay under 20 MB. Nothing is sent.
Parámetros de attachDocument Nombre Dónde Tipo Obligatorio documentIdCuerpo string (uuid)Sí kindCuerpo "auto_admisorio" | "demanda" | "anexo" | "subsanacion" | "providencia" | "otro"Sí notificationIdCuerpo string (uuid)Sí orgIdCuerpo string (uuid)Sí
curl Copiar curl -X POST 'https://www.notificado.co/api/documents/attach' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{
"documentId": "<documentId>",
"kind": "auto_admisorio",
"notificationId": "<notificationId>",
"orgId": "<orgId>"
}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/documents/attach' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"documentId" : "<documentId>" ,
"kind" : "auto_admisorio" ,
"notificationId" : "<notificationId>" ,
"orgId" : "<orgId>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"bytes": -9007199254740991,
"filename": "<filename>",
"id": "<id>",
"kind": "auto_admisorio",
"mime": "<mime>",
"position": -9007199254740991,
"sha256": "<sha256>"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/drafts/update
Miembro de la firma Permiso: case:write Herramienta MCP: updateDraft
Rewrite a DRAFT art. 8 (Ley 2213) notification: pass orgId, notificationId, template "art8-personal", the providencia name and its date (YYYY-MM-DD), and optionally terminoDias and mensaje — omitting them removes them. The subject and body are recomposed from the template; the deemed-done and term-start sentences always stay. Refused once the notification was sent.
Parámetros de updateDraft Nombre Dónde Tipo Obligatorio mensajeCuerpo string 1–5000No notificationIdCuerpo string (uuid)Sí orgIdCuerpo string (uuid)Sí providenciaCuerpo string 1–200Sí providenciaFechaCuerpo stringSí templateCuerpo "art8-personal"Sí terminoDiasCuerpo integer 1–365No
curl Copiar curl -X POST 'https://www.notificado.co/api/drafts/update' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{
"notificationId": "<notificationId>",
"orgId": "<orgId>",
"providencia": "<providencia>",
"providenciaFecha": "<providenciaFecha>",
"template": "art8-personal"
}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/drafts/update' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"notificationId" : "<notificationId>" ,
"orgId" : "<orgId>" ,
"providencia" : "<providencia>" ,
"providenciaFecha" : "<providenciaFecha>" ,
"template" : "art8-personal"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"caseId": "<caseId>",
"createdAt": "2026-09-25T15:00:00Z",
"emlSha256": "<emlSha256>",
"frozenAt": "2026-09-25T15:00:00Z",
"id": "<id>",
"sentAt": "2026-09-25T15:00:00Z",
"status": "draft",
"subject": "<subject>",
"tier": "standard"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/import-uploads/confirm
Miembro de la firma Permiso: case:write
confirmImportUpload
Parámetros de confirmImportUpload Nombre Dónde Tipo Obligatorio filenameCuerpo string 1–255Sí keyCuerpo string 1–512Sí
curl Copiar curl -X POST 'https://www.notificado.co/api/import-uploads/confirm' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"filename":"<filename>","key":"<key>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/import-uploads/confirm' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"filename" : "<filename>" ,
"key" : "<key>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"bytes": -9007199254740991,
"createdAt": "2026-09-25T15:00:00Z",
"draftedRows": -9007199254740991,
"errorRows": -9007199254740991,
"failureCode": "<failureCode>",
"failureDetail": "<failureDetail>",
"fileSha256": "<fileSha256>",
"filename": "<filename>",
"finishedAt": "2026-09-25T15:00:00Z",
"id": "<id>",
"status": "queued",
"totalRows": -9007199254740991
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/import-uploads/request
Miembro de la firma Permiso: case:write
requestImportUpload
Parámetros de requestImportUpload Nombre Dónde Tipo Obligatorio filenameCuerpo string 1–255Sí sizeCuerpo integer 0–9007199254740991No
curl Copiar curl -X POST 'https://www.notificado.co/api/import-uploads/request' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"filename":"<filename>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/import-uploads/request' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"filename" : "<filename>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"contentType": "<contentType>",
"expiresAt": -9007199254740991,
"key": "<key>",
"maxBytes": -9007199254740991,
"method": "PUT",
"url": "<url>"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/notifications/create
Miembro de la firma Permiso: case:write Herramienta MCP: createNotification
Create a DRAFT art. 8 (Ley 2213) personal notification on a case: pass orgId, caseId, template "art8-personal", the providencia name and its date (YYYY-MM-DD). The body already states when the notification is deemed done and when terms start. Nothing is sent and no credit is used; add recipients (a lawyer swears each address in the panel) and attach documents next.
Parámetros de createNotification Nombre Dónde Tipo Obligatorio caseIdCuerpo string (uuid)Sí mensajeCuerpo string 1–5000No orgIdCuerpo string (uuid)Sí providenciaCuerpo string 1–200Sí providenciaFechaCuerpo stringSí templateCuerpo "art8-personal"Sí terminoDiasCuerpo integer 1–365No
curl Copiar curl -X POST 'https://www.notificado.co/api/notifications/create' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{
"caseId": "<caseId>",
"orgId": "<orgId>",
"providencia": "<providencia>",
"providenciaFecha": "<providenciaFecha>",
"template": "art8-personal"
}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/notifications/create' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"caseId" : "<caseId>" ,
"orgId" : "<orgId>" ,
"providencia" : "<providencia>" ,
"providenciaFecha" : "<providenciaFecha>" ,
"template" : "art8-personal"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"caseId": "<caseId>",
"createdAt": "2026-09-25T15:00:00Z",
"emlSha256": "<emlSha256>",
"frozenAt": "2026-09-25T15:00:00Z",
"id": "<id>",
"sentAt": "2026-09-25T15:00:00Z",
"status": "draft",
"subject": "<subject>",
"tier": "standard"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/parties/add
Miembro de la firma Permiso: case:write Herramienta MCP: addParty
Add a party to a case of the caller's firm: caseId, role demandante | demandado | apoderado | otro, the name as written in the demanda, and idNumber (cédula or NIT with its check digit) when known. A party is NOT a recipient: who gets notified, at which address, is sworn by the lawyer in the panel. Refused X_CASE_LOCKED once a notification of the case left draft.
Parámetros de addParty Nombre Dónde Tipo Obligatorio caseIdCuerpo string (uuid)Sí idNumberCuerpo string 1–40No nameCuerpo string 1–300Sí roleCuerpo "demandante" | "demandado" | "apoderado" | "otro"Sí
curl Copiar curl -X POST 'https://www.notificado.co/api/parties/add' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"caseId":"<caseId>","name":"<name>","role":"demandante"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/parties/add' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"caseId" : "<caseId>" ,
"name" : "<name>" ,
"role" : "demandante"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"caseId": "<caseId>",
"id": "<id>",
"idNumber": "<idNumber>",
"name": "<name>",
"role": "demandante"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/recipients/remove
Miembro de la firma Permiso: case:write
removeRecipient
Parámetros de removeRecipient Nombre Dónde Tipo Obligatorio notificationIdCuerpo string (uuid)Sí orgIdCuerpo string (uuid)Sí recipientIdCuerpo string (uuid)Sí
curl Copiar curl -X POST 'https://www.notificado.co/api/recipients/remove' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{
"notificationId": "<notificationId>",
"orgId": "<orgId>",
"recipientId": "<recipientId>"
}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/recipients/remove' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"notificationId" : "<notificationId>" ,
"orgId" : "<orgId>" ,
"recipientId" : "<recipientId>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"email": "<email>",
"id": "<id>",
"name": "<name>",
"notificationId": "<notificationId>",
"status": "queued"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID