Skip to content

API reference

Public and webhooks

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

Every example assumes a signed-in session; how to get one is in Authentication

publicStatus

GET/_x/query/public-status

No sessionPermission: publicMCP tool: publicStatus

Public status of notificado.co: status (operational | maintenance | degraded | partial_outage | major_outage), the incidents still open, one entry per America/Bogota day for the last 30 days with the worst impact that day, and every incident in that window with its public updates (Spanish, optional English). Instants are UTC.

Parameters of publicStatus
NameInTypeRequired
_firstQueryinteger 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterQuerystringthe endCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/public-status'
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/public-status');
const result = await response.json();
Example response
200
[
  null
]

Errors

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

recipientPage

GET/_x/query/recipient-page

No sessionPermission: public

recipientPage

Parameters of recipientPage
NameInTypeRequired
recipientTokenQuerystring 1–64Yes
_firstQueryinteger 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterQuerystringthe endCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/recipient-page?recipientToken=<recipientToken>'
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/recipient-page?recipientToken=<recipientToken>');
const result = await response.json();
Example response
200
[
  null
]

Errors

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

verifyConstancia

GET/_x/query/verify-constancia

No sessionPermission: publicMCP tool: verifyConstancia

Public check of a Notificado constancia: pass the verification code printed under its QR ("code") or the SHA-256 of the PDF file ("pdfSha256"). Returns one row: authentic, issuedAt (UTC and Bogotá), delivery status, the signed PDF's SHA-256, version, latestVersion and superseded. Never returns message content or recipient data; an unknown code or hash returns authentic=false with every other field null.

Parameters of verifyConstancia
NameInTypeRequired
codeQuerystring 1–32No
pdfSha256QuerystringNo
_firstQueryinteger 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterQuerystringthe endCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/verify-constancia'
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/verify-constancia');
const result = await response.json();
Example response
200
[
  null
]

Errors

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

fileDataSubjectRequest

POST/api/data-subject-requests/file

No sessionPermission: public

fileDataSubjectRequest

Parameters of fileDataSubjectRequest
NameInTypeRequired
captchaTokenBodystring 0–4096No
cf-turnstile-responseBodystring 0–4096No
documentNumberBodystring 3–40Yes
documentTypeBody"cc" | "ce" | "pasaporte" | "nit" | "otro"Yes
emailBodystring (email)Yes
fullNameBodystring 2–200Yes
h-captcha-responseBodystring 0–4096No
kindBody"consulta" | "reclamo" | "actualizacion" | "supresion"Yes
localeBodystring 0–16No
messageBodystring 10–5000Yes
phoneBodystring 0–40No
relatedToBodystring 0–300No
subjectBody"recipient" | "account"Yes
websiteBodystring 0–500No
curl
curl -X POST 'https://www.notificado.co/api/data-subject-requests/file' \
  -H 'content-type: application/json' \
  -d '{
  "documentNumber": "<documentNumber>",
  "documentType": "cc",
  "email": "<email>",
  "fullName": "<fullName>",
  "kind": "consulta",
  "message": "<message>",
  "subject": "recipient"
}'
TypeScript
const response = await fetch('https://www.notificado.co/api/data-subject-requests/file', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({
    "documentNumber": "<documentNumber>",
    "documentType": "cc",
    "email": "<email>",
    "fullName": "<fullName>",
    "kind": "consulta",
    "message": "<message>",
    "subject": "recipient"
  }),
});
const result = await response.json();
Example response
200
{
  "dueAt": "2026-09-25T15:00:00Z",
  "reference": "<reference>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

recordDownload

POST/api/downloads/record

No sessionPermission: public

recordDownload

Parameters of recordDownload
NameInTypeRequired
linkTokenBodystringYes
recipientTokenBodystringYes
curl
curl -X POST 'https://www.notificado.co/api/downloads/record' \
  -H 'content-type: application/json' \
  -d '{"linkToken":"<linkToken>","recipientToken":"<recipientToken>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/downloads/record', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({
    "linkToken": "<linkToken>",
    "recipientToken": "<recipientToken>"
  }),
});
const result = await response.json();
Example response
200
{
  "bytes": 0,
  "contentBase64": "<contentBase64>",
  "contentType": "<contentType>",
  "eventId": "<eventId>",
  "filename": "<filename>",
  "sha256": "<sha256>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

health

POST/api/healths/invoke

No sessionPermission: publicMCP tool: health

Readiness of this process

curl
curl -X POST 'https://www.notificado.co/api/healths/invoke' \
  -H 'content-type: application/json' \
  -d '{}'
TypeScript
const response = await fetch('https://www.notificado.co/api/healths/invoke', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({}),
});
const result = await response.json();
Example response
200
{
  "ok": true,
  "role": "<role>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

ingestInboundReply

POST/api/inbound-replies/ingest

No sessionPermission: public

ingestInboundReply

curl
curl -X POST 'https://www.notificado.co/api/inbound-replies/ingest' \
  -H 'content-type: application/json' \
  -d '"<body>"'
TypeScript
const response = await fetch('https://www.notificado.co/api/inbound-replies/ingest', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify("<body>"),
});
const result = await response.json();
Example response
200
{
  "messageId": "<messageId>",
  "outcome": "<outcome>",
  "type": "<type>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

recordPixel

POST/api/pixels/record

No sessionPermission: public

recordPixel

Parameters of recordPixel
NameInTypeRequired
recipientTokenBodystringYes
curl
curl -X POST 'https://www.notificado.co/api/pixels/record' \
  -H 'content-type: application/json' \
  -d '{"recipientToken":"<recipientToken>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/pixels/record', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({
    "recipientToken": "<recipientToken>"
  }),
});
const result = await response.json();
Example response
200
{
  "eventId": "<eventId>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

acknowledgeReceipt

POST/api/receipts/acknowledge

No sessionPermission: public

acknowledgeReceipt

Parameters of acknowledgeReceipt
NameInTypeRequired
recipientTokenBodystring 1–64Yes
curl
curl -X POST 'https://www.notificado.co/api/receipts/acknowledge' \
  -H 'content-type: application/json' \
  -d '{"recipientToken":"<recipientToken>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/receipts/acknowledge', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({
    "recipientToken": "<recipientToken>"
  }),
});
const result = await response.json();
Example response
200
{
  "acknowledgedAt": "<acknowledgedAt>",
  "created": true,
  "eventId": "<eventId>",
  "ok": true
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

ingestSesEvent

POST/api/ses-events/ingest

No sessionPermission: public

ingestSesEvent

curl
curl -X POST 'https://www.notificado.co/api/ses-events/ingest' \
  -H 'content-type: application/json' \
  -d '"<body>"'
TypeScript
const response = await fetch('https://www.notificado.co/api/ses-events/ingest', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify("<body>"),
});
const result = await response.json();
Example response
200
{
  "messageId": "<messageId>",
  "outcome": "<outcome>",
  "type": "<type>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

wompiWebhook

POST/api/webhooks/wompi

No sessionPermission: public

wompiWebhook

Parameters of wompiWebhook
NameInTypeRequired
environmentBodystring 1–20No
eventBodystring 1–80Yes
sent_atBodystring 1–40No
curl
curl -X POST 'https://www.notificado.co/api/webhooks/wompi' \
  -H 'content-type: application/json' \
  -d '{"event":"<event>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/webhooks/wompi', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({
    "event": "<event>"
  }),
});
const result = await response.json();
Example response
200
{
  "eventKey": "<eventKey>",
  "outcome": "queued"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID