Saltar al contenido
Notificado

Procesos y documentos

39 operaciones, cada una con sus parámetros, ejemplos en curl y TypeScript listos para copiar y sus errores.

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

addressBook

GET/_x/query/address-book

Miembro de la firmaPermiso: case:readHerramienta 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
NombreDóndeTipoObligatorio
caseIdConsultastring (uuid)No
cursorConsultastring 1–64No
limitConsultainteger 1–201No
orgIdConsultastring (uuid)Sí
qConsultastring 1–120No
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/address-book?orgId=<orgId>' \
  -b cookies.txt
TypeScript
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
[
  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

caseEspecialidades

GET/v1/case-especialidades

Miembro de la firmaPermiso: case:read/v1 · token BearerHerramienta MCP: caseEspecialidades

The exact especialidad values caseList's filter takes.

Parámetros de caseEspecialidades
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/v1/case-especialidades?orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
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
[
  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

caseList

GET/v1/case-list

Miembro de la firmaPermiso: case:read/v1 · token BearerHerramienta MCP: caseList

Cases, newest first; q matches radicado, cliente, juzgado or a party; archived: true lists archived ones.

Parámetros de caseList
NombreDóndeTipoObligatorio
archivedConsultabooleanNo
cursorConsultastring 1–64No
especialidadConsultastring 1–120No
limitConsultainteger 1–200No
orgIdConsultastring (uuid)Sí
qConsultastring 1–120No
_firstConsultainteger 1–200page size; present, the response is the page envelope rather than the bare rows (1 to 200)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/v1/case-list?orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
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
[
  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

getCase

GET/v1/get-case

Miembro de la firmaPermiso: case:read/v1 · token BearerHerramienta MCP: getCase

One case with its parties; locked = a notification left draft (correct it with createCase correctionOf).

Parámetros de getCase
NombreDóndeTipoObligatorio
caseIdConsultastring (uuid)Sí
orgIdConsultastring (uuid)Sí
curl
curl 'https://www.notificado.co/v1/get-case?caseId=<caseId>&orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
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
{
  "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

getImport

GET/v1/get-import

Miembro de la firmaPermiso: case:read/v1 · token BearerHerramienta MCP: getImport

One CSV import: status, counts, and each row as a case + DRAFT or its errors.

Parámetros de getImport
NombreDóndeTipoObligatorio
importIdConsultastring (uuid)Sí
orgIdConsultastring (uuid)Sí
curl
curl 'https://www.notificado.co/v1/get-import?importId=<importId>&orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
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
{
  "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

importErrorCsv

GET/v1/import-error-csv

Miembro de la firmaPermiso: case:read/v1 · token BearerHerramienta MCP: importErrorCsv

The failed rows as a CSV to fix and upload again.

Parámetros de importErrorCsv
NombreDóndeTipoObligatorio
importIdConsultastring (uuid)Sí
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/v1/import-error-csv?importId=<importId>&orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
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
[
  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

importSendables

GET/v1/import-sendables

Miembro de la firmaPermiso: case:read/v1 · token BearerHerramienta MCP: importSendables

An import's drafts as the batch send sees them: address, warnings, blocker.

Parámetros de importSendables
NombreDóndeTipoObligatorio
importIdConsultastring (uuid)Sí
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–5000page size; present, the response is the page envelope rather than the bare rows (1 to 5000)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/v1/import-sendables?importId=<importId>&orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
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
[
  {
    "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

importSends

GET/v1/import-sends

Miembro de la firmaPermiso: case:read/v1 · token BearerHerramienta MCP: importSends

An import's batch sends: status, counts, failures with their code.

Parámetros de importSends
NombreDóndeTipoObligatorio
importIdConsultastring (uuid)Sí
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/v1/import-sends?importId=<importId>&orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
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
[
  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

linkedFileList

GET/v1/linked-file-list

Miembro de la firmaPermiso: case:write/v1 · token BearerHerramienta 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
NombreDóndeTipoObligatorio
cursorConsultastring 1–64No
limitConsultainteger 1–100No
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–100page size; present, the response is the page envelope rather than the bare rows (1 to 100)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/v1/linked-file-list?orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
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
[
  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

linkedFileStatus

GET/v1/linked-file-status

Miembro de la firmaPermiso: case:write/v1 · token BearerHerramienta 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
NombreDóndeTipoObligatorio
idConsultastring (uuid)Sí
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/v1/linked-file-status?id=<id>&orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
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
[
  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

linkedFilesAccess

GET/v1/linked-files-access

Miembro de la firmaPermiso: case:write/v1 · token BearerHerramienta 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
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/v1/linked-files-access?orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
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
[
  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

listImports

GET/v1/list-imports

Miembro de la firmaPermiso: case:read/v1 · token BearerHerramienta MCP: listImports

CSV imports, newest first, with status and counts; importId for one.

Parámetros de listImports
NombreDóndeTipoObligatorio
cursorConsultastring 1–64No
importIdConsultastring (uuid)No
limitConsultainteger 1–100No
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–100page size; present, the response is the page envelope rather than the bare rows (1 to 100)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/v1/list-imports?orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
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
[
  {
    "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

partyAddresses

GET/v1/party-addresses

Miembro de la firmaPermiso: case:read/v1 · token BearerHerramienta MCP: partyAddresses

A case's saved party addresses with provenance. Not sworn.

Parámetros de partyAddresses
NombreDóndeTipoObligatorio
caseIdConsultastring (uuid)Sí
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/v1/party-addresses?caseId=<caseId>&orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
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
[
  {
    "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

wizardAddressBook

GET/_x/query/wizard-address-book

Miembro de la firmaPermiso: case:read

wizardAddressBook

Parámetros de wizardAddressBook
NombreDóndeTipoObligatorio
caseIdConsultastring (uuid)Sí
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/wizard-address-book?caseId=<caseId>&orgId=<orgId>' \
  -b cookies.txt
TypeScript
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
[
  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

addParty

POST/v1/add-party

Miembro de la firmaPermiso: case:write/v1 · token BearerIdempotency-KeyHerramienta MCP: addParty

Add a party (demandante, demandado...). A party is not a recipient: the lawyer swears addresses.

Parámetros de addParty
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
caseIdCuerpostring (uuid)Sí
idNumberCuerpostring 1–40No
nameCuerpostring 1–300Sí
roleCuerpo"demandante" | "demandado" | "apoderado" | "otro"Sí
curl
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
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
{
  "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

archiveCase

POST/v1/archive-case

Miembro de la firmaPermiso: case:write/v1 · token BearerHerramienta 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
NombreDóndeTipoObligatorio
caseIdCuerpostring (uuid)Sí
curl
curl -X POST 'https://www.notificado.co/v1/archive-case' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"caseId":"<caseId>"}'
TypeScript
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
{
  "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

attachDocument

POST/v1/attach-document

Miembro de la firmaPermiso: case:write/v1 · token BearerIdempotency-KeyHerramienta MCP: attachDocument

Attach an uploaded document to a DRAFT: copied to evidence storage and hashed. Total under 6 MB.

Parámetros de attachDocument
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
documentIdCuerpostring (uuid)Sí
kindCuerpo"auto_admisorio" | "demanda" | "anexo" | "subsanacion" | "providencia" | "otro"Sí
notificationIdCuerpostring (uuid)Sí
orgIdCuerpostring (uuid)Sí
curl
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
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
{
  "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

attachLinkedFile

POST/v1/attach-linked-file

Miembro de la firmaPermiso: case:write/v1 · token BearerIdempotency-KeyHerramienta 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
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
kindCuerpo"auto_admisorio" | "demanda" | "anexo" | "subsanacion" | "providencia" | "otro"Sí
linkedFileIdCuerpostring (uuid)Sí
notificationIdCuerpostring (uuid)Sí
orgIdCuerpostring (uuid)Sí
curl
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
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
{
  "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

checkAddress

POST/v1/check-address

Miembro de la firmaPermiso: case:write/v1 · token BearerHerramienta MCP: checkAddress

Check an address before it is sworn: ok, warn or block, with reasons. Recorded; sends nothing.

Parámetros de checkAddress
NombreDóndeTipoObligatorio
emailCuerpostring 1–320Sí
orgIdCuerpostring (uuid)Sí
curl
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
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
{
  "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

confirmImportUpload

POST/v1/confirm-import-upload

Miembro de la firmaPermiso: case:write/v1 · token BearerIdempotency-KeyHerramienta MCP: confirmImportUpload

Step 2: queue the import. It makes cases and DRAFTS only, never a recipient or a send.

Parámetros de confirmImportUpload
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
filenameCuerpostring 1–255Sí
keyCuerpostring 1–512Sí
curl
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
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
{
  "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

confirmLinkedUpload

POST/v1/confirm-linked-upload

Miembro de la firmaPermiso: case:write/v1 · token BearerIdempotency-KeyHerramienta 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
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
idCuerpostring (uuid)Sí
orgIdCuerpostring (uuid)Sí
curl
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
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
{
  "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

createCase

POST/v1/create-case

Miembro de la firmaPermiso: case:write/v1 · token BearerIdempotency-KeyHerramienta MCP: createCase

Register a case: 23-digit radicado, juzgado and its email. X_CASE_RADICADO_TAKEN: use that open case.

Parámetros de createCase
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
ciudadCuerpostring 1–120Sí
claseProcesoCuerpostring 1–200Sí
clienteCuerpostring 1–300Sí
correctionOfCuerpostring (uuid)No
especialidadCuerpostring 1–120Sí
juzgadoCuerpostring 1–300Sí
juzgadoEmailCuerpostring (email) ≤ 320Sí
radicadoCuerpostring 23–40Sí
curl
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
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
{
  "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

createCorreo

POST/v1/create-correo

Miembro de la firmaPermiso: case:write/v1 · token BearerIdempotency-KeyHerramienta 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
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
bodyCuerpostring 1–20000Sí
messageTemplateIdCuerpostring (uuid) | nullNo
orgIdCuerpostring (uuid)Sí
subjectCuerpostring 1–200Sí
curl
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
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
{
  "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

createNotification

POST/v1/create-notification

Miembro de la firmaPermiso: case:write/v1 · token BearerIdempotency-KeyHerramienta 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
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
caseIdCuerpostring (uuid)Sí
mensajeCuerpostring 1–5000No
messageTemplateIdCuerpostring (uuid) | nullNo
orgIdCuerpostring (uuid)Sí
providenciaCuerpostring 1–200Sí
providenciaFechaCuerpostringSí
templateCuerpo"art8-personal"Sí
terminoDiasCuerpointeger 1–365No
curl
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
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
{
  "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

detachAttachment

POST/api/detach-attachment

Miembro de la firmaPermiso: case:write

detachAttachment

Parámetros de detachAttachment
NombreDóndeTipoObligatorio
attachmentIdCuerpostring (uuid)Sí
notificationIdCuerpostring (uuid)Sí
orgIdCuerpostring (uuid)Sí
curl
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
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
{
  "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

discardDraft

POST/v1/discard-draft

Miembro de la firmaPermiso: case:write/v1 · token BearerHerramienta MCP: discardDraft

Discard a DRAFT with no evidence and no pending send request. Drafts cost nothing, so nothing is refunded.

Parámetros de discardDraft
NombreDóndeTipoObligatorio
notificationIdCuerpostring (uuid)Sí
orgIdCuerpostring (uuid)Sí
curl
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
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
{
  "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

discardLinkedFile

POST/v1/discard-linked-file

Miembro de la firmaPermiso: case:write/v1 · token BearerIdempotency-KeyHerramienta 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
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
idCuerpostring (uuid)Sí
orgIdCuerpostring (uuid)Sí
curl
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
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
{
  "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

removeParty

POST/v1/remove-party

Miembro de la firmaPermiso: case:write/v1 · token BearerHerramienta MCP: removeParty

Remove a party. Refused X_CASE_LOCKED once a notification left draft.

Parámetros de removeParty
NombreDóndeTipoObligatorio
caseIdCuerpostring (uuid)No
partyIdCuerpostring (uuid)Sí
curl
curl -X POST 'https://www.notificado.co/v1/remove-party' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"partyId":"<partyId>"}'
TypeScript
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
{
  "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

removePartyAddress

POST/v1/remove-party-address

Miembro de la firmaPermiso: case:write/v1 · token BearerHerramienta MCP: removePartyAddress

Remove a saved address; past sends are untouched.

Parámetros de removePartyAddress
NombreDóndeTipoObligatorio
addressIdCuerpostring (uuid)Sí
orgIdCuerpostring (uuid)Sí
returnToCuerpostring 1–2048No
curl
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
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
{
  "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

removeRecipient

POST/api/remove-recipient

Miembro de la firmaPermiso: case:write

removeRecipient

Parámetros de removeRecipient
NombreDóndeTipoObligatorio
notificationIdCuerpostring (uuid)Sí
orgIdCuerpostring (uuid)Sí
recipientIdCuerpostring (uuid)Sí
curl
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
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
{
  "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

requestImportUpload

POST/v1/request-import-upload

Miembro de la firmaPermiso: case:write/v1 · token BearerIdempotency-KeyHerramienta MCP: requestImportUpload

Step 1: a signed PUT grant for one CSV (2 MB); then confirmImportUpload(key).

Parámetros de requestImportUpload
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
filenameCuerpostring 1–255Sí
sizeCuerpointeger 1–9007199254740991Sí
curl
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
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
{
  "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

requestLinkedUpload

POST/v1/request-linked-upload

Miembro de la firmaPermiso: case:write/v1 · token BearerIdempotency-KeyHerramienta 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
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
bytesCuerpointeger 1–9007199254740991Sí
contentTypeCuerpostring 1–127No
filenameCuerpostring 1–255Sí
orgIdCuerpostring (uuid)Sí
curl
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
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
{
  "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

savePartyAddress

POST/v1/save-party-address

Miembro de la firmaPermiso: case:write/v1 · token BearerIdempotency-KeyHerramienta MCP: savePartyAddress

Save a party address with its source and proof or overrideReason. Not sworn.

Parámetros de savePartyAddress
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
emailCuerpostring (email)Sí
evidenceDocumentIdsCuerpoarray of string (uuid)Sí
obtainedOnCuerpostring | nullNo
orgIdCuerpostring (uuid)Sí
overrideReasonCuerpostring 1–2000 | nullNo
partyIdCuerpostring (uuid)Sí
sourceCuerpo"comunicaciones_previas" | "camara_de_comercio" | "rut" | "contrato" | "web_oficial" | "otro"Sí
sourceTextCuerpostring 1–2000Sí
curl
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
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
{
  "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

unarchiveCase

POST/v1/unarchive-case

Miembro de la firmaPermiso: case:write/v1 · token BearerHerramienta MCP: unarchiveCase

Reopen an archived case so it takes notifications again.

Parámetros de unarchiveCase
NombreDóndeTipoObligatorio
caseIdCuerpostring (uuid)Sí
curl
curl -X POST 'https://www.notificado.co/v1/unarchive-case' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"caseId":"<caseId>"}'
TypeScript
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
{
  "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

updateCase

POST/v1/update-case

Miembro de la firmaPermiso: case:write/v1 · token BearerHerramienta MCP: updateCase

Edit a case's fields. Refused X_CASE_LOCKED once a notification of it left draft.

Parámetros de updateCase
NombreDóndeTipoObligatorio
caseIdCuerpostring (uuid)Sí
ciudadCuerpostring 1–120No
claseProcesoCuerpostring 1–200No
clienteCuerpostring 1–300No
especialidadCuerpostring 1–120No
juzgadoCuerpostring 1–300No
juzgadoEmailCuerpostring (email) ≤ 320No
radicadoCuerpostring 23–40No
curl
curl -X POST 'https://www.notificado.co/v1/update-case' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"caseId":"<caseId>"}'
TypeScript
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
{
  "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

updateCorreo

POST/v1/update-correo

Miembro de la firmaPermiso: case:write/v1 · token BearerHerramienta 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
NombreDóndeTipoObligatorio
bodyCuerpostring 1–20000Sí
notificationIdCuerpostring (uuid)Sí
orgIdCuerpostring (uuid)Sí
subjectCuerpostring 1–200Sí
curl
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
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
{
  "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

updateDraft

POST/v1/update-draft

Miembro de la firmaPermiso: case:write/v1 · token BearerHerramienta MCP: updateDraft

Rewrite a DRAFT: omitted optional fields are removed, the art. 8 sentences stay. Refused once sent.

Parámetros de updateDraft
NombreDóndeTipoObligatorio
mensajeCuerpostring 1–5000No
messageTemplateIdCuerpostring (uuid) | nullNo
notificationIdCuerpostring (uuid)Sí
orgIdCuerpostring (uuid)Sí
providenciaCuerpostring 1–200Sí
providenciaFechaCuerpostringSí
templateCuerpo"art8-personal"Sí
terminoDiasCuerpointeger 1–365No
curl
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
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
{
  "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

updateParty

POST/v1/update-party

Miembro de la firmaPermiso: case:write/v1 · token BearerHerramienta MCP: updateParty

Replace a party's role, name and idNumber. Refused X_CASE_LOCKED once a notification left draft.

Parámetros de updateParty
NombreDóndeTipoObligatorio
caseIdCuerpostring (uuid)No
idNumberCuerpostring 1–40No
nameCuerpostring 1–300Sí
partyIdCuerpostring (uuid)Sí
roleCuerpo"demandante" | "demandado" | "apoderado" | "otro"Sí
curl
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
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
{
  "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

updatePartyAddress

POST/api/update-party-address

Miembro de la firmaPermiso: case:writeHerramienta 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
NombreDóndeTipoObligatorio
addressIdCuerpostring (uuid)Sí
emailCuerpostring (email)Sí
evidenceDocumentIdsCuerpoarray of string 1–64 | string 1–4000No
obtainedOnCuerpo"" | string | string | nullNo
orgIdCuerpostring (uuid)Sí
overrideReasonCuerpo"" | string 1–2000 | nullNo
returnToCuerpostring 1–2048No
sourceCuerpo"comunicaciones_previas" | "camara_de_comercio" | "rut" | "contrato" | "web_oficial" | "otro"Sí
sourceTextCuerpostring 1–2000Sí
curl
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
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
{
  "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