Las operaciones marcadas /v1 se autentican con un token de agente; las demás, con una sesión del panel. Cómo funcionan ambas está en Autenticación
GET /_x/query/address-book
Miembro de la firma Permiso: case:read Herramienta MCP: addressBook
The firm’s address book across all cases, newest first: each saved notification address (id, email, source, sourceText, evidenceDocumentIds or overrideReason, obtainedOn) with its party (partyId, partyName, partyRole) and case (caseId, radicado, cliente, caseArchived). Narrow with q (address, party name, cliente or radicado digits; accents and case ignored) or caseId. For the next page pass cursor = "<createdAt>_<id>" of the last row, with the same filters. These are NOT sworn statements: a lawyer swears each address on every send. Edit with updatePartyAddress, remove with removePartyAddress. Read-only.
Parámetros de addressBook Nombre Dónde Tipo Obligatorio caseIdConsulta string (uuid)No cursorConsulta string 1–64No limitConsulta integer 1–201No orgIdConsulta string (uuid)Sí qConsulta string 1–120No _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/address-book?orgId=<orgId>' \
-b cookies.txtTypeScript Copiar const response = await fetch('https://www.notificado.co/_x/query/address-book?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 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 429 X_RATE_LIMITED — retry after Retry-After seconds GET /v1/case-especialidades
Miembro de la firma Permiso: case:read /v1 · token Bearer Herramienta MCP: caseEspecialidades
The exact especialidad values caseList's filter takes.
Parámetros de caseEspecialidades Nombre Dónde Tipo Obligatorio orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/v1/case-especialidades?orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/case-especialidades?orgId=<orgId>' , {
headers : { authorization : `Bearer ${token}` },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
null
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 429 X_RATE_LIMITED — retry after Retry-After seconds GET /v1/case-list
Miembro de la firma Permiso: case:read /v1 · token Bearer Herramienta MCP: caseList
Cases, newest first; q matches radicado, cliente, juzgado or a party; archived: true lists archived ones.
Parámetros de caseList Nombre Dónde Tipo Obligatorio archivedConsulta booleanNo cursorConsulta string 1–64No especialidadConsulta string 1–120No limitConsulta integer 1–200No orgIdConsulta string (uuid)Sí qConsulta string 1–120No _firstConsulta integer 1–200page size; present, the response is the page envelope rather than the bare rows (1 to 200) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/v1/case-list?orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/case-list?orgId=<orgId>' , {
headers : { authorization : `Bearer ${token}` },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
null
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 429 X_RATE_LIMITED — retry after Retry-After seconds GET /v1/get-case
Miembro de la firma Permiso: case:read /v1 · token Bearer Herramienta MCP: getCase
One case with its parties; locked = a notification left draft (correct it with createCase correctionOf).
Parámetros de getCase Nombre Dónde Tipo Obligatorio caseIdConsulta string (uuid)Sí orgIdConsulta string (uuid)Sí
curl Copiar curl 'https://www.notificado.co/v1/get-case?caseId=<caseId>&orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/get-case?caseId=<caseId>&orgId=<orgId>' , {
headers : { authorization : `Bearer ${token}` },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"archivedAt": "<archivedAt>",
"ciudad": "<ciudad>",
"claseProceso": "<claseProceso>",
"cliente": "<cliente>",
"correctedBy": [
{
"createdAt": "<createdAt>",
"id": "<id>",
"radicado": "<radicado>"
}
],
"correctionOf": "<correctionOf>",
"corrects": {
"createdAt": "<createdAt>",
"id": "<id>",
"radicado": "<radicado>"
},
"createdAt": "<createdAt>",
"createdBy": "<createdBy>",
"especialidad": "<especialidad>",
"id": "<id>",
"juzgado": "<juzgado>",
"juzgadoEmail": "<juzgadoEmail>",
"locked": true,
"orgId": "<orgId>",
"parties": [
{
"caseId": "<caseId>",
"createdAt": "<createdAt>",
"id": "<id>",
"idNumber": "<idNumber>",
"name": "<name>",
"orgId": "<orgId>",
"role": "demandante"
}
],
"radicado": "<radicado>",
"updatedAt": "<updatedAt>"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 404 X_NOT_FOUND — the read matched no row for this input 429 X_RATE_LIMITED — retry after Retry-After seconds GET /v1/get-import
Miembro de la firma Permiso: case:read /v1 · token Bearer Herramienta MCP: getImport
One CSV import: status, counts, and each row as a case + DRAFT or its errors.
Parámetros de getImport Nombre Dónde Tipo Obligatorio importIdConsulta string (uuid)Sí orgIdConsulta string (uuid)Sí
curl Copiar curl 'https://www.notificado.co/v1/get-import?importId=<importId>&orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/get-import?importId=<importId>&orgId=<orgId>' , {
headers : { authorization : `Bearer ${token}` },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"bytes": 1,
"createdAt": "<createdAt>",
"createdBy": "<createdBy>",
"draftedRows": 1,
"errorRows": 1,
"failureCode": "<failureCode>",
"failureDetail": "<failureDetail>",
"fileSha256": "<fileSha256>",
"filename": "<filename>",
"finishedAt": "<finishedAt>",
"id": "<id>",
"orgId": "<orgId>",
"rows": [
{
"caseId": "<caseId>",
"demandado": "<demandado>",
"email": "<email>",
"errors": [
{
"code": null,
"field": null
}
],
"id": "<id>",
"importId": "<importId>",
"lineNo": 1,
"notificationId": "<notificationId>",
"orgId": "<orgId>",
"radicado": "<radicado>",
"status": "pending",
"warnings": [
{
"code": null,
"field": null
}
]
}
],
"status": "queued",
"totalRows": 1
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 404 X_NOT_FOUND — the read matched no row for this input 429 X_RATE_LIMITED — retry after Retry-After seconds GET /v1/import-error-csv
Miembro de la firma Permiso: case:read /v1 · token Bearer Herramienta MCP: importErrorCsv
The failed rows as a CSV to fix and upload again.
Parámetros de importErrorCsv Nombre Dónde Tipo Obligatorio importIdConsulta string (uuid)Sí orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/v1/import-error-csv?importId=<importId>&orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/import-error-csv?importId=<importId>&orgId=<orgId>' , {
headers : { authorization : `Bearer ${token}` },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
null
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 429 X_RATE_LIMITED — retry after Retry-After seconds GET /v1/import-sendables
Miembro de la firma Permiso: case:read /v1 · token Bearer Herramienta MCP: importSendables
An import's drafts as the batch send sees them: address, warnings, blocker.
Parámetros de importSendables Nombre Dónde Tipo Obligatorio importIdConsulta string (uuid)Sí orgIdConsulta string (uuid)Sí _firstConsulta integer 1–5000page size; present, the response is the page envelope rather than the bare rows (1 to 5000) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/v1/import-sendables?importId=<importId>&orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/import-sendables?importId=<importId>&orgId=<orgId>' , {
headers : { authorization : `Bearer ${token}` },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
{
"alreadySworn": true,
"attachments": 1,
"blocker": "case_archived",
"caseId": "<caseId>",
"email": "<email>",
"id": "<id>",
"importId": "<importId>",
"lastSentTo": "<lastSentTo>",
"lineNo": 1,
"name": "<name>",
"notificationId": "<notificationId>",
"orgId": "<orgId>",
"overrideReason": "<overrideReason>",
"proofs": 1,
"radicado": "<radicado>",
"source": "<source>",
"swornBy": "<swornBy>",
"warnings": [
{
"code": "<code>",
"field": "<field>"
}
]
}
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 429 X_RATE_LIMITED — retry after Retry-After seconds GET /v1/import-sends
Miembro de la firma Permiso: case:read /v1 · token Bearer Herramienta MCP: importSends
An import's batch sends: status, counts, failures with their code.
Parámetros de importSends Nombre Dónde Tipo Obligatorio importIdConsulta string (uuid)Sí orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/v1/import-sends?importId=<importId>&orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/import-sends?importId=<importId>&orgId=<orgId>' , {
headers : { authorization : `Bearer ${token}` },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
null
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 429 X_RATE_LIMITED — retry after Retry-After seconds GET /v1/linked-file-list
Miembro de la firma Permiso: case:write /v1 · token Bearer Herramienta MCP: linkedFileList
The firm's unsent linked files, newest first, each with its scan status and reason; page with the last row's cursor.
Parámetros de linkedFileList Nombre Dónde Tipo Obligatorio cursorConsulta string 1–64No limitConsulta integer 1–100No orgIdConsulta string (uuid)Sí _firstConsulta integer 1–100page size; present, the response is the page envelope rather than the bare rows (1 to 100) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/v1/linked-file-list?orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/linked-file-list?orgId=<orgId>' , {
headers : { authorization : `Bearer ${token}` },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
null
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 429 X_RATE_LIMITED — retry after Retry-After seconds GET /v1/linked-file-status
Miembro de la firma Permiso: case:write /v1 · token Bearer Herramienta MCP: linkedFileStatus
One linked file: status (granted, scanning, clean, infected, refused), the reason it was not accepted, its SHA-256 and credits per recipient.
Parámetros de linkedFileStatus Nombre Dónde Tipo Obligatorio idConsulta string (uuid)Sí orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/v1/linked-file-status?id=<id>&orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/linked-file-status?id=<id>&orgId=<orgId>' , {
headers : { authorization : `Bearer ${token}` },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
null
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 429 X_RATE_LIMITED — retry after Retry-After seconds GET /v1/linked-files-access
Miembro de la firma Permiso: case:write /v1 · token Bearer Herramienta MCP: linkedFilesAccess
Whether this firm may upload linked files (too large to attach) now, and the reasons when it may not.
Parámetros de linkedFilesAccess Nombre Dónde Tipo Obligatorio orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/v1/linked-files-access?orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/linked-files-access?orgId=<orgId>' , {
headers : { authorization : `Bearer ${token}` },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
null
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 429 X_RATE_LIMITED — retry after Retry-After seconds GET /v1/list-imports
Miembro de la firma Permiso: case:read /v1 · token Bearer Herramienta MCP: listImports
CSV imports, newest first, with status and counts; importId for one.
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–100page size; present, the response is the page envelope rather than the bare rows (1 to 100) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/v1/list-imports?orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/list-imports?orgId=<orgId>' , {
headers : { authorization : `Bearer ${token}` },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
{
"bytes": 1,
"createdAt": "<createdAt>",
"createdBy": "<createdBy>",
"draftedRows": 1,
"errorRows": 1,
"failureCode": "<failureCode>",
"failureDetail": "<failureDetail>",
"fileSha256": "<fileSha256>",
"filename": "<filename>",
"finishedAt": "<finishedAt>",
"id": "<id>",
"keysetAt": "<keysetAt>",
"orgId": "<orgId>",
"status": "queued",
"storageKey": "<storageKey>",
"totalRows": 1
}
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 429 X_RATE_LIMITED — retry after Retry-After seconds GET /v1/party-addresses
Miembro de la firma Permiso: case:read /v1 · token Bearer Herramienta MCP: partyAddresses
A case's saved party addresses with provenance. Not sworn.
Parámetros de partyAddresses Nombre Dónde Tipo Obligatorio caseIdConsulta string (uuid)Sí orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/v1/party-addresses?caseId=<caseId>&orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/party-addresses?caseId=<caseId>&orgId=<orgId>' , {
headers : { authorization : `Bearer ${token}` },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
{
"createdAt": "<createdAt>",
"createdBy": "<createdBy>",
"email": "<email>",
"evidenceDocumentIds": [
"<evidenceDocumentIds>"
],
"id": "<id>",
"keysetAt": "<keysetAt>",
"obtainedOn": "<obtainedOn>",
"orgId": "<orgId>",
"overrideReason": "<overrideReason>",
"partyId": "<partyId>",
"removedAt": "<removedAt>",
"source": "comunicaciones_previas",
"sourceText": "<sourceText>"
}
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 429 X_RATE_LIMITED — retry after Retry-After seconds GET /_x/query/wizard-address-book
Miembro de la firma Permiso: case:read
wizardAddressBook
Parámetros de wizardAddressBook Nombre Dónde Tipo Obligatorio caseIdConsulta string (uuid)Sí orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/wizard-address-book?caseId=<caseId>&orgId=<orgId>' \
-b cookies.txtTypeScript Copiar const response = await fetch('https://www.notificado.co/_x/query/wizard-address-book?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 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/add-party
Miembro de la firma Permiso: case:write /v1 · token Bearer Idempotency-Key Herramienta MCP: addParty
Add a party (demandante, demandado...). A party is not a recipient: the lawyer swears addresses.
Parámetros de addParty Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No 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/v1/add-party' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H "idempotency-key: $(uuidgen)" \
-H 'content-type: application/json' \
-d '{"caseId":"<caseId>","name":"<name>","role":"demandante"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/add-party' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' , 'idempotency-key' : crypto.randomUUID() },
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 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/archive-case
Miembro de la firma Permiso: case:write /v1 · token Bearer Herramienta MCP: archiveCase
Archive a case; nothing is deleted. Refused X_CASE_IN_FLIGHT while a draft, a scheduled send or a send is open.
Parámetros de archiveCase Nombre Dónde Tipo Obligatorio caseIdCuerpo string (uuid)Sí
curl Copiar curl -X POST 'https://www.notificado.co/v1/archive-case' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H 'content-type: application/json' \
-d '{"caseId":"<caseId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/archive-case' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' },
body : JSON.stringify({
"caseId" : "<caseId>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"archivedAt": "2026-09-25T15:00:00Z",
"ciudad": "<ciudad>",
"claseProceso": "<claseProceso>",
"cliente": "<cliente>",
"correctionOf": "<correctionOf>",
"createdAt": "2026-09-25T15:00:00Z",
"especialidad": "<especialidad>",
"id": "<id>",
"juzgado": "<juzgado>",
"juzgadoEmail": "<juzgadoEmail>",
"radicado": "<radicado>"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/attach-document
Miembro de la firma Permiso: case:write /v1 · token Bearer Idempotency-Key Herramienta MCP: attachDocument
Attach an uploaded document to a DRAFT: copied to evidence storage and hashed. Total under 6 MB.
Parámetros de attachDocument Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No 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/v1/attach-document' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H "idempotency-key: $(uuidgen)" \
-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/v1/attach-document' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' , 'idempotency-key' : crypto.randomUUID() },
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>",
"pageCount": -9007199254740991,
"position": -9007199254740991,
"sha256": "<sha256>"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/attach-linked-file
Miembro de la firma Permiso: case:write /v1 · token Bearer Idempotency-Key Herramienta MCP: attachLinkedFile
Attach a scanned linked file (status clean) to a DRAFT, delivered by download link. Costs one credit per 10 MB per recipient at send.
Parámetros de attachLinkedFile Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No kindCuerpo "auto_admisorio" | "demanda" | "anexo" | "subsanacion" | "providencia" | "otro"Sí linkedFileIdCuerpo string (uuid)Sí notificationIdCuerpo string (uuid)Sí orgIdCuerpo string (uuid)Sí
curl Copiar curl -X POST 'https://www.notificado.co/v1/attach-linked-file' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H "idempotency-key: $(uuidgen)" \
-H 'content-type: application/json' \
-d '{
"kind": "auto_admisorio",
"linkedFileId": "<linkedFileId>",
"notificationId": "<notificationId>",
"orgId": "<orgId>"
}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/attach-linked-file' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' , 'idempotency-key' : crypto.randomUUID() },
body : JSON.stringify({
"kind" : "auto_admisorio" ,
"linkedFileId" : "<linkedFileId>" ,
"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>",
"pageCount": -9007199254740991,
"position": -9007199254740991,
"sha256": "<sha256>"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/check-address
Miembro de la firma Permiso: case:write /v1 · token Bearer Herramienta MCP: checkAddress
Check an address before it is sworn: ok, warn or block, with reasons. Recorded; 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/v1/check-address' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H 'content-type: application/json' \
-d '{"email":"<email>","orgId":"<orgId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/check-address' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' },
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 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/confirm-import-upload
Miembro de la firma Permiso: case:write /v1 · token Bearer Idempotency-Key Herramienta MCP: confirmImportUpload
Step 2: queue the import. It makes cases and DRAFTS only, never a recipient or a send.
Parámetros de confirmImportUpload Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No filenameCuerpo string 1–255Sí keyCuerpo string 1–512Sí
curl Copiar curl -X POST 'https://www.notificado.co/v1/confirm-import-upload' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H "idempotency-key: $(uuidgen)" \
-H 'content-type: application/json' \
-d '{"filename":"<filename>","key":"<key>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/confirm-import-upload' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' , 'idempotency-key' : crypto.randomUUID() },
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 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/confirm-linked-upload
Miembro de la firma Permiso: case:write /v1 · token Bearer Idempotency-Key Herramienta MCP: confirmLinkedUpload
Step 2 of a linked file: after the PUT succeeded, starts the malware scan. Read linkedFileStatus until status is clean (or refused, with a reason).
Parámetros de confirmLinkedUpload Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No idCuerpo string (uuid)Sí orgIdCuerpo string (uuid)Sí
curl Copiar curl -X POST 'https://www.notificado.co/v1/confirm-linked-upload' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H "idempotency-key: $(uuidgen)" \
-H 'content-type: application/json' \
-d '{"id":"<id>","orgId":"<orgId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/confirm-linked-upload' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' , 'idempotency-key' : crypto.randomUUID() },
body : JSON.stringify({
"id" : "<id>" ,
"orgId" : "<orgId>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"attachedNotificationId": "<attachedNotificationId>",
"bytes": -9007199254740991,
"createdAt": "2026-09-25T15:00:00Z",
"creditsPerRecipient": -9007199254740991,
"filename": "<filename>",
"id": "<id>",
"mime": "<mime>",
"orgId": "<orgId>",
"purgeAt": "2026-09-25T15:00:00Z",
"reason": "infected",
"reasonDetail": "<reasonDetail>",
"sha256": "<sha256>",
"status": "granted"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/create-case
Miembro de la firma Permiso: case:write /v1 · token Bearer Idempotency-Key Herramienta MCP: createCase
Register a case: 23-digit radicado, juzgado and its email. X_CASE_RADICADO_TAKEN: use that open case.
Parámetros de createCase Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No ciudadCuerpo string 1–120Sí claseProcesoCuerpo string 1–200Sí clienteCuerpo string 1–300Sí correctionOfCuerpo string (uuid)No 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/v1/create-case' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H "idempotency-key: $(uuidgen)" \
-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/v1/create-case' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' , 'idempotency-key' : crypto.randomUUID() },
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 {
"archivedAt": "2026-09-25T15:00:00Z",
"ciudad": "<ciudad>",
"claseProceso": "<claseProceso>",
"cliente": "<cliente>",
"correctionOf": "<correctionOf>",
"createdAt": "2026-09-25T15:00:00Z",
"especialidad": "<especialidad>",
"id": "<id>",
"juzgado": "<juzgado>",
"juzgadoEmail": "<juzgadoEmail>",
"radicado": "<radicado>"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/create-correo
Miembro de la firma Permiso: case:write /v1 · token Bearer Idempotency-Key Herramienta MCP: createCorreo
Create a DRAFT correo con constancia de entrega: your own subject and body, with no proceso, no art. 8 statements and no término. Nothing is sent and no credit is used; a lawyer adds the sworn recipients and sends it from the panel.
Parámetros de createCorreo Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No bodyCuerpo string 1–20000Sí messageTemplateIdCuerpo string (uuid) | nullNo orgIdCuerpo string (uuid)Sí subjectCuerpo string 1–200Sí
curl Copiar curl -X POST 'https://www.notificado.co/v1/create-correo' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H "idempotency-key: $(uuidgen)" \
-H 'content-type: application/json' \
-d '{"body":"<body>","orgId":"<orgId>","subject":"<subject>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/create-correo' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' , 'idempotency-key' : crypto.randomUUID() },
body : JSON.stringify({
"body" : "<body>" ,
"orgId" : "<orgId>" ,
"subject" : "<subject>"
}),
});
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>",
"scheduledFor": "2026-09-25T15:00:00Z",
"sentAt": "2026-09-25T15:00:00Z",
"status": "draft",
"subject": "<subject>",
"tier": "standard"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/create-notification
Miembro de la firma Permiso: case:write /v1 · token Bearer Idempotency-Key Herramienta MCP: createNotification
Create a DRAFT art. 8 notification on a case (providencia and its date). Nothing is sent, no credit used.
Parámetros de createNotification Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No caseIdCuerpo string (uuid)Sí mensajeCuerpo string 1–5000No messageTemplateIdCuerpo string (uuid) | nullNo 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/v1/create-notification' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H "idempotency-key: $(uuidgen)" \
-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/v1/create-notification' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' , 'idempotency-key' : crypto.randomUUID() },
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>",
"scheduledFor": "2026-09-25T15:00:00Z",
"sentAt": "2026-09-25T15:00:00Z",
"status": "draft",
"subject": "<subject>",
"tier": "standard"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /api/detach-attachment
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/detach-attachment' \
-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/detach-attachment' , {
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>",
"pageCount": -9007199254740991,
"position": -9007199254740991,
"sha256": "<sha256>"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/discard-draft
Miembro de la firma Permiso: case:write /v1 · token Bearer Herramienta MCP: discardDraft
Discard a DRAFT with no evidence and no pending send request. Drafts cost nothing, so nothing is refunded.
Parámetros de discardDraft Nombre Dónde Tipo Obligatorio notificationIdCuerpo string (uuid)Sí orgIdCuerpo string (uuid)Sí
curl Copiar curl -X POST 'https://www.notificado.co/v1/discard-draft' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H 'content-type: application/json' \
-d '{"notificationId":"<notificationId>","orgId":"<orgId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/discard-draft' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' },
body : JSON.stringify({
"notificationId" : "<notificationId>" ,
"orgId" : "<orgId>"
}),
});
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>",
"scheduledFor": "2026-09-25T15:00:00Z",
"sentAt": "2026-09-25T15:00:00Z",
"status": "draft",
"subject": "<subject>",
"tier": "standard"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/discard-linked-file
Miembro de la firma Permiso: case:write /v1 · token Bearer Idempotency-Key Herramienta MCP: discardLinkedFile
Remove an unsent linked file: its bytes are deleted. Refused while it is being scanned and once it was sent.
Parámetros de discardLinkedFile Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No idCuerpo string (uuid)Sí orgIdCuerpo string (uuid)Sí
curl Copiar curl -X POST 'https://www.notificado.co/v1/discard-linked-file' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H "idempotency-key: $(uuidgen)" \
-H 'content-type: application/json' \
-d '{"id":"<id>","orgId":"<orgId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/discard-linked-file' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' , 'idempotency-key' : crypto.randomUUID() },
body : JSON.stringify({
"id" : "<id>" ,
"orgId" : "<orgId>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"id": "<id>",
"status": "granted"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/remove-party
Miembro de la firma Permiso: case:write /v1 · token Bearer Herramienta MCP: removeParty
Remove a party. Refused X_CASE_LOCKED once a notification left draft.
Parámetros de removeParty Nombre Dónde Tipo Obligatorio caseIdCuerpo string (uuid)No partyIdCuerpo string (uuid)Sí
curl Copiar curl -X POST 'https://www.notificado.co/v1/remove-party' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H 'content-type: application/json' \
-d '{"partyId":"<partyId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/remove-party' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' },
body : JSON.stringify({
"partyId" : "<partyId>"
}),
});
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 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/remove-party-address
Miembro de la firma Permiso: case:write /v1 · token Bearer Herramienta MCP: removePartyAddress
Remove a saved address; past sends are untouched.
Parámetros de removePartyAddress Nombre Dónde Tipo Obligatorio addressIdCuerpo string (uuid)Sí orgIdCuerpo string (uuid)Sí returnToCuerpo string 1–2048No
curl Copiar curl -X POST 'https://www.notificado.co/v1/remove-party-address' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H 'content-type: application/json' \
-d '{"addressId":"<addressId>","orgId":"<orgId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/remove-party-address' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' },
body : JSON.stringify({
"addressId" : "<addressId>" ,
"orgId" : "<orgId>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"createdAt": "2026-09-25T15:00:00Z",
"email": "<email>",
"evidenceDocumentIds": [
"<evidenceDocumentIds>"
],
"id": "<id>",
"obtainedOn": "<obtainedOn>",
"overrideReason": "<overrideReason>",
"partyId": "<partyId>",
"source": "comunicaciones_previas",
"sourceText": "<sourceText>"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /api/remove-recipient
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/remove-recipient' \
-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/remove-recipient' , {
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 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/request-import-upload
Miembro de la firma Permiso: case:write /v1 · token Bearer Idempotency-Key Herramienta MCP: requestImportUpload
Step 1: a signed PUT grant for one CSV (2 MB); then confirmImportUpload(key).
Parámetros de requestImportUpload Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No filenameCuerpo string 1–255Sí sizeCuerpo integer 1–9007199254740991Sí
curl Copiar curl -X POST 'https://www.notificado.co/v1/request-import-upload' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H "idempotency-key: $(uuidgen)" \
-H 'content-type: application/json' \
-d '{"filename":"<filename>","size":1}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/request-import-upload' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' , 'idempotency-key' : crypto.randomUUID() },
body : JSON.stringify({
"filename" : "<filename>" ,
"size" : 1
}),
});
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 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/request-linked-upload
Miembro de la firma Permiso: case:write /v1 · token Bearer Idempotency-Key Herramienta MCP: requestLinkedUpload
Step 1 of a linked file (too large to attach): a signed PUT grant. PUT the bytes with the returned contentType, then confirmLinkedUpload(id).
Parámetros de requestLinkedUpload Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No bytesCuerpo integer 1–9007199254740991Sí contentTypeCuerpo string 1–127No filenameCuerpo string 1–255Sí orgIdCuerpo string (uuid)Sí
curl Copiar curl -X POST 'https://www.notificado.co/v1/request-linked-upload' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H "idempotency-key: $(uuidgen)" \
-H 'content-type: application/json' \
-d '{"bytes":1,"filename":"<filename>","orgId":"<orgId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/request-linked-upload' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' , 'idempotency-key' : crypto.randomUUID() },
body : JSON.stringify({
"bytes" : 1 ,
"filename" : "<filename>" ,
"orgId" : "<orgId>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"contentType": "<contentType>",
"creditsPerRecipient": -9007199254740991,
"expiresAt": -9007199254740991,
"id": "<id>",
"maxBytes": -9007199254740991,
"maxFileBytes": -9007199254740991,
"method": "PUT",
"purgeAt": "2026-09-25T15:00:00Z",
"url": "<url>"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/save-party-address
Miembro de la firma Permiso: case:write /v1 · token Bearer Idempotency-Key Herramienta MCP: savePartyAddress
Save a party address with its source and proof or overrideReason. Not sworn.
Parámetros de savePartyAddress Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No emailCuerpo string (email)Sí evidenceDocumentIdsCuerpo array of string (uuid)Sí obtainedOnCuerpo string | nullNo orgIdCuerpo string (uuid)Sí overrideReasonCuerpo string 1–2000 | nullNo partyIdCuerpo string (uuid)Sí sourceCuerpo "comunicaciones_previas" | "camara_de_comercio" | "rut" | "contrato" | "web_oficial" | "otro"Sí sourceTextCuerpo string 1–2000Sí
curl Copiar curl -X POST 'https://www.notificado.co/v1/save-party-address' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H "idempotency-key: $(uuidgen)" \
-H 'content-type: application/json' \
-d '{
"email": "<email>",
"evidenceDocumentIds": [],
"orgId": "<orgId>",
"partyId": "<partyId>",
"source": "comunicaciones_previas",
"sourceText": "<sourceText>"
}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/save-party-address' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' , 'idempotency-key' : crypto.randomUUID() },
body : JSON.stringify({
"email" : "<email>" ,
"evidenceDocumentIds" : [],
"orgId" : "<orgId>" ,
"partyId" : "<partyId>" ,
"source" : "comunicaciones_previas" ,
"sourceText" : "<sourceText>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"createdAt": "2026-09-25T15:00:00Z",
"email": "<email>",
"evidenceDocumentIds": [
"<evidenceDocumentIds>"
],
"id": "<id>",
"obtainedOn": "<obtainedOn>",
"overrideReason": "<overrideReason>",
"partyId": "<partyId>",
"source": "comunicaciones_previas",
"sourceText": "<sourceText>"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/unarchive-case
Miembro de la firma Permiso: case:write /v1 · token Bearer Herramienta MCP: unarchiveCase
Reopen an archived case so it takes notifications again.
Parámetros de unarchiveCase Nombre Dónde Tipo Obligatorio caseIdCuerpo string (uuid)Sí
curl Copiar curl -X POST 'https://www.notificado.co/v1/unarchive-case' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H 'content-type: application/json' \
-d '{"caseId":"<caseId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/unarchive-case' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' },
body : JSON.stringify({
"caseId" : "<caseId>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"archivedAt": "2026-09-25T15:00:00Z",
"ciudad": "<ciudad>",
"claseProceso": "<claseProceso>",
"cliente": "<cliente>",
"correctionOf": "<correctionOf>",
"createdAt": "2026-09-25T15:00:00Z",
"especialidad": "<especialidad>",
"id": "<id>",
"juzgado": "<juzgado>",
"juzgadoEmail": "<juzgadoEmail>",
"radicado": "<radicado>"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/update-case
Miembro de la firma Permiso: case:write /v1 · token Bearer Herramienta MCP: updateCase
Edit a case's fields. Refused X_CASE_LOCKED once a notification of it left draft.
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/v1/update-case' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H 'content-type: application/json' \
-d '{"caseId":"<caseId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/update-case' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' },
body : JSON.stringify({
"caseId" : "<caseId>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"archivedAt": "2026-09-25T15:00:00Z",
"ciudad": "<ciudad>",
"claseProceso": "<claseProceso>",
"cliente": "<cliente>",
"correctionOf": "<correctionOf>",
"createdAt": "2026-09-25T15:00:00Z",
"especialidad": "<especialidad>",
"id": "<id>",
"juzgado": "<juzgado>",
"juzgadoEmail": "<juzgadoEmail>",
"radicado": "<radicado>"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/update-correo
Miembro de la firma Permiso: case:write /v1 · token Bearer Herramienta MCP: updateCorreo
Rewrite the subject and body of a DRAFT correo con constancia de entrega (one made by createCorreo). Refused for a notification of a proceso and once sent.
Parámetros de updateCorreo Nombre Dónde Tipo Obligatorio bodyCuerpo string 1–20000Sí notificationIdCuerpo string (uuid)Sí orgIdCuerpo string (uuid)Sí subjectCuerpo string 1–200Sí
curl Copiar curl -X POST 'https://www.notificado.co/v1/update-correo' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H 'content-type: application/json' \
-d '{
"body": "<body>",
"notificationId": "<notificationId>",
"orgId": "<orgId>",
"subject": "<subject>"
}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/update-correo' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' },
body : JSON.stringify({
"body" : "<body>" ,
"notificationId" : "<notificationId>" ,
"orgId" : "<orgId>" ,
"subject" : "<subject>"
}),
});
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>",
"scheduledFor": "2026-09-25T15:00:00Z",
"sentAt": "2026-09-25T15:00:00Z",
"status": "draft",
"subject": "<subject>",
"tier": "standard"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/update-draft
Miembro de la firma Permiso: case:write /v1 · token Bearer Herramienta MCP: updateDraft
Rewrite a DRAFT: omitted optional fields are removed, the art. 8 sentences stay. Refused once sent.
Parámetros de updateDraft Nombre Dónde Tipo Obligatorio mensajeCuerpo string 1–5000No messageTemplateIdCuerpo string (uuid) | nullNo 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/v1/update-draft' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-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/v1/update-draft' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' },
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>",
"scheduledFor": "2026-09-25T15:00:00Z",
"sentAt": "2026-09-25T15:00:00Z",
"status": "draft",
"subject": "<subject>",
"tier": "standard"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /v1/update-party
Miembro de la firma Permiso: case:write /v1 · token Bearer Herramienta MCP: updateParty
Replace a party's role, name and idNumber. Refused X_CASE_LOCKED once a notification left draft.
Parámetros de updateParty Nombre Dónde Tipo Obligatorio caseIdCuerpo string (uuid)No idNumberCuerpo string 1–40No nameCuerpo string 1–300Sí partyIdCuerpo string (uuid)Sí roleCuerpo "demandante" | "demandado" | "apoderado" | "otro"Sí
curl Copiar curl -X POST 'https://www.notificado.co/v1/update-party' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" \
-H 'content-type: application/json' \
-d '{"name":"<name>","partyId":"<partyId>","role":"demandante"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/v1/update-party' , {
method : 'POST' ,
headers : { authorization : `Bearer ${token}` , 'content-type' : 'application/json' },
body : JSON.stringify({
"name" : "<name>" ,
"partyId" : "<partyId>" ,
"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 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds POST /api/update-party-address
Miembro de la firma Permiso: case:write Herramienta MCP: updatePartyAddress
Edit a saved address (addressId from addressBook or partyAddresses) in the firm’s address book: email, source, sourceText, and exactly one of evidenceDocumentIds (provenance_proof uploads) or overrideReason; obtainedOn optional. The entry is replaced (the old one is kept as removed) and the new entry, with a new id, is returned. NOT a sworn statement — the lawyer still swears the address in the panel on every send.
Parámetros de updatePartyAddress Nombre Dónde Tipo Obligatorio addressIdCuerpo string (uuid)Sí emailCuerpo string (email)Sí evidenceDocumentIdsCuerpo array of string 1–64 | string 1–4000No obtainedOnCuerpo "" | string | string | nullNo orgIdCuerpo string (uuid)Sí overrideReasonCuerpo "" | string 1–2000 | nullNo returnToCuerpo string 1–2048No sourceCuerpo "comunicaciones_previas" | "camara_de_comercio" | "rut" | "contrato" | "web_oficial" | "otro"Sí sourceTextCuerpo string 1–2000Sí
curl Copiar curl -X POST 'https://www.notificado.co/api/update-party-address' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{
"addressId": "<addressId>",
"email": "<email>",
"orgId": "<orgId>",
"source": "comunicaciones_previas",
"sourceText": "<sourceText>"
}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/update-party-address' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"addressId" : "<addressId>" ,
"email" : "<email>" ,
"orgId" : "<orgId>" ,
"source" : "comunicaciones_previas" ,
"sourceText" : "<sourceText>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"createdAt": "2026-09-25T15:00:00Z",
"email": "<email>",
"evidenceDocumentIds": [
"<evidenceDocumentIds>"
],
"id": "<id>",
"obtainedOn": "<obtainedOn>",
"overrideReason": "<overrideReason>",
"partyId": "<partyId>",
"source": "comunicaciones_previas",
"sourceText": "<sourceText>"
}Errores
400 X_INPUT_INVALID 401 X_UNAUTHENTICATED — no credential, or one that did not resolve 403 policy denied 422 X_BODY_INVALID 429 X_RATE_LIMITED — retry after Retry-After seconds