Every example assumes a signed-in session; how to get one is in Authentication
GET /_x/query/verify-chain
Firm member Permission: evidence:verify MCP tool: verifyChain
Verify the hash-chained evidence log between two sequence numbers (at most 100000 events) and name the first broken event. Staff only.
Parameters of verifyChain Name In Type Required deepQuery booleanNo fromSeqQuery integer 1–9007199254740991Yes toSeqQuery integer 1–9007199254740991No _firstQuery integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterQuery stringthe endCursor a previous page answered; needs _first No
curl Copy curl 'https://www.notificado.co/_x/query/verify-chain?fromSeq=1' \
-b cookies.txtTypeScript Copy const response = await fetch('https://www.notificado.co/_x/query/verify-chain?fromSeq=1' , {
headers : { cookie : sessionCookie },
});
const result = await response.json();Example response 200 Copy [
null
]Errors
400 X_INPUT_INVALID or X_CURSOR_INVALID 403 policy denied POST /api/chain-verifications/run
Firm member Permission: evidence:verify MCP tool: runChainVerification
Staff only. Verify the hash-chained evidence log between two sequence numbers. Up to 50000 events are verified in the call and answer { ok, checked, firstBroken? }; a longer range (up to 10000000) is queued and answers { enqueued: true, jobId }. deep also re-hashes the raw provider objects. Read-only; every call is audited.
Parameters of runChainVerification Name In Type Required confirmTokenBody string 1–200No deepBody booleanNo fromSeqBody integer 1–9007199254740991Yes toSeqBody integer 1–9007199254740991Yes
curl Copy curl -X POST 'https://www.notificado.co/api/chain-verifications/run' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"fromSeq":1,"toSeq":1}' TypeScript Copy const response = await fetch('https://www.notificado.co/api/chain-verifications/run' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"fromSeq" : 1 ,
"toSeq" : 1
}),
});
const result = await response.json();Example response 200 Copy {
"checked": -9007199254740991,
"deep": true,
"firstBroken": {
"id": "<id>",
"reason": "<reason>",
"seq": -9007199254740991
},
"fromSeq": -9007199254740991,
"ok": true,
"toSeq": -9007199254740991
}Errors
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/constancias/reissue
Firm member Permission: evidence:read
reissueConstancia
Parameters of reissueConstancia Name In Type Required notificationIdBody string (uuid)Yes orgIdBody string (uuid)Yes
curl Copy curl -X POST 'https://www.notificado.co/api/constancias/reissue' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"notificationId":"<notificationId>","orgId":"<orgId>"}' TypeScript Copy const response = await fetch('https://www.notificado.co/api/constancias/reissue' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"notificationId" : "<notificationId>" ,
"orgId" : "<orgId>"
}),
});
const result = await response.json();Example response 200 Copy {
"queued": true,
"version": 2
}Errors
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/evidences/download
Firm member Permission: evidence:read MCP tool: downloadEvidence
Returns the bytes (base64, with filename, content type and SHA-256) of the signed constancia PDF (kind "constancia") or the offline-verifiable evidence zip (kind "zip") of one notification in your organization; newest version unless "version" is given. Every call is recorded in the audit log and as an evidence.viewed event. Fails X_CONSTANCIA_NOT_FOUND before the first constancia is issued and X_EVIDENCE_ZIP_NOT_READY while the zip is still being built.
Parameters of downloadEvidence Name In Type Required kindBody "constancia" | "zip"Yes notificationIdBody string (uuid)Yes orgIdBody string (uuid)Yes versionBody integer 1–9007199254740991No
curl Copy curl -X POST 'https://www.notificado.co/api/evidences/download' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{
"kind": "constancia",
"notificationId": "<notificationId>",
"orgId": "<orgId>"
}' TypeScript Copy const response = await fetch('https://www.notificado.co/api/evidences/download' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"kind" : "constancia" ,
"notificationId" : "<notificationId>" ,
"orgId" : "<orgId>"
}),
});
const result = await response.json();Example response 200 Copy {
"bytes": 0,
"constanciaId": "<constanciaId>",
"contentBase64": "<contentBase64>",
"contentType": "<contentType>",
"filename": "<filename>",
"kind": "constancia",
"sha256": "<sha256>",
"version": 1
}Errors
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID