Saltar al contenido
Notificado

Verificación del abogado

9 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

myKyc

GET/_x/query/my-kyc

Miembro de la firmaPermiso: kyc:submit

myKyc

Parámetros de myKyc
NombreDóndeTipoObligatorio
userIdConsultastring (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/my-kyc?userId=<userId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/my-kyc?userId=<userId>', {
  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

changeSirnaEmail

POST/api/change-sirna-email

Miembro de la firmaPermiso: kyc:submit

changeSirnaEmail

Parámetros de changeSirnaEmail
NombreDóndeTipoObligatorio
sirnaEmailCuerpostring 3–320Sí
curl
curl -X POST 'https://www.notificado.co/api/change-sirna-email' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"sirnaEmail":"<sirnaEmail>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/change-sirna-email', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "sirnaEmail": "<sirnaEmail>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "currentSirnaEmail": "<currentSirnaEmail>",
  "expiresInMinutes": -9007199254740991,
  "requestId": "<requestId>",
  "sentTo": "<sentTo>"
}

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

confirmSirnaEmailChange

POST/api/confirm-sirna-email-change

Miembro de la firmaPermiso: kyc:submit

confirmSirnaEmailChange

Parámetros de confirmSirnaEmailChange
NombreDóndeTipoObligatorio
codeCuerpostring 6–12Sí
curl
curl -X POST 'https://www.notificado.co/api/confirm-sirna-email-change' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"code":"<code>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/confirm-sirna-email-change', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "code": "<code>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "pendingSirnaEmail": "<pendingSirnaEmail>",
  "sirnaEmail": "<sirnaEmail>",
  "status": "awaiting_staff"
}

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

confirmUpload

POST/v1/confirm-upload

Miembro de la firmaPermiso: or(kyc:submit, affiliate:self, affiliate:self, case:write)/v1 · token BearerIdempotency-KeyHerramienta MCP: confirmUpload

Step 2: checks the stored bytes and answers the document id for attachDocument.

Parámetros de confirmUpload
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
contentTypeCuerpostring 1–127Sí
filenameCuerpostring 1–255Sí
keyCuerpostring 1–512Sí
kindCuerpo"certificado_vigencia" | "cedula" | "tarjeta_profesional" | "provenance_proof" | "otro" | "einvoice_xml" | "einvoice_pdf"Sí
curl
curl -X POST 'https://www.notificado.co/v1/confirm-upload' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN" \
  -H "idempotency-key: $(uuidgen)" \
  -H 'content-type: application/json' \
  -d '{
  "contentType": "<contentType>",
  "filename": "<filename>",
  "key": "<key>",
  "kind": "certificado_vigencia"
}'
TypeScript
const response = await fetch('https://www.notificado.co/v1/confirm-upload', {
  method: 'POST',
  headers: { authorization: `Bearer ${token}`, 'content-type': 'application/json', 'idempotency-key': crypto.randomUUID() },
  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>",
  "pageCount": -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

proveSirnaEmail

POST/api/prove-sirna-email

Miembro de la firmaPermiso: kyc:submit

proveSirnaEmail

Parámetros de proveSirnaEmail
NombreDóndeTipoObligatorio
codeCuerpostring 6–12Sí
curl
curl -X POST 'https://www.notificado.co/api/prove-sirna-email' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"code":"<code>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/prove-sirna-email', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "code": "<code>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "evaluation": "<evaluation>",
  "proven": true,
  "reasons": [
    "<reasons>"
  ],
  "status": "<status>"
}

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

requestUpload

POST/v1/request-upload

Miembro de la firmaPermiso: or(kyc:submit, affiliate:self, affiliate:self, case:write)/v1 · token BearerIdempotency-KeyHerramienta MCP: requestUpload

Step 1: a signed PUT grant for one PDF, PNG or JPEG (20 MB). PUT the bytes, then confirmUpload(key).

Parámetros de requestUpload
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
contentTypeCuerpostring 1–127Sí
filenameCuerpostring 1–255Sí
kindCuerpo"certificado_vigencia" | "cedula" | "tarjeta_profesional" | "provenance_proof" | "otro" | "einvoice_xml" | "einvoice_pdf"Sí
sizeCuerpointeger 0–9007199254740991Sí
curl
curl -X POST 'https://www.notificado.co/v1/request-upload' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN" \
  -H "idempotency-key: $(uuidgen)" \
  -H 'content-type: application/json' \
  -d '{
  "contentType": "<contentType>",
  "filename": "<filename>",
  "kind": "certificado_vigencia",
  "size": 0
}'
TypeScript
const response = await fetch('https://www.notificado.co/v1/request-upload', {
  method: 'POST',
  headers: { authorization: `Bearer ${token}`, 'content-type': 'application/json', 'idempotency-key': crypto.randomUUID() },
  body: JSON.stringify({
    "contentType": "<contentType>",
    "filename": "<filename>",
    "kind": "certificado_vigencia",
    "size": 0
  }),
});
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

resendPossessionCode

POST/api/resend-possession-code

Miembro de la firmaPermiso: kyc:submit

resendPossessionCode

curl
curl -X POST 'https://www.notificado.co/api/resend-possession-code' \
  -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/resend-possession-code', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({}),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "alreadyProven": true,
  "sentTo": "<sentTo>"
}

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

setMyName

POST/api/set-my-name

Miembro de la firmaPermiso: kyc:submit

setMyName

Parámetros de setMyName
NombreDóndeTipoObligatorio
fullNameCuerpostring 3–200Sí
curl
curl -X POST 'https://www.notificado.co/api/set-my-name' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"fullName":"<fullName>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/set-my-name', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "fullName": "<fullName>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "ok": true,
  "reverify": true
}

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

submitKyc

POST/api/submit-kyc

Miembro de la firmaPermiso: kyc:submit

submitKyc

Parámetros de submitKyc
NombreDóndeTipoObligatorio
cedulaCuerpostring 1–32Sí
documentTypeCuerpo"CC" | "CE" | "PPT"No
fullNameCuerpostring 1–200Sí
sirnaEmailCuerpostring (email) ≤ 320Sí
tarjetaProfesionalCuerpostring 1–32Sí
vigenciaDocumentIdCuerpostring (uuid)No
curl
curl -X POST 'https://www.notificado.co/api/submit-kyc' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{
  "cedula": "<cedula>",
  "fullName": "<fullName>",
  "sirnaEmail": "<sirnaEmail>",
  "tarjetaProfesional": "<tarjetaProfesional>"
}'
TypeScript
const response = await fetch('https://www.notificado.co/api/submit-kyc', {
  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>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "identityId": "<identityId>",
  "resubmitted": true,
  "status": "<status>",
  "warnings": [
    "<warnings>"
  ]
}

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