> ## Documentation Index
> Fetch the complete documentation index at: https://stytch.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Authenticate

> Authenticates the discovery email OTP, returning an intermediate session token and the list of discovered organizations. Calls the `POST /sdk/v1/b2b/otps/email/discovery/authenticate` endpoint.

## Parameters

<ParamField body="emailAddress" type="String" required />

<ParamField body="code" type="String" required />

## Returns

<ResponseField name="requestId" type="String" required />

<ResponseField name="emailAddress" type="String" required />

<ResponseField name="intermediateSessionToken" type="String" required />

<ResponseField name="discoveredOrganizations" type="List<ApiDiscoveryV1DiscoveredOrganization>" required>
  <Expandable title="properties">
    <ResponseField name="memberAuthenticated" type="Boolean" required />

    <ResponseField name="organization" type="ApiOrganizationV1Organization?">
      <Expandable title="properties">
        <ResponseField name="organizationId" type="String" required />

        <ResponseField name="organizationName" type="String" required />

        <ResponseField name="organizationLogoUrl" type="String" required />

        <ResponseField name="organizationSlug" type="String" required />

        <ResponseField name="ssoJitProvisioning" type="String" required />

        <ResponseField name="ssoJitProvisioningAllowedConnections" type="List<String>" required />

        <ResponseField name="ssoActiveConnections" type="List<ApiOrganizationV1ActiveSSOConnection>" required />

        <ResponseField name="emailAllowedDomains" type="List<String>" required />

        <ResponseField name="emailJitProvisioning" type="String" required />

        <ResponseField name="emailInvites" type="String" required />

        <ResponseField name="authMethods" type="String" required />

        <ResponseField name="allowedAuthMethods" type="List<String>" required />

        <ResponseField name="mfaPolicy" type="String" required />

        <ResponseField name="rbacEmailImplicitRoleAssignments" type="List<ApiOrganizationV1EmailImplicitRoleAssignment>" required />

        <ResponseField name="mfaMethods" type="String" required />

        <ResponseField name="allowedMfaMethods" type="List<String>" required />

        <ResponseField name="oauthTenantJitProvisioning" type="String" required />

        <ResponseField name="claimedEmailDomains" type="List<String>" required />

        <ResponseField name="firstPartyConnectedAppsAllowedType" type="String" required />

        <ResponseField name="allowedFirstPartyConnectedApps" type="List<String>" required />

        <ResponseField name="thirdPartyConnectedAppsAllowedType" type="String" required />

        <ResponseField name="allowedThirdPartyConnectedApps" type="List<String>" required />

        <ResponseField name="customRoles" type="List<ApiOrganizationV1CustomRole>" required />

        <ResponseField name="trustedMetadata" type="Map<String, JsonElement>?" />

        <ResponseField name="createdAt" type="Instant?" />

        <ResponseField name="updatedAt" type="Instant?" />

        <ResponseField name="organizationExternalId" type="String?" />

        <ResponseField name="ssoDefaultConnectionId" type="String?" />

        <ResponseField name="scimActiveConnection" type="ApiOrganizationV1ActiveSCIMConnection?" />

        <ResponseField name="allowedOauthTenants" type="Map<String, JsonElement>?" />
      </Expandable>
    </ResponseField>

    <ResponseField name="membership" type="ApiDiscoveryV1Membership?">
      <Expandable title="properties">
        <ResponseField name="type" type="String" required />

        <ResponseField name="details" type="Map<String, JsonElement>?" />

        <ResponseField name="member" type="ApiOrganizationV1Member?" />
      </Expandable>
    </ResponseField>

    <ResponseField name="primaryRequired" type="ApiB2bSessionV1PrimaryRequired?">
      <Expandable title="properties">
        <ResponseField name="allowedAuthMethods" type="List<String>" required />
      </Expandable>
    </ResponseField>

    <ResponseField name="mfaRequired" type="ApiB2bMfaV1MfaRequired?">
      <Expandable title="properties">
        <ResponseField name="memberOptions" type="ApiB2bMfaV1MemberOptions?" />

        <ResponseField name="secondaryAuthInitiated" type="String?" />
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="statusCode" type="Int" required />

<ResponseField name="mfaRequired" type="ApiB2bMfaV1MfaRequired?">
  Present when the member must complete an MFA step before the session is fully established.

  <Expandable title="properties">
    <ResponseField name="memberOptions" type="ApiB2bMfaV1MemberOptions?">
      <Expandable title="properties">
        <ResponseField name="mfaPhoneNumber" type="String" required />

        <ResponseField name="totpRegistrationId" type="String" required />
      </Expandable>
    </ResponseField>

    <ResponseField name="secondaryAuthInitiated" type="String?" />
  </Expandable>
</ResponseField>

<RequestExample>
  ```kotlin theme={null}
  StytchB2B.otp.email.discovery.authenticate(
      B2BOTPsEmailDiscoveryAuthenticateParameters(
          emailAddress = "user@example.com",
          code = "123456",
      )
  )
  ```
</RequestExample>
