Saltar al contenido

Referencia de la API

Verificación del abogado

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

Cada ejemplo supone una sesión iniciada; cómo obtenerla está en Autenticación

myKyc

GET/_x/query/my-kyc

Miembro de la firmaPermiso: kyc:submit

myKyc

Parámetros de myKyc
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
userIdConsultastring (uuid)Sí
_firstConsultainteger 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterConsultastringthe endCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/my-kyc?orgId=<orgId>&userId=<userId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/my-kyc?orgId=<orgId>&userId=<userId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

submitKyc

POST/api/kycs/submit

Miembro de la firmaPermiso: kyc:submit

submitKyc

Parámetros de submitKyc
NombreDóndeTipoObligatorio
cedulaCuerpostring 5–12Sí
fullNameCuerpostring 1–200Sí
sirnaEmailCuerpostring (email) ≤ 320Sí
tarjetaProfesionalCuerpostring 1–12Sí
vigenciaDocumentIdCuerpostring (uuid)Sí
curl
curl -X POST 'https://www.notificado.co/api/kycs/submit' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{
  "cedula": "<cedula>",
  "fullName": "<fullName>",
  "sirnaEmail": "<sirnaEmail>",
  "tarjetaProfesional": "<tarjetaProfesional>",
  "vigenciaDocumentId": "<vigenciaDocumentId>"
}'
TypeScript
const response = await fetch('https://www.notificado.co/api/kycs/submit', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "cedula": "<cedula>",
    "fullName": "<fullName>",
    "sirnaEmail": "<sirnaEmail>",
    "tarjetaProfesional": "<tarjetaProfesional>",
    "vigenciaDocumentId": "<vigenciaDocumentId>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "profileId": "<profileId>",
  "resubmitted": true,
  "status": "<status>",
  "warnings": [
    "<warnings>"
  ]
}

Errores

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

confirmUpload

POST/api/uploads/confirm

Miembro de la firmaPermiso: or(kyc:submit, case:write)Herramienta MCP: confirmUpload

Step 2 of 2 of an upload, after the PUT to requestUpload's url succeeded: pass the same key, kind, filename and contentType. The server reads back the STORED bytes, checks their real type (PDF, PNG or JPEG) and size, computes the SHA-256 and returns the document (id, sha256, bytes). Use the id with attachDocument. Refused when the PUT never landed or the bytes are not what was granted — re-run requestUpload rather than retrying.

Parámetros de confirmUpload
NombreDóndeTipoObligatorio
contentTypeCuerpostring 1–127Sí
filenameCuerpostring 1–255Sí
keyCuerpostring 1–512Sí
kindCuerpo"certificado_vigencia" | "cedula" | "tarjeta_profesional" | "provenance_proof" | "otro"Sí
curl
curl -X POST 'https://www.notificado.co/api/uploads/confirm' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{
  "contentType": "<contentType>",
  "filename": "<filename>",
  "key": "<key>",
  "kind": "certificado_vigencia"
}'
TypeScript
const response = await fetch('https://www.notificado.co/api/uploads/confirm', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "contentType": "<contentType>",
    "filename": "<filename>",
    "key": "<key>",
    "kind": "certificado_vigencia"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "bytes": -9007199254740991,
  "createdAt": "2026-09-25T15:00:00Z",
  "filename": "<filename>",
  "id": "<id>",
  "kind": "certificado_vigencia",
  "mime": "<mime>",
  "sha256": "<sha256>"
}

Errores

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

requestUpload

POST/api/uploads/request

Miembro de la firmaPermiso: or(kyc:submit, case:write)Herramienta MCP: requestUpload

Step 1 of 2 of an upload: get a signed, single-use PUT grant for ONE file. Pass kind (use "otro" for a notification attachment; certificado_vigencia | cedula | tarjeta_profesional are KYC files; provenance_proof proves where a recipient address came from), filename, contentType (application/pdf | image/png | image/jpeg) and size in bytes (at most 20 MB). Then HTTP PUT the raw bytes to `url` (prefix a path with the server origin) with header Content-Type exactly `contentType`, before `expiresAt` (epoch ms), and call confirmUpload with the returned `key`. Never send file bytes through this tool.

Parámetros de requestUpload
NombreDóndeTipoObligatorio
contentTypeCuerpostring 1–127Sí
filenameCuerpostring 1–255Sí
kindCuerpo"certificado_vigencia" | "cedula" | "tarjeta_profesional" | "provenance_proof" | "otro"Sí
sizeCuerpointeger 0–9007199254740991No
curl
curl -X POST 'https://www.notificado.co/api/uploads/request' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{
  "contentType": "<contentType>",
  "filename": "<filename>",
  "kind": "certificado_vigencia"
}'
TypeScript
const response = await fetch('https://www.notificado.co/api/uploads/request', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "contentType": "<contentType>",
    "filename": "<filename>",
    "kind": "certificado_vigencia"
  }),
});
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
  • 403 policy denied
  • 422 X_BODY_INVALID