> ## 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.

# Start

> Initiates a discovery OAuth browser flow for the provider, allowing the user to enumerate organizations before authenticating. Opens a browser session at `https://{domain}/b2b/public/oauth/{provider}/discovery/start`, then automatically calls `POST /sdk/v1/b2b/oauth/discovery/authenticate`, returning discovered organizations and an intermediate session token.

## Parameters

<ParamField body="discoveryRedirectUrl" type="String?" />

<ParamField body="customScopes" type="List<String>?" />

<ParamField body="providerParams" type="Map<String, String>?" />

## Returns

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

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

<ResponseField name="emailAddress" 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="providerType" type="String" required />

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

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

<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>
  ```swift theme={null}
  let params = B2BOAuthDiscoveryStartParameters(discoveryRedirectUrl: "myapp://discovery")
  let response = try await StytchB2B.oauth.google.discovery.start(params)
  ```
</RequestExample>
