Skip to content

Sign-in and account

13 operations, each with its parameters, curl and TypeScript examples ready to copy, and its errors.

Operations marked /v1 authenticate with an agent token; the rest, with a panel session. How both work is in Authentication

cancelEmailChange

POST/api/cancel-email-change

Firm memberPermission: auth:email-change-link

cancelEmailChange

Parameters of cancelEmailChange
NameInTypeRequired
tokenBodystring 1–2048Yes
curl
curl -X POST 'https://www.notificado.co/api/cancel-email-change' \
  -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/cancel-email-change', {
  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
{
  "ok": true
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

completeGoogleSignUp

POST/api/complete-google-sign-up

No sessionPermission: auth:anonymous

completeGoogleSignUp

Parameters of completeGoogleSignUp
NameInTypeRequired
attributionBodystring 0–2048No
nextBodystring 0–2048No
orgNameBodystring 0–200Yes
referralCodeBodystring 0–40No
termsVersionBodystring 1–64No
curl
curl -X POST 'https://www.notificado.co/api/complete-google-sign-up' \
  -H 'content-type: application/json' \
  -d '{"orgName":"<orgName>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/complete-google-sign-up', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({
    "orgName": "<orgName>"
  }),
});
const result = await response.json();
Example response
200
{
  "ok": true,
  "userId": "<userId>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

confirmEmailChange

POST/api/confirm-email-change

Firm memberPermission: auth:email-change-link

confirmEmailChange

Parameters of confirmEmailChange
NameInTypeRequired
tokenBodystring 1–2048Yes
curl
curl -X POST 'https://www.notificado.co/api/confirm-email-change' \
  -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/confirm-email-change', {
  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
{
  "ok": true
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

confirmGoogleCode

POST/api/confirm-google-code

No sessionPermission: auth:anonymous

confirmGoogleCode

Parameters of confirmGoogleCode
NameInTypeRequired
codeBodystring 1–64Yes
nextBodystring 0–2048No
curl
curl -X POST 'https://www.notificado.co/api/confirm-google-code' \
  -H 'content-type: application/json' \
  -d '{"code":"<code>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/confirm-google-code', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({
    "code": "<code>"
  }),
});
const result = await response.json();
Example response
200
{
  "ok": true,
  "userId": "<userId>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

confirmSignInCode

POST/api/confirm-sign-in-code

No sessionPermission: auth:anonymous

confirmSignInCode

Parameters of confirmSignInCode
NameInTypeRequired
codeBodystring 1–64Yes
nextBodystring 0–2048No
curl
curl -X POST 'https://www.notificado.co/api/confirm-sign-in-code' \
  -H 'content-type: application/json' \
  -d '{"code":"<code>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/confirm-sign-in-code', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({
    "code": "<code>"
  }),
});
const result = await response.json();
Example response
200
{
  "ok": true,
  "userId": "<userId>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

requestPasswordReset

POST/api/request-password-reset

No sessionPermission: auth:anonymous

requestPasswordReset

Parameters of requestPasswordReset
NameInTypeRequired
captchaTokenBodystring 0–4096No
cf-turnstile-responseBodystring 0–4096No
emailBodystring 0–320Yes
h-captcha-responseBodystring 0–4096No
localeBodystring 0–16No
curl
curl -X POST 'https://www.notificado.co/api/request-password-reset' \
  -H 'content-type: application/json' \
  -d '{"email":"<email>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/request-password-reset', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({
    "email": "<email>"
  }),
});
const result = await response.json();
Example response
200
{
  "ok": true
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

resetPassword

POST/api/reset-password

No sessionPermission: auth:anonymous

resetPassword

Parameters of resetPassword
NameInTypeRequired
passwordBodystring 0–1024Yes
passwordConfirmBodystring 0–1024No
tokenBodystring 0–2048Yes
curl
curl -X POST 'https://www.notificado.co/api/reset-password' \
  -H 'content-type: application/json' \
  -d '{"password":"<password>","token":"<token>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/reset-password', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({
    "password": "<password>",
    "token": "<token>"
  }),
});
const result = await response.json();
Example response
200
{
  "ok": true
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

signIn

POST/api/sign-in

No sessionPermission: auth:anonymous

signIn

Parameters of signIn
NameInTypeRequired
codeBodystring 0–64No
emailBodystring 1–320Yes
localeBodystring 0–16No
nextBodystring 0–2048No
passwordBodystring 1–1024Yes
curl
curl -X POST 'https://www.notificado.co/api/sign-in' \
  -H 'content-type: application/json' \
  -d '{"email":"<email>","password":"<password>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/sign-in', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({
    "email": "<email>",
    "password": "<password>"
  }),
});
const result = await response.json();
Example response
200
{
  "ok": true,
  "userId": "<userId>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

signOut

POST/api/sign-out

Firm memberPermission: auth:sign-out

signOut

curl
curl -X POST 'https://www.notificado.co/api/sign-out' \
  -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/sign-out', {
  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
{
  "ok": true
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

signUp

POST/api/sign-up

No sessionPermission: auth:anonymous

signUp

Parameters of signUp
NameInTypeRequired
attributionBodystring 0–2048No
captchaTokenBodystring 0–4096No
cf-turnstile-responseBodystring 0–4096No
emailBodystring 1–320Yes
h-captcha-responseBodystring 0–4096No
localeBodystring 0–16No
nameBodystring 1–200Yes
nextBodystring 0–2048No
orgNameBodystring 0–200Yes
passwordBodystring 1–1024Yes
referralCodeBodystring 0–40No
termsVersionBodystring 1–64No
curl
curl -X POST 'https://www.notificado.co/api/sign-up' \
  -H 'content-type: application/json' \
  -d '{
  "email": "<email>",
  "name": "<name>",
  "orgName": "<orgName>",
  "password": "<password>"
}'
TypeScript
const response = await fetch('https://www.notificado.co/api/sign-up', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({
    "email": "<email>",
    "name": "<name>",
    "orgName": "<orgName>",
    "password": "<password>"
  }),
});
const result = await response.json();
Example response
200
{
  "ok": true,
  "orgId": "<orgId>",
  "userId": "<userId>"
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

unsubscribeOnboarding

POST/api/unsubscribe-onboarding

Firm memberPermission: growth:unsubscribe-link

unsubscribeOnboarding

Parameters of unsubscribeOnboarding
NameInTypeRequired
List-UnsubscribeBodystring 1–32No
tBodystring 1–512No
curl
curl -X POST 'https://www.notificado.co/api/unsubscribe-onboarding' \
  -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/unsubscribe-onboarding', {
  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
{
  "ok": true
}

Errors

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds