Skip to content

API reference

Firm and members

23 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

memberList

GET/_x/query/member-list

Firm memberPermission: org:read

memberList

Parameters of memberList
NameInTypeRequired
orgIdQuerystring (uuid)Yes
_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/member-list?orgId=<orgId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/member-list?orgId=<orgId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Example response
200
[
  null
]

Errors

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

myMfa

GET/_x/query/my-mfa

Firm memberPermission: org:read

myMfa

Parameters of myMfa
NameInTypeRequired
userIdQuerystring (uuid)Yes
_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/my-mfa?userId=<userId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/my-mfa?userId=<userId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Example response
200
[
  null
]

Errors

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

myOnboardingEmails

GET/_x/query/my-onboarding-emails

Firm memberPermission: org:read

myOnboardingEmails

Parameters of myOnboardingEmails
NameInTypeRequired
userIdQuerystring (uuid)Yes
_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/my-onboarding-emails?userId=<userId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/my-onboarding-emails?userId=<userId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Example response
200
[
  null
]

Errors

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

myOrgs

GET/_x/query/my-orgs

Firm memberPermission: org:read

myOrgs

Parameters of myOrgs
NameInTypeRequired
userIdQuerystring (uuid)Yes
_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/my-orgs?userId=<userId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/my-orgs?userId=<userId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Example response
200
[
  null
]

Errors

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

myPreferences

GET/_x/query/my-preferences

Firm memberPermission: org:read

myPreferences

Parameters of myPreferences
NameInTypeRequired
userIdQuerystring (uuid)Yes
_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/my-preferences?userId=<userId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/my-preferences?userId=<userId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Example response
200
[
  null
]

Errors

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

mySessions

GET/_x/query/my-sessions

Firm memberPermission: org:read

mySessions

Parameters of mySessions
NameInTypeRequired
userIdQuerystring (uuid)Yes
_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/my-sessions?userId=<userId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/my-sessions?userId=<userId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Example response
200
[
  null
]

Errors

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

pendingInvites

GET/_x/query/pending-invites

Firm memberPermission: org:manage

pendingInvites

Parameters of pendingInvites
NameInTypeRequired
orgIdQuerystring (uuid)Yes
_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/pending-invites?orgId=<orgId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/pending-invites?orgId=<orgId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Example response
200
[
  null
]

Errors

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

seatUsage

GET/_x/query/seat-usage

Firm memberPermission: org:read

seatUsage

Parameters of seatUsage
NameInTypeRequired
orgIdQuerystring (uuid)Yes
_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/seat-usage?orgId=<orgId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/seat-usage?orgId=<orgId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Example response
200
[
  null
]

Errors

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

acceptInvite

POST/api/invites/accept

Firm memberPermission: org:accept-invite

acceptInvite

Parameters of acceptInvite
NameInTypeRequired
tokenBodystring 1–2048Yes
curl
curl -X POST 'https://www.notificado.co/api/invites/accept' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"token":"<token>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/invites/accept', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "token": "<token>"
  }),
});
const result = await response.json();
Example response
200
{
  "orgId": "<orgId>",
  "redirectTo": "<redirectTo>",
  "role": "<role>",
  "status": "joined"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

revokeInvite

POST/api/invites/revoke

Firm memberPermission: org:manage

revokeInvite

Parameters of revokeInvite
NameInTypeRequired
idBodystring 1–64Yes
curl
curl -X POST 'https://www.notificado.co/api/invites/revoke' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"id":"<id>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/invites/revoke', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "id": "<id>"
  }),
});
const result = await response.json();
Example response
200
{
  "email": "<email>",
  "id": "<id>",
  "role": "<role>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

setMemberRole

POST/api/member-roles/set

Firm memberPermission: org:manage

setMemberRole

Parameters of setMemberRole
NameInTypeRequired
roleBody"owner" | "lawyer" | "paralegal" | "billing" | "viewer"Yes
userIdBodystring (uuid)Yes
curl
curl -X POST 'https://www.notificado.co/api/member-roles/set' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"role":"owner","userId":"<userId>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/member-roles/set', {
  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();
Example response
200
{
  "createdAt": "2026-09-25T15:00:00Z",
  "id": "<id>",
  "role": "owner",
  "userId": "<userId>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

inviteMember

POST/api/members/invite

Firm memberPermission: org:manage

inviteMember

Parameters of inviteMember
NameInTypeRequired
emailBodystring (email) ≤ 320Yes
roleBody"owner" | "lawyer" | "paralegal" | "billing" | "viewer"Yes
curl
curl -X POST 'https://www.notificado.co/api/members/invite' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"email":"<email>","role":"owner"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/members/invite', {
  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();
Example response
200
{
  "email": "<email>",
  "expiresAt": "2026-09-25T15:00:00Z",
  "role": "<role>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

removeMember

POST/api/members/remove

Firm memberPermission: org:manage

removeMember

Parameters of removeMember
NameInTypeRequired
userIdBodystring (uuid)Yes
curl
curl -X POST 'https://www.notificado.co/api/members/remove' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"userId":"<userId>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/members/remove', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "userId": "<userId>"
  }),
});
const result = await response.json();
Example response
200
{
  "createdAt": "2026-09-25T15:00:00Z",
  "id": "<id>",
  "role": "owner",
  "userId": "<userId>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

confirmMfa

POST/api/mfas/confirm

Firm memberPermission: org:read

confirmMfa

Parameters of confirmMfa
NameInTypeRequired
codeBodystring 6–8Yes
secretBodystring 16–128Yes
curl
curl -X POST 'https://www.notificado.co/api/mfas/confirm' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"code":"<code>","secret":"<secret>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/mfas/confirm', {
  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();
Example response
200
{
  "recoveryCodes": [
    "<recoveryCodes>"
  ]
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

disableMfa

POST/api/mfas/disable

Firm memberPermission: org:read

disableMfa

Parameters of disableMfa
NameInTypeRequired
codeBodystring 6–64Yes
passwordBodystring 1–1024Yes
curl
curl -X POST 'https://www.notificado.co/api/mfas/disable' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"code":"<code>","password":"<password>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/mfas/disable', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "code": "<code>",
    "password": "<password>"
  }),
});
const result = await response.json();
Example response
200
{
  "ok": true
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

enrolMfa

POST/api/mfas/enrol

Firm memberPermission: org:read

enrolMfa

curl
curl -X POST 'https://www.notificado.co/api/mfas/enrol' \
  -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/mfas/enrol', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({}),
});
const result = await response.json();
Example response
200
{
  "secret": "<secret>",
  "uri": "<uri>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

setOnboardingEmails

POST/api/onboarding-emails/set

Firm memberPermission: org:read

setOnboardingEmails

Parameters of setOnboardingEmails
NameInTypeRequired
emailsBody"on" | "off"Yes
returnToBodystring 1–2048No
curl
curl -X POST 'https://www.notificado.co/api/onboarding-emails/set' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"emails":"on"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/onboarding-emails/set', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "emails": "on"
  }),
});
const result = await response.json();
Example response
200
{
  "emails": true
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

switchOrg

POST/api/orgs/switch

Firm memberPermission: org:read

switchOrg

Parameters of switchOrg
NameInTypeRequired
nextBodystring 1–2048No
orgIdBodystring (uuid)Yes
curl
curl -X POST 'https://www.notificado.co/api/orgs/switch' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"orgId":"<orgId>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/orgs/switch', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "orgId": "<orgId>"
  }),
});
const result = await response.json();
Example response
200
{
  "orgId": "<orgId>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

revokeOtherSessions

POST/api/other-sessions/revoke

Firm memberPermission: org:read

revokeOtherSessions

curl
curl -X POST 'https://www.notificado.co/api/other-sessions/revoke' \
  -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/other-sessions/revoke', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({}),
});
const result = await response.json();
Example response
200
{
  "revoked": 1,
  "tokensRevoked": 1
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

setPreferences

POST/api/preferences/set

Firm memberPermission: org:read

setPreferences

Parameters of setPreferences
NameInTypeRequired
localeBody"es-co" | "en" | "auto" | nullNo
returnToBodystring 1–2048No
themeBody"system" | "light" | "dark"No
curl
curl -X POST 'https://www.notificado.co/api/preferences/set' \
  -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/preferences/set', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({}),
});
const result = await response.json();
Example response
200
{
  "locale": "es-co",
  "theme": "system"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

setRequireMfa

POST/api/require-mfas/set

Firm memberPermission: org:manage

setRequireMfa

Parameters of setRequireMfa
NameInTypeRequired
requireMfaBody"on" | "off"Yes
curl
curl -X POST 'https://www.notificado.co/api/require-mfas/set' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"requireMfa":"on"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/require-mfas/set', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "requireMfa": "on"
  }),
});
const result = await response.json();
Example response
200
{
  "requireMfa": true
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

setRequireSendApproval

POST/api/require-send-approvals/set

Firm memberPermission: org:manage

setRequireSendApproval

Parameters of setRequireSendApproval
NameInTypeRequired
requireSendApprovalBody"on" | "off"Yes
curl
curl -X POST 'https://www.notificado.co/api/require-send-approvals/set' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"requireSendApproval":"on"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/require-send-approvals/set', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "requireSendApproval": "on"
  }),
});
const result = await response.json();
Example response
200
{
  "requireSendApproval": true
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

revokeSession

POST/api/sessions/revoke

Firm memberPermission: org:read

revokeSession

Parameters of revokeSession
NameInTypeRequired
sessionIdBodystring 1–64Yes
curl
curl -X POST 'https://www.notificado.co/api/sessions/revoke' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"sessionId":"<sessionId>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/sessions/revoke', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "sessionId": "<sessionId>"
  }),
});
const result = await response.json();
Example response
200
{
  "ok": true
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID