Skip to main content

Connect portal error types

The 8x8 Connect web portal works through its own API, the portal API. When the portal API cannot complete a request, it returns the error as problem details: a JSON object in the format that RFC 9457 defines, with the media type application/problem+json. Each problem type listed on this page has its own page that explains what causes it and what to do.

These pages are for developers and support engineers who handle or troubleshoot these responses, for example when a sign-in, a sign-up or a password reset fails. The public 8x8 messaging and voice APIs report errors in other formats: see API error codes for the messaging APIs and Voice status codes and status messages for voice.


Response format​

Responses for the types listed on this page carry the following members. The first six are always present.

MemberDescription
typeThe identifier of the problem type, a URI such as https://developer.8x8.com/connect/errors/session-expired. It never changes, and it is also the address of the type's page.
titleA short summary of the problem type in English, such as Session expired. It is stable, but do not parse it or branch on it.
statusThe HTTP status code, as a number. It always equals the HTTP status of the response.
codeThe problem type's code, such as session_expired. It is present for every type on this page, and it matches the last segment of type, with underscores in place of hyphens.
instanceThe path of the request that failed, without the query string.
timestampWhen the problem occurred, in ISO 8601 format in UTC, with milliseconds.
errorIdAn identifier for this occurrence of the problem, present on most responses. Quote it when you contact 8x8 support. If a response has no errorId, quote the value of its X-Request-ID response header instead. Treat it as an opaque string, because its format varies.
errorA legacy member that older clients read. Its value can differ between responses of the same type, so never use it for branching.

For example, a request whose signed-in session is no longer valid gets HTTP status 401 and this body:

{
"type": "https://developer.8x8.com/connect/errors/session-expired",
"title": "Session expired",
"status": 401,
"instance": "/api/…",
"timestamp": "2026-10-26T03:14:15.926Z",
"code": "session_expired"
}

The response can carry other members, such as the legacy error member and an errorId. Branch only on code or type.

When type is about:blank, the problem has no listed type and no page here: the HTTP status carries the information, and title is the standard reason phrase for that status, such as Bad Request.


Handling these errors​

  • Check that the response's media type is application/problem+json before you read these members.
  • Identify the problem by its type or its code. Compare type as an exact string (type URIs have no trailing slash), or compare code with the values listed on this page.
  • Never branch on title or on the legacy error member.
  • Do not identify the problem by its HTTP status alone. Several types share a status, and some types are returned with more than one status. For example, not every 401 means that the session has expired.
  • Handle an about:blank problem, or a type that you do not recognize, by its HTTP status. Such a response can carry a code member with a value that is not listed on this page. Treat it like any other problem without a listed type.
  • Do not fetch type URIs at runtime. A type URI identifies the problem, and the page at that address is written for people. RFC 9457 advises clients not to dereference type URIs automatically.
  • Ignore members that you do not recognize.
  • Retry only when the type's page says so, and follow its guidance on when and how often. Most of these problems are not temporary, so resending the same request usually gets the same answer. Never retry in a tight loop, and send a new security-check token with each attempt at a request that needs one.

Problem types​

These tables list every problem type that has a page, grouped by the flow in which it usually occurs. Some types also occur in other flows, and each type's page describes when it happens.

Sign-in​

Returned when a sign-in is refused, for example after the user enters an email address and password.

Problem typecodeHTTP status
Invalid credentialsinvalid_credentials400, 401
Account suspendedaccount_suspended401, 422
No access to this applicationno_application_access401
Password expiredpassword_expired400

Session​

Returned when a request needs a signed-in session, or a sign-in in progress, that is no longer valid.

Problem typecodeHTTP status
Session expiredsession_expired401

Two-factor verification​

Returned during two-factor sign-in, when the user requests a verification code or enters one.

Problem typecodeHTTP status
Mobile number missingmobile_number_missing422
Verification code not sentcode_send_failed422
Invalid verification codeinvalid_verification_code422

Password reset and change​

Returned when a user sets a new password from an emailed link, such as a password reset link, or changes the password while signed in.

Problem typecodeHTTP status
Reset link invalidreset_token_invalid400, 422
Password does not meet policypassword_policy_violation422
Password recently usedpassword_recently_used422

Sign-up​

Returned while someone signs up for 8x8 Connect, from starting the sign-up to verifying the email address and activating the account.

Problem typecodeHTTP status
Disposable email addressdisposable_email400
Sign-up not allowedsignup_not_allowed400, 401
Verification link invalidverification_token_invalid400
Registration failedregistration_failed400

Single sign-on​

Returned when a user signs in with single sign-on.

Problem typecodeHTTP status
Single sign-on request failedsso_request_failed400

If the email address is not accepted for single sign-on, the answer is Invalid credentials with status 400 instead.

Security checks and limits​

Returned when a request does not pass the security check that protects it, or when sign-in is blocked after too many failed attempts.

Problem typecodeHTTP status
Security check requiredcaptcha_required400
Too many attemptstoo_many_attempts401