Skip to content

Deadlines

8 operations, each with its parameters, curl and TypeScript examples ready to copy, and its errors.

Operations marked /v1 authenticate with an agent token; the rest, with a panel session. How both work is in Authentication

closureImpact

GET/_x/query/closure-impact

Firm memberPermission: deadline:write

closureImpact

Parameters of closureImpact
NameInTypeRequired
courtIdQuerystringNo
endsOnQuerystringYes
startsOnQuerystringYes
_firstQueryinteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterQuerystringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/closure-impact?endsOn=<endsOn>&startsOn=<startsOn>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/closure-impact?endsOn=<endsOn>&startsOn=<startsOn>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Example response
200
[
  null
]

Errors

  • 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

listClosureCourts

GET/_x/query/list-closure-courts

Firm memberPermission: deadline:read

listClosureCourts

Parameters of listClosureCourts
NameInTypeRequired
limitQueryinteger 1–500No
orgIdQuerystring (uuid)Yes
_firstQueryinteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterQuerystringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/list-closure-courts?orgId=<orgId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/list-closure-courts?orgId=<orgId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Example response
200
[
  null
]

Errors

  • 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

listCourtClosures

GET/v1/list-court-closures

Firm memberPermission: deadline:read/v1 · bearer tokenMCP tool: listCourtClosures

The firm's recorded court closures that terms skip. Recording one is a person's act in the panel.

Parameters of listCourtClosures
NameInTypeRequired
limitQueryinteger 1–500No
orgIdQuerystring (uuid)Yes
_firstQueryinteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterQuerystringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/v1/list-court-closures?orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
const response = await fetch('https://www.notificado.co/v1/list-court-closures?orgId=<orgId>', {
  headers: { authorization: `Bearer ${token}` },
});
const result = await response.json();
Example response
200
[
  null
]

Errors

  • 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

listDeadlines

GET/v1/list-deadlines

Firm memberPermission: deadline:read/v1 · bearer tokenMCP tool: listDeadlines

Computed terms per recipient (Bogotá dates). An ESTIMATE: the judge decides. blocked_bounce = not notified.

Parameters of listDeadlines
NameInTypeRequired
afterQuerystring (uuid)No
caseIdQuerystring (uuid)No
cursorQuerystring (uuid)No
fromQuerystringNo
limitQueryinteger 1–500No
notificationIdQuerystring (uuid)No
orgIdQuerystring (uuid)Yes
statusQuery"computed" | "blocked_bounce"No
toQuerystringNo
_firstQueryinteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterQuerystringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/v1/list-deadlines?orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
const response = await fetch('https://www.notificado.co/v1/list-deadlines?orgId=<orgId>', {
  headers: { authorization: `Bearer ${token}` },
});
const result = await response.json();
Example response
200
[
  {
    "calendarVersion": "<calendarVersion>",
    "caseId": "<caseId>",
    "computedAt": "<computedAt>",
    "conservative": {
      "sendWindowVersion": "<sendWindowVersion>",
      "surtidaAt": "<surtidaAt>",
      "surtidaOn": "<surtidaOn>",
      "termEndsAt": "<termEndsAt>",
      "termEndsOn": "<termEndsOn>",
      "termStartsAt": "<termStartsAt>",
      "termStartsOn": "<termStartsOn>"
    },
    "disclaimerKey": "<disclaimerKey>",
    "id": "<id>",
    "inputsSha256": "<inputsSha256>",
    "notificationId": "<notificationId>",
    "orgId": "<orgId>",
    "radicado": "<radicado>",
    "recipientId": "<recipientId>",
    "recipientName": "<recipientName>",
    "sentAt": "<sentAt>",
    "status": "computed",
    "surtidaAt": "<surtidaAt>",
    "surtidaOn": "<surtidaOn>",
    "termDays": 1,
    "termDaysAssumed": true,
    "termEndsAt": "<termEndsAt>",
    "termEndsOn": "<termEndsOn>",
    "termStartsAt": "<termStartsAt>",
    "termStartsOn": "<termStartsOn>",
    "vacanciaCountsForSurtida": true
  }
]

Errors

  • 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

upcomingDeadlines

GET/_x/query/upcoming-deadlines

Firm memberPermission: deadline:readMCP tool: upcomingDeadlines

The caller's firm's next vencimientos (Ley 2213 art. 8), from today in America/Bogota on, soonest first — ONE row per case and recipient address (the soonest; laterTerms counts the other upcoming terms of the same pair). Each row carries notificationId, caseId, radicado, recipientName and surtidaOn / termStartsOn / termEndsOn (YYYY-MM-DD, Bogotá). For every term use listDeadlines. The dates are an ESTIMATE — always tell the user the judge decides. Read-only.

Parameters of upcomingDeadlines
NameInTypeRequired
limitQueryinteger 1–100No
orgIdQuerystring (uuid)Yes
_firstQueryinteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterQuerystringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/upcoming-deadlines?orgId=<orgId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/upcoming-deadlines?orgId=<orgId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Example response
200
[
  null
]

Errors

  • 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

listGlobalClosures

POST/api/list-global-closures

Firm memberPermission: deadline:write

listGlobalClosures

Parameters of listGlobalClosures
NameInTypeRequired
limitBodyinteger 1–500No
yearBodyinteger 2000–2100No
curl
curl -X POST 'https://www.notificado.co/api/list-global-closures' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{}'
TypeScript
const response = await fetch('https://www.notificado.co/api/list-global-closures', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({}),
});
const result = await response.json();
Example response
200
{
  "rows": [
    {
      "courtId": "<courtId>",
      "createdAt": "2026-09-25T15:00:00Z",
      "createdBy": "<createdBy>",
      "createdByEmail": "<createdByEmail>",
      "endsOn": "<endsOn>",
      "id": "<id>",
      "kind": "<kind>",
      "reason": "<reason>",
      "seeded": true,
      "sourceUrl": "<sourceUrl>",
      "startsOn": "<startsOn>",
      "withdrawReason": "<withdrawReason>",
      "withdrawnAt": "2026-09-25T15:00:00Z",
      "withdrawnBy": "<withdrawnBy>",
      "withdrawnByEmail": "<withdrawnByEmail>"
    }
  ]
}

Errors

  • 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

setCourtClosure

POST/api/set-court-closure

Firm memberPermission: deadline:write

setCourtClosure

Parameters of setCourtClosure
NameInTypeRequired
codeBodystring 1–64No
courtIdBodystringNo
endsOnBodystringYes
globalBodybooleanNo
kindBody"cierre_extraordinario" | "vacancia_colectiva" | "semana_santa"No
reasonBodystring 0–500No
sourceUrlBodystring 0–2048No
startsOnBodystringYes
curl
curl -X POST 'https://www.notificado.co/api/set-court-closure' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"endsOn":"<endsOn>","startsOn":"<startsOn>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/set-court-closure', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "endsOn": "<endsOn>",
    "startsOn": "<startsOn>"
  }),
});
const result = await response.json();
Example response
200
{
  "courtId": "<courtId>",
  "endsOn": "<endsOn>",
  "global": true,
  "id": "<id>",
  "kind": "<kind>",
  "recomputing": -9007199254740991,
  "startsOn": "<startsOn>"
}

Errors

  • 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

withdrawGlobalClosure

POST/api/withdraw-global-closure

Firm memberPermission: deadline:write

withdrawGlobalClosure

Parameters of withdrawGlobalClosure
NameInTypeRequired
closureIdBodystring (uuid)Yes
codeBodystring 1–64No
reasonBodystring 0–500Yes
curl
curl -X POST 'https://www.notificado.co/api/withdraw-global-closure' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"closureId":"<closureId>","reason":"<reason>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/withdraw-global-closure', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "closureId": "<closureId>",
    "reason": "<reason>"
  }),
});
const result = await response.json();
Example response
200
{
  "courtId": "<courtId>",
  "endsOn": "<endsOn>",
  "id": "<id>",
  "kind": "<kind>",
  "recomputing": -9007199254740991,
  "startsOn": "<startsOn>",
  "withdrawnAt": "2026-09-25T15:00:00Z"
}

Errors

  • 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