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
GET/_x/query/member-list
Miembro de la firmaPermiso: org:read
memberList
Parámetros de memberList| Nombre | Dónde | Tipo | Obligatorio |
|---|
orgId | Consulta | string (uuid) | Sí |
_first | Consulta | integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) | No |
_after | Consulta | stringthe nextCursor a previous page answered; needs _first | No |
curlcurl 'https://www.notificado.co/_x/query/member-list?orgId=<orgId>' \
-b cookies.txt
TypeScriptconst response = await fetch('https://www.notificado.co/_x/query/member-list?orgId=<orgId>', {
headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200[
null
]
Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied429 X_RATE_LIMITED — retry after Retry-After seconds
GET/_x/query/my-agent-connections
Miembro de la firmaPermiso: org:read
myAgentConnections
Parámetros de myAgentConnections| Nombre | Dónde | Tipo | Obligatorio |
|---|
_first | Consulta | integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) | No |
_after | Consulta | stringthe nextCursor a previous page answered; needs _first | No |
curlcurl 'https://www.notificado.co/_x/query/my-agent-connections' \
-b cookies.txt
TypeScriptconst response = await fetch('https://www.notificado.co/_x/query/my-agent-connections', {
headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200[
null
]
Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied429 X_RATE_LIMITED — retry after Retry-After seconds
GET/_x/query/my-mfa
Miembro de la firmaPermiso: org:read
myMfa
Parámetros de myMfa| Nombre | Dónde | Tipo | Obligatorio |
|---|
userId | Consulta | string (uuid) | Sí |
_first | Consulta | integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) | No |
_after | Consulta | stringthe nextCursor a previous page answered; needs _first | No |
curlcurl 'https://www.notificado.co/_x/query/my-mfa?userId=<userId>' \
-b cookies.txt
TypeScriptconst response = await fetch('https://www.notificado.co/_x/query/my-mfa?userId=<userId>', {
headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200[
null
]
Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied429 X_RATE_LIMITED — retry after Retry-After seconds
GET/_x/query/my-onboarding-emails
Miembro de la firmaPermiso: org:read
myOnboardingEmails
Parámetros de myOnboardingEmails| Nombre | Dónde | Tipo | Obligatorio |
|---|
userId | Consulta | string (uuid) | Sí |
_first | Consulta | integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) | No |
_after | Consulta | stringthe nextCursor a previous page answered; needs _first | No |
curlcurl 'https://www.notificado.co/_x/query/my-onboarding-emails?userId=<userId>' \
-b cookies.txt
TypeScriptconst response = await fetch('https://www.notificado.co/_x/query/my-onboarding-emails?userId=<userId>', {
headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200[
null
]
Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied429 X_RATE_LIMITED — retry after Retry-After seconds
GET/_x/query/my-orgs
Miembro de la firmaPermiso: org:read
myOrgs
Parámetros de myOrgs| Nombre | Dónde | Tipo | Obligatorio |
|---|
userId | Consulta | string (uuid) | Sí |
_first | Consulta | integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) | No |
_after | Consulta | stringthe nextCursor a previous page answered; needs _first | No |
curlcurl 'https://www.notificado.co/_x/query/my-orgs?userId=<userId>' \
-b cookies.txt
TypeScriptconst response = await fetch('https://www.notificado.co/_x/query/my-orgs?userId=<userId>', {
headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200[
null
]
Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied429 X_RATE_LIMITED — retry after Retry-After seconds
GET/_x/query/my-preferences
Miembro de la firmaPermiso: org:read
myPreferences
Parámetros de myPreferences| Nombre | Dónde | Tipo | Obligatorio |
|---|
userId | Consulta | string (uuid) | Sí |
_first | Consulta | integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) | No |
_after | Consulta | stringthe nextCursor a previous page answered; needs _first | No |
curlcurl 'https://www.notificado.co/_x/query/my-preferences?userId=<userId>' \
-b cookies.txt
TypeScriptconst response = await fetch('https://www.notificado.co/_x/query/my-preferences?userId=<userId>', {
headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200[
null
]
Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied429 X_RATE_LIMITED — retry after Retry-After seconds
GET/_x/query/my-sessions
Miembro de la firmaPermiso: org:read
mySessions
Parámetros de mySessions| Nombre | Dónde | Tipo | Obligatorio |
|---|
userId | Consulta | string (uuid) | Sí |
_first | Consulta | integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) | No |
_after | Consulta | stringthe nextCursor a previous page answered; needs _first | No |
curlcurl 'https://www.notificado.co/_x/query/my-sessions?userId=<userId>' \
-b cookies.txt
TypeScriptconst response = await fetch('https://www.notificado.co/_x/query/my-sessions?userId=<userId>', {
headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200[
null
]
Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied429 X_RATE_LIMITED — retry after Retry-After seconds
GET/_x/query/oauth-viewer
Miembro de la firmaPermiso: org:read
oauthViewer
Parámetros de oauthViewer| Nombre | Dónde | Tipo | Obligatorio |
|---|
_first | Consulta | integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) | No |
_after | Consulta | stringthe nextCursor a previous page answered; needs _first | No |
curlcurl 'https://www.notificado.co/_x/query/oauth-viewer' \
-b cookies.txt
TypeScriptconst response = await fetch('https://www.notificado.co/_x/query/oauth-viewer', {
headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200[
null
]
Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied429 X_RATE_LIMITED — retry after Retry-After seconds
GET/_x/query/onboarding-progress
Miembro de la firmaPermiso: dashboard:read
onboardingProgress
Parámetros de onboardingProgress| Nombre | Dónde | Tipo | Obligatorio |
|---|
orgId | Consulta | string (uuid) | Sí |
userId | Consulta | string (uuid) | Sí |
_first | Consulta | integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) | No |
_after | Consulta | stringthe nextCursor a previous page answered; needs _first | No |
curlcurl 'https://www.notificado.co/_x/query/onboarding-progress?orgId=<orgId>&userId=<userId>' \
-b cookies.txt
TypeScriptconst response = await fetch('https://www.notificado.co/_x/query/onboarding-progress?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_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied429 X_RATE_LIMITED — retry after Retry-After seconds
GET/v1/org-activity
Miembro de la firmaPermiso: activity:read/v1 · token BearerHerramienta MCP: orgActivity
Who in the firm did what, newest first; filter by actorId, action or category.
Parámetros de orgActivity| Nombre | Dónde | Tipo | Obligatorio |
|---|
action | Consulta | string 1–80 | No |
actorId | Consulta | string (uuid) | No |
category | Consulta | "cases" | "notifications" | "evidence" | "members" | "agents" | "billing" | No |
cursor | Consulta | string 1–64 | No |
limit | Consulta | integer 1–100 | No |
orgId | Consulta | string (uuid) | Sí |
_first | Consulta | integer 1–100page size; present, the response is the page envelope rather than the bare rows (1 to 100) | No |
_after | Consulta | stringthe nextCursor a previous page answered; needs _first | No |
curlcurl 'https://www.notificado.co/v1/org-activity?orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScriptconst response = await fetch('https://www.notificado.co/v1/org-activity?orgId=<orgId>', {
headers: { authorization: `Bearer ${token}` },
});
const result = await response.json();
Ejemplo de respuesta
200[
null
]
Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied429 X_RATE_LIMITED — retry after Retry-After seconds
GET/_x/query/pending-invites
Miembro de la firmaPermiso: org:manage
pendingInvites
Parámetros de pendingInvites| Nombre | Dónde | Tipo | Obligatorio |
|---|
orgId | Consulta | string (uuid) | Sí |
_first | Consulta | integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) | No |
_after | Consulta | stringthe nextCursor a previous page answered; needs _first | No |
curlcurl 'https://www.notificado.co/_x/query/pending-invites?orgId=<orgId>' \
-b cookies.txt
TypeScriptconst response = await fetch('https://www.notificado.co/_x/query/pending-invites?orgId=<orgId>', {
headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200[
null
]
Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied429 X_RATE_LIMITED — retry after Retry-After seconds
GET/_x/query/pending-legal-acceptance
Miembro de la firmaPermiso: org:read
pendingLegalAcceptance
Parámetros de pendingLegalAcceptance| Nombre | Dónde | Tipo | Obligatorio |
|---|
userId | Consulta | string (uuid) | Sí |
_first | Consulta | integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) | No |
_after | Consulta | stringthe nextCursor a previous page answered; needs _first | No |
curlcurl 'https://www.notificado.co/_x/query/pending-legal-acceptance?userId=<userId>' \
-b cookies.txt
TypeScriptconst response = await fetch('https://www.notificado.co/_x/query/pending-legal-acceptance?userId=<userId>', {
headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200[
null
]
Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied429 X_RATE_LIMITED — retry after Retry-After seconds
GET/_x/query/seat-usage
Miembro de la firmaPermiso: org:read
seatUsage
Parámetros de seatUsage| Nombre | Dónde | Tipo | Obligatorio |
|---|
orgId | Consulta | string (uuid) | Sí |
_first | Consulta | integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) | No |
_after | Consulta | stringthe nextCursor a previous page answered; needs _first | No |
curlcurl 'https://www.notificado.co/_x/query/seat-usage?orgId=<orgId>' \
-b cookies.txt
TypeScriptconst response = await fetch('https://www.notificado.co/_x/query/seat-usage?orgId=<orgId>', {
headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200[
null
]
Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/accept-invite
Miembro de la firmaPermiso: org:accept-invite
acceptInvite
Parámetros de acceptInvite| Nombre | Dónde | Tipo | Obligatorio |
|---|
token | Cuerpo | string 1–2048 | Sí |
curlcurl -X POST 'https://www.notificado.co/api/accept-invite' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"token":"<token>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/accept-invite', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"token": "<token>"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"orgId": "<orgId>",
"redirectTo": "<redirectTo>",
"role": "<role>",
"status": "joined"
}
Errores
400 X_INPUT_INVALID403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/accept-legal-version
Miembro de la firmaPermiso: org:read
acceptLegalVersion
Parámetros de acceptLegalVersion| Nombre | Dónde | Tipo | Obligatorio |
|---|
returnTo | Cuerpo | string 1–2048 | No |
version | Cuerpo | string 1–64 | Sí |
curlcurl -X POST 'https://www.notificado.co/api/accept-legal-version' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"version":"<version>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/accept-legal-version', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"version": "<version>"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"pending": true,
"version": "<version>"
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/change-password
Miembro de la firmaPermiso: org:read
changePassword
Parámetros de changePassword| Nombre | Dónde | Tipo | Obligatorio |
|---|
code | Cuerpo | string 0–64 | No |
currentPassword | Cuerpo | string 0–1024 | No |
password | Cuerpo | string 1–1024 | Sí |
passwordConfirm | Cuerpo | string 1–1024 | Sí |
revokeTokens | Cuerpo | boolean | "on" | "off" | No |
curlcurl -X POST 'https://www.notificado.co/api/change-password' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"password":"<password>","passwordConfirm":"<passwordConfirm>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/change-password', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"password": "<password>",
"passwordConfirm": "<passwordConfirm>"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"kind": "changed",
"ok": true,
"tokensRevoked": 1
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/confirm-mfa
Miembro de la firmaPermiso: org:read
confirmMfa
Parámetros de confirmMfa| Nombre | Dónde | Tipo | Obligatorio |
|---|
code | Cuerpo | string 6–8 | Sí |
password | Cuerpo | string 1–1024 | No |
secret | Cuerpo | string 16–128 | Sí |
curlcurl -X POST 'https://www.notificado.co/api/confirm-mfa' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"code":"<code>","secret":"<secret>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/confirm-mfa', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"code": "<code>",
"secret": "<secret>"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"recoveryCodes": [
"<recoveryCodes>"
]
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/disable-mfa
Miembro de la firmaPermiso: org:read
disableMfa
Parámetros de disableMfa| Nombre | Dónde | Tipo | Obligatorio |
|---|
code | Cuerpo | string 6–64 | Sí |
password | Cuerpo | string 1–1024 | No |
curlcurl -X POST 'https://www.notificado.co/api/disable-mfa' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"code":"<code>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/disable-mfa', {
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{
"ok": true
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/dismiss-onboarding
Miembro de la firmaPermiso: org:read
dismissOnboarding
curlcurl -X POST 'https://www.notificado.co/api/dismiss-onboarding' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/dismiss-onboarding', {
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{
"dismissed": true
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/enrol-mfa
Miembro de la firmaPermiso: org:read
enrolMfa
curlcurl -X POST 'https://www.notificado.co/api/enrol-mfa' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/enrol-mfa', {
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{
"secret": "<secret>",
"uri": "<uri>"
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/invite-member
Miembro de la firmaPermiso: org:manage
inviteMember
Parámetros de inviteMember| Nombre | Dónde | Tipo | Obligatorio |
|---|
code | Cuerpo | string 0–64 | No |
email | Cuerpo | string (email) ≤ 320 | Sí |
password | Cuerpo | string 0–1024 | No |
role | Cuerpo | "owner" | "lawyer" | "paralegal" | "billing" | "viewer" | Sí |
curlcurl -X POST 'https://www.notificado.co/api/invite-member' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"email":"<email>","role":"owner"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/invite-member', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"email": "<email>",
"role": "owner"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"email": "<email>",
"expiresAt": "2026-09-25T15:00:00Z",
"role": "<role>"
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/leave-org
Miembro de la firmaPermiso: org:read
leaveOrg
Parámetros de leaveOrg| Nombre | Dónde | Tipo | Obligatorio |
|---|
confirm | Cuerpo | string 1–8 | No |
curlcurl -X POST 'https://www.notificado.co/api/leave-org' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/leave-org', {
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{
"nextOrgId": "<nextOrgId>",
"ok": true
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/regenerate-recovery-codes
Miembro de la firmaPermiso: org:read
regenerateRecoveryCodes
Parámetros de regenerateRecoveryCodes| Nombre | Dónde | Tipo | Obligatorio |
|---|
code | Cuerpo | string 6–16 | Sí |
curlcurl -X POST 'https://www.notificado.co/api/regenerate-recovery-codes' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"code":"<code>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/regenerate-recovery-codes', {
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{
"recoveryCodes": [
"<recoveryCodes>"
]
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/reissue-constancia
Miembro de la firmaPermiso: org:manage
reissueConstancia
Parámetros de reissueConstancia| Nombre | Dónde | Tipo | Obligatorio |
|---|
notificationId | Cuerpo | string (uuid) | Sí |
orgId | Cuerpo | string (uuid) | Sí |
curlcurl -X POST 'https://www.notificado.co/api/reissue-constancia' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"notificationId":"<notificationId>","orgId":"<orgId>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/reissue-constancia', {
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();
Ejemplo de respuesta
200{
"queued": true,
"version": 2
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/remove-member
Miembro de la firmaPermiso: org:manage
removeMember
Parámetros de removeMember| Nombre | Dónde | Tipo | Obligatorio |
|---|
code | Cuerpo | string 0–64 | No |
password | Cuerpo | string 0–1024 | No |
userId | Cuerpo | string (uuid) | Sí |
curlcurl -X POST 'https://www.notificado.co/api/remove-member' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"userId":"<userId>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/remove-member', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"userId": "<userId>"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"createdAt": "2026-09-25T15:00:00Z",
"id": "<id>",
"role": "owner",
"userId": "<userId>"
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/rename-org
Miembro de la firmaPermiso: org:manage
renameOrg
Parámetros de renameOrg| Nombre | Dónde | Tipo | Obligatorio |
|---|
name | Cuerpo | string 1–200 | Sí |
curlcurl -X POST 'https://www.notificado.co/api/rename-org' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"name":"<name>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/rename-org', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"name": "<name>"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"createdAt": "2026-09-25T15:00:00Z",
"id": "<id>",
"kind": "customer",
"name": "<name>",
"requireMfa": true
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/request-email-change
Miembro de la firmaPermiso: org:read
requestEmailChange
Parámetros de requestEmailChange| Nombre | Dónde | Tipo | Obligatorio |
|---|
code | Cuerpo | string 0–64 | No |
newEmail | Cuerpo | string (email) | Sí |
password | Cuerpo | string 0–1024 | No |
curlcurl -X POST 'https://www.notificado.co/api/request-email-change' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"newEmail":"<newEmail>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/request-email-change', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"newEmail": "<newEmail>"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"newEmail": "<newEmail>",
"ok": true
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/resend-invite
Miembro de la firmaPermiso: org:manage
resendInvite
Parámetros de resendInvite| Nombre | Dónde | Tipo | Obligatorio |
|---|
id | Cuerpo | string 1–64 | Sí |
curlcurl -X POST 'https://www.notificado.co/api/resend-invite' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"id":"<id>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/resend-invite', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"id": "<id>"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"email": "<email>",
"expiresAt": "2026-09-25T15:00:00Z"
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/revoke-invite
Miembro de la firmaPermiso: org:manage
revokeInvite
Parámetros de revokeInvite| Nombre | Dónde | Tipo | Obligatorio |
|---|
id | Cuerpo | string 1–64 | Sí |
curlcurl -X POST 'https://www.notificado.co/api/revoke-invite' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"id":"<id>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/revoke-invite', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"id": "<id>"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"email": "<email>",
"id": "<id>",
"role": "<role>"
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/revoke-my-agent-connections
Miembro de la firmaPermiso: org:read
revokeMyAgentConnections
curlcurl -X POST 'https://www.notificado.co/api/revoke-my-agent-connections' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/revoke-my-agent-connections', {
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{
"revoked": 1
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/revoke-other-sessions
Miembro de la firmaPermiso: org:read
revokeOtherSessions
curlcurl -X POST 'https://www.notificado.co/api/revoke-other-sessions' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/revoke-other-sessions', {
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{
"revoked": 1,
"tokensRevoked": 1
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/revoke-session
Miembro de la firmaPermiso: org:read
revokeSession
Parámetros de revokeSession| Nombre | Dónde | Tipo | Obligatorio |
|---|
sessionId | Cuerpo | string 1–64 | Sí |
curlcurl -X POST 'https://www.notificado.co/api/revoke-session' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"sessionId":"<sessionId>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/revoke-session', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"sessionId": "<sessionId>"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"ok": true
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/set-member-role
Miembro de la firmaPermiso: org:manage
setMemberRole
Parámetros de setMemberRole| Nombre | Dónde | Tipo | Obligatorio |
|---|
code | Cuerpo | string 0–64 | No |
password | Cuerpo | string 0–1024 | No |
role | Cuerpo | "owner" | "lawyer" | "paralegal" | "billing" | "viewer" | Sí |
userId | Cuerpo | string (uuid) | Sí |
curlcurl -X POST 'https://www.notificado.co/api/set-member-role' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"role":"owner","userId":"<userId>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/set-member-role', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"role": "owner",
"userId": "<userId>"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"createdAt": "2026-09-25T15:00:00Z",
"id": "<id>",
"role": "owner",
"userId": "<userId>"
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/set-onboarding-emails
Miembro de la firmaPermiso: org:read
setOnboardingEmails
Parámetros de setOnboardingEmails| Nombre | Dónde | Tipo | Obligatorio |
|---|
emails | Cuerpo | "on" | "off" | Sí |
returnTo | Cuerpo | string 1–2048 | No |
curlcurl -X POST 'https://www.notificado.co/api/set-onboarding-emails' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"emails":"on"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/set-onboarding-emails', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"emails": "on"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"emails": true
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/set-preferences
Miembro de la firmaPermiso: org:read
setPreferences
Parámetros de setPreferences| Nombre | Dónde | Tipo | Obligatorio |
|---|
locale | Cuerpo | "es-co" | "en" | "auto" | null | No |
returnTo | Cuerpo | string 1–2048 | No |
theme | Cuerpo | "system" | "light" | "dark" | No |
curlcurl -X POST 'https://www.notificado.co/api/set-preferences' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/set-preferences', {
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{
"locale": "es-co",
"theme": "system"
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/set-require-mfa
Miembro de la firmaPermiso: org:manage
setRequireMfa
Parámetros de setRequireMfa| Nombre | Dónde | Tipo | Obligatorio |
|---|
code | Cuerpo | string 0–64 | No |
password | Cuerpo | string 0–1024 | No |
requireMfa | Cuerpo | "on" | "off" | Sí |
curlcurl -X POST 'https://www.notificado.co/api/set-require-mfa' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"requireMfa":"on"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/set-require-mfa', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"requireMfa": "on"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"requireMfa": true
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/switch-org
Miembro de la firmaPermiso: org:read
switchOrg
Parámetros de switchOrg| Nombre | Dónde | Tipo | Obligatorio |
|---|
next | Cuerpo | string 1–2048 | No |
orgId | Cuerpo | string (uuid) | Sí |
curlcurl -X POST 'https://www.notificado.co/api/switch-org' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"orgId":"<orgId>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/switch-org', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"orgId": "<orgId>"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"orgId": "<orgId>"
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds
POST/api/transfer-ownership
Miembro de la firmaPermiso: org:manage
transferOwnership
Parámetros de transferOwnership| Nombre | Dónde | Tipo | Obligatorio |
|---|
code | Cuerpo | string 0–64 | No |
password | Cuerpo | string 0–1024 | No |
userId | Cuerpo | string (uuid) | Sí |
curlcurl -X POST 'https://www.notificado.co/api/transfer-ownership' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"userId":"<userId>"}'
TypeScriptconst response = await fetch('https://www.notificado.co/api/transfer-ownership', {
method: 'POST',
headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
body: JSON.stringify({
"userId": "<userId>"
}),
});
const result = await response.json();
Ejemplo de respuesta
200{
"ok": true
}
Errores
400 X_INPUT_INVALID401 X_UNAUTHENTICATED — no credential, or one that did not resolve403 policy denied422 X_BODY_INVALID429 X_RATE_LIMITED — retry after Retry-After seconds