Every example assumes a signed-in session; how to get one is in Authentication
GET/_x/query/member-list
Firm memberPermission: org:read
memberList
Parameters of memberList| Name | In | Type | Required |
|---|
orgId | Query | string (uuid) | Yes |
_first | Query | integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) | No |
_after | Query | stringthe endCursor 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();
Example response
200[
null
]
Errors
400 X_INPUT_INVALID or X_CURSOR_INVALID403 policy denied
GET/_x/query/my-mfa
Firm memberPermission: org:read
myMfa
Parameters of myMfa| Name | In | Type | Required |
|---|
userId | Query | string (uuid) | Yes |
_first | Query | integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) | No |
_after | Query | stringthe endCursor 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();
Example response
200[
null
]
Errors
400 X_INPUT_INVALID or X_CURSOR_INVALID403 policy denied
GET/_x/query/my-onboarding-emails
Firm memberPermission: org:read
myOnboardingEmails
Parameters of myOnboardingEmails| Name | In | Type | Required |
|---|
userId | Query | string (uuid) | Yes |
_first | Query | integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) | No |
_after | Query | stringthe endCursor 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();
Example response
200[
null
]
Errors
400 X_INPUT_INVALID or X_CURSOR_INVALID403 policy denied
GET/_x/query/my-orgs
Firm memberPermission: org:read
myOrgs
Parameters of myOrgs| Name | In | Type | Required |
|---|
userId | Query | string (uuid) | Yes |
_first | Query | integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) | No |
_after | Query | stringthe endCursor 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();
Example response
200[
null
]
Errors
400 X_INPUT_INVALID or X_CURSOR_INVALID403 policy denied
GET/_x/query/my-preferences
Firm memberPermission: org:read
myPreferences
Parameters of myPreferences| Name | In | Type | Required |
|---|
userId | Query | string (uuid) | Yes |
_first | Query | integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) | No |
_after | Query | stringthe endCursor 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();
Example response
200[
null
]
Errors
400 X_INPUT_INVALID or X_CURSOR_INVALID403 policy denied
GET/_x/query/my-sessions
Firm memberPermission: org:read
mySessions
Parameters of mySessions| Name | In | Type | Required |
|---|
userId | Query | string (uuid) | Yes |
_first | Query | integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) | No |
_after | Query | stringthe endCursor 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();
Example response
200[
null
]
Errors
400 X_INPUT_INVALID or X_CURSOR_INVALID403 policy denied
GET/_x/query/pending-invites
Firm memberPermission: org:manage
pendingInvites
Parameters of pendingInvites| Name | In | Type | Required |
|---|
orgId | Query | string (uuid) | Yes |
_first | Query | integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) | No |
_after | Query | stringthe endCursor 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();
Example response
200[
null
]
Errors
400 X_INPUT_INVALID or X_CURSOR_INVALID403 policy denied
GET/_x/query/seat-usage
Firm memberPermission: org:read
seatUsage
Parameters of seatUsage| Name | In | Type | Required |
|---|
orgId | Query | string (uuid) | Yes |
_first | Query | integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) | No |
_after | Query | stringthe endCursor 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();
Example response
200[
null
]
Errors
400 X_INPUT_INVALID or X_CURSOR_INVALID403 policy denied
POST/api/invites/accept
Firm memberPermission: org:accept-invite
acceptInvite
Parameters of acceptInvite| Name | In | Type | Required |
|---|
token | Body | string 1–2048 | Yes |
curlcurl -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>"}'
TypeScriptconst 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_INVALID403 policy denied422 X_BODY_INVALID
POST/api/invites/revoke
Firm memberPermission: org:manage
revokeInvite
Parameters of revokeInvite| Name | In | Type | Required |
|---|
id | Body | string 1–64 | Yes |
curlcurl -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>"}'
TypeScriptconst 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_INVALID403 policy denied422 X_BODY_INVALID
POST/api/member-roles/set
Firm memberPermission: org:manage
setMemberRole
Parameters of setMemberRole| Name | In | Type | Required |
|---|
role | Body | "owner" | "lawyer" | "paralegal" | "billing" | "viewer" | Yes |
userId | Body | string (uuid) | Yes |
curlcurl -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>"}'
TypeScriptconst 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_INVALID403 policy denied422 X_BODY_INVALID
POST/api/members/invite
Firm memberPermission: org:manage
inviteMember
Parameters of inviteMember| Name | In | Type | Required |
|---|
email | Body | string (email) ≤ 320 | Yes |
role | Body | "owner" | "lawyer" | "paralegal" | "billing" | "viewer" | Yes |
curlcurl -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"}'
TypeScriptconst 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_INVALID403 policy denied422 X_BODY_INVALID
POST/api/members/remove
Firm memberPermission: org:manage
removeMember
Parameters of removeMember| Name | In | Type | Required |
|---|
userId | Body | string (uuid) | Yes |
curlcurl -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>"}'
TypeScriptconst 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_INVALID403 policy denied422 X_BODY_INVALID
POST/api/mfas/confirm
Firm memberPermission: org:read
confirmMfa
Parameters of confirmMfa| Name | In | Type | Required |
|---|
code | Body | string 6–8 | Yes |
secret | Body | string 16–128 | Yes |
curlcurl -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>"}'
TypeScriptconst 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_INVALID403 policy denied422 X_BODY_INVALID
POST/api/mfas/disable
Firm memberPermission: org:read
disableMfa
Parameters of disableMfa| Name | In | Type | Required |
|---|
code | Body | string 6–64 | Yes |
password | Body | string 1–1024 | Yes |
curlcurl -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>"}'
TypeScriptconst 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_INVALID403 policy denied422 X_BODY_INVALID
POST/api/mfas/enrol
Firm memberPermission: org:read
enrolMfa
curlcurl -X POST 'https://www.notificado.co/api/mfas/enrol' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{}'
TypeScriptconst 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_INVALID403 policy denied422 X_BODY_INVALID
POST/api/onboarding-emails/set
Firm memberPermission: org:read
setOnboardingEmails
Parameters of setOnboardingEmails| Name | In | Type | Required |
|---|
emails | Body | "on" | "off" | Yes |
returnTo | Body | string 1–2048 | No |
curlcurl -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"}'
TypeScriptconst 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_INVALID403 policy denied422 X_BODY_INVALID
POST/api/orgs/switch
Firm memberPermission: org:read
switchOrg
Parameters of switchOrg| Name | In | Type | Required |
|---|
next | Body | string 1–2048 | No |
orgId | Body | string (uuid) | Yes |
curlcurl -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>"}'
TypeScriptconst 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_INVALID403 policy denied422 X_BODY_INVALID
POST/api/other-sessions/revoke
Firm memberPermission: org:read
revokeOtherSessions
curlcurl -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 '{}'
TypeScriptconst 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_INVALID403 policy denied422 X_BODY_INVALID
POST/api/preferences/set
Firm memberPermission: org:read
setPreferences
Parameters of setPreferences| Name | In | Type | Required |
|---|
locale | Body | "es-co" | "en" | "auto" | null | No |
returnTo | Body | string 1–2048 | No |
theme | Body | "system" | "light" | "dark" | No |
curlcurl -X POST 'https://www.notificado.co/api/preferences/set' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{}'
TypeScriptconst 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_INVALID403 policy denied422 X_BODY_INVALID
POST/api/require-mfas/set
Firm memberPermission: org:manage
setRequireMfa
Parameters of setRequireMfa| Name | In | Type | Required |
|---|
requireMfa | Body | "on" | "off" | Yes |
curlcurl -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"}'
TypeScriptconst 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_INVALID403 policy denied422 X_BODY_INVALID
POST/api/require-send-approvals/set
Firm memberPermission: org:manage
setRequireSendApproval
Parameters of setRequireSendApproval| Name | In | Type | Required |
|---|
requireSendApproval | Body | "on" | "off" | Yes |
curlcurl -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"}'
TypeScriptconst 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_INVALID403 policy denied422 X_BODY_INVALID
POST/api/sessions/revoke
Firm memberPermission: org:read
revokeSession
Parameters of revokeSession| Name | In | Type | Required |
|---|
sessionId | Body | string 1–64 | Yes |
curlcurl -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>"}'
TypeScriptconst 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_INVALID403 policy denied422 X_BODY_INVALID