Share via

Entra External ID - Native Authentication - Sign Up Flow - AADSTS55200: The continuation_token is invalid

HA 0 Reputation points
2026-05-05T16:49:30.3+00:00

Got an error when trying to issue an access token after a user was created in Entra External ID.

{
    "error": "invalid_request",
    "error_description": "AADSTS55200: The continuation_token is invalid. Trace ID: c8625f72-8930-48c9-9841-6d91b3330e00 Correlation ID: cdde90f4-c2fd-4206-a24e-b3662a45e8a2 Timestamp: 2026-05-05 16:34:44Z",
    "error_codes": [
        55200
    ],
    "timestamp": "2026-05-05 16:34:44Z",
    "trace_id": "c8625f72-8930-48c9-9841-6d91b3330e00",
    "correlation_id": "cdde90f4-c2fd-4206-a24e-b3662a45e8a2"
}

Created the user using the following sign-up flow:

https://learn.microsoft.com/en-us/entra/identity-platform/reference-native-authentication-api?tabs=emailOtp#api-reference-for-sign-up

POST /signup/v1.0/start (OK)

POST /signup/v1.0/challenge (OK)

POST /signup/v1.0/continue (OK)

POST /oauth2/v2.0/token (FAILED)

Content-Type: application/x-www-form-urlencoded

client_id: [client ID]

continuation_token: [continuation token from previous endpoint]

grant_type: password

password: [password]

scope: [list of scopes]

Microsoft Security | Microsoft Entra | Microsoft Entra External ID

1 answer

Sort by: Most helpful
  1. Q&A Assist
    2026-05-05T16:49:43.41+00:00
    AI generated content. This question contains an answer created with AI from Q&A Assist. Learn more

    The error indicates that the continuation_token used in the final call of the sign-up flow is invalid. In the native authentication sign-up flow, continuation tokens are tightly scoped to a specific step and must be:

    1. Taken from the immediately preceding successful response.
    2. Used with the correct endpoint and grant_type expected for that step.
    3. Unexpired and unmodified.

    From the documented behavior for sign-up:

    • /signup/v1.0/start and /signup/v1.0/challenge return a continuation_token that is then used with /signup/v1.0/continue.
    • When submitting a one-time passcode (OTP) sent to email, the request to /signup/v1.0/continue must use:
        POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/signup/v1.0/continue
        Content-Type: application/x-www-form-urlencoded
        continuation_token=...
        &client_id=...
        &grant_type=oob
        &oob={otp_code}
      
    • When additional user attributes are required, the same /signup/v1.0/continue endpoint is used with the continuation token and the required attributes.

    The context also defines error semantics:

    • invalid_request can be returned when continuation token validation fails or when required parameters (such as client_id) are missing or invalid.
    • invalid_grant is used when the continuation token is invalid in some flows, but for sign-up the docs explicitly state invalid_request can be used when continuation token validation fails.
    • expired_token is returned when the continuation token is expired.

    Given the sample error:

    "error": "invalid_request",
    "error_description": "AADSTS55200: The continuation_token is invalid.
    

    this matches the documented case where continuation token validation fails.

    To resolve this in the sign-up flow:

    1. Ensure the correct endpoint and grant_type are used for the step:
      • For OTP verification during sign-up: /signup/v1.0/continue with grant_type=oob and oob={otp_code}.
      • Do not use grant_type=password with the sign-up continuation token unless the documentation for that specific step explicitly requires it (the provided context only shows grant_type=oob for OTP in sign-up and reset-password flows).
    2. Ensure the continuation_token is the latest one:
      • Use the continuation_token returned in the last successful response (for example, from /signup/v1.0/challenge or from an attributes_required response) without modification.
    3. If the flow returns attributes_required or verification_required:
      • Read required_attributes or unverified_attributes from the error response.
      • Call /signup/v1.0/continue again with the same continuation token plus the required attributes or verification data.
    4. If the token might be expired:
      • The service would typically return expired_token, but if any doubt exists, restart the sign-up flow from /signup/v1.0/start to obtain a fresh continuation token and repeat the documented sequence.

    In short, the continuation token from the sign-up flow cannot be used arbitrarily with grant_type=password. It must be used exactly as specified for the sign-up step (for example, with grant_type=oob when submitting the OTP) against /signup/v1.0/continue, and always taken from the immediately preceding successful response.


    References:

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.