Skip to main content
POST
/
v1
/
b2b
/
sessions
/
migrate
C#
// POST /v1/b2b/sessions/migrate
const stytch = require('stytch');

const client = new stytch.B2BClient({
  project_id: '${projectId}',
  secret: '${secret}',
});

const params = {
  session_token: "mZAYn5aLEqKUlZ_Ad9U_fWr38GaAQ1oFAhT8ds245v7Q",
  organization_id: "organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931",
};

client.Sessions.Migrate(params)
  .then(resp => { console.log(resp) })
  .catch(err => { console.log(err) });
// POST /v1/b2b/sessions/migrate
package main

import (
"context"
"log"

"github.com/stytchauth/stytch-go/v18/stytch/b2b/b2bstytchapi"
"github.com/stytchauth/stytch-go/v18/stytch/b2b/sessions"
)

func main() {
client, err := b2bstytchapi.NewClient(
"${projectId}",
"${secret}",
)
if err != nil {
log.Fatalf("error instantiating client: %v", err)
}

params := &sessions.MigrateParams{
SessionToken: "mZAYn5aLEqKUlZ_Ad9U_fWr38GaAQ1oFAhT8ds245v7Q",
OrganizationID: "organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931",
}

resp, err := client.Sessions.Migrate(context.Background(), params)
if err != nil {
log.Fatalf("error in method call: %v", err)
}

log.Println(resp)
}
// POST /v1/b2b/sessions/migrate
package com.example;

import com.stytch.java.b2b.models.sessions.MigrateRequest;
import com.stytch.java.b2b.StytchB2BClient;
import com.stytch.java.common.StytchResult;

public class Main {
public static void main(String[] args) {
StytchB2BClient.configure("${projectId}", "${secret}");

MigrateRequest params = new MigrateRequest();
params.setSessionToken("mZAYn5aLEqKUlZ_Ad9U_fWr38GaAQ1oFAhT8ds245v7Q");
params.setOrganizationId("organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931");

Object result = StytchB2BClient.getSessions().migrate(params);
if (result instanceof StytchResult.Success) {
System.out.println(((StytchResult.Success) result).getValue());
} else {
System.out.println(((StytchResult.Error) result).getException());
}
}
}
// POST /v1/b2b/sessions/migrate
package com.example

import com.stytch.java.b2b.StytchB2BClient
import com.stytch.java.b2b.models.sessions.MigrateRequest

fun main() {
StytchB2BClient.configure(
projectId = "${projectId}",
secret = "${secret}",
)

when (
val result =
StytchB2BClient.sessions.migrate(
MigrateRequest(
sessionToken = "mZAYn5aLEqKUlZ_Ad9U_fWr38GaAQ1oFAhT8ds245v7Q",
organizationId = "organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931",
),
)
) {
is StytchResult.Success -> println(result.value)
is StytchResult.Error -> println(result.exception)
}
}
// POST /v1/b2b/sessions/migrate
const stytch = require('stytch');

const client = new stytch.B2BClient({
project_id: '${projectId}',
secret: '${secret}',
});

const params = {
session_token: "mZAYn5aLEqKUlZ_Ad9U_fWr38GaAQ1oFAhT8ds245v7Q",
organization_id: "organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931",
};

client.sessions.migrate(params)
.then(resp => { console.log(resp) })
.catch(err => { console.log(err) });
$response = $client->sessions->migrate([
'session_token' => 'mZAYn5aLEqKUlZ_Ad9U_fWr38GaAQ1oFAhT8ds245v7Q',
'organization_id' => 'organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931',
]);
# POST /v1/b2b/sessions/migrate
from stytch import B2BClient

client = B2BClient(
project_id="${projectId}",
secret="${secret}",
)

resp = client.sessions.migrate(
session_token="mZAYn5aLEqKUlZ_Ad9U_fWr38GaAQ1oFAhT8ds245v7Q",
organization_id="organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931",
)

print(resp)
# frozen_string_literal: true

# POST /v1/b2b/sessions/migrate
require 'stytch'

client = StytchB2B::Client.new(
project_id: "${projectId}",
secret: "${secret}"
)

resp = client.sessions.migrate(
session_token: "mZAYn5aLEqKUlZ_Ad9U_fWr38GaAQ1oFAhT8ds245v7Q",
organization_id: "organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931"

)

puts resp
// POST /v1/b2b/sessions/migrate
use stytch::b2b::client::Client;
use stytch::b2b::sessions::MigrateRequest;

fn main() {
let client = Client::new("${projectId}", "${secret}").unwrap();
let resp = client.sessions.migrate(
MigrateRequest{
session_token: "mZAYn5aLEqKUlZ_Ad9U_fWr38GaAQ1oFAhT8ds245v7Q",
organization_id: "organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931",
..Default::default()
}
).await;
println!("The response is {:?}", resp);
}
# POST /v1/b2b/sessions/migrate
curl --request POST \
--url https://test.stytch.com/v1/b2b/sessions/migrate \
-u '${projectId}:${secret}' \
-H 'Content-Type: application/json' \
-d '{
"session_token": "mZAYn5aLEqKUlZ_Ad9U_fWr38GaAQ1oFAhT8ds245v7Q",
"organization_id": "organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931"
}'
{
  "request_id": "<string>",
  "member_id": "<string>",
  "session_token": "<string>",
  "session_jwt": "<string>",
  "member": {
    "organization_id": "<string>",
    "member_id": "<string>",
    "email_address": "<string>",
    "status": "<string>",
    "name": "<string>",
    "sso_registrations": [
      {
        "connection_id": "<string>",
        "external_id": "<string>",
        "registration_id": "<string>",
        "sso_attributes": {}
      }
    ],
    "is_breakglass": true,
    "member_password_id": "<string>",
    "oauth_registrations": [
      {
        "provider_type": "<string>",
        "provider_subject": "<string>",
        "member_oauth_registration_id": "<string>",
        "profile_picture_url": "<string>",
        "locale": "<string>"
      }
    ],
    "email_address_verified": true,
    "mfa_phone_number_verified": true,
    "is_admin": true,
    "totp_registration_id": "<string>",
    "retired_email_addresses": [
      {
        "email_id": "<string>",
        "email_address": "<string>"
      }
    ],
    "is_locked": true,
    "mfa_enrolled": true,
    "mfa_phone_number": "<string>",
    "default_mfa_method": "<string>",
    "roles": [
      {
        "role_id": "<string>",
        "sources": [
          {
            "type": "<string>",
            "details": {}
          }
        ]
      }
    ],
    "trusted_metadata": {},
    "untrusted_metadata": {},
    "created_at": "<string>",
    "updated_at": "<string>",
    "scim_registration": {
      "connection_id": "<string>",
      "registration_id": "<string>",
      "external_id": "<string>",
      "scim_attributes": {
        "user_name": "<string>",
        "id": "<string>",
        "external_id": "<string>",
        "active": true,
        "groups": [
          {
            "value": "<string>",
            "display": "<string>"
          }
        ],
        "display_name": "<string>",
        "nick_name": "<string>",
        "profile_url": "<string>",
        "user_type": "<string>",
        "title": "<string>",
        "preferred_language": "<string>",
        "locale": "<string>",
        "timezone": "<string>",
        "emails": [
          {
            "value": "<string>",
            "type": "<string>",
            "primary": true
          }
        ],
        "phone_numbers": [
          {
            "value": "<string>",
            "type": "<string>",
            "primary": true
          }
        ],
        "addresses": [
          {
            "formatted": "<string>",
            "street_address": "<string>",
            "locality": "<string>",
            "region": "<string>",
            "postal_code": "<string>",
            "country": "<string>",
            "type": "<string>",
            "primary": true
          }
        ],
        "ims": [
          {
            "value": "<string>",
            "type": "<string>",
            "primary": true
          }
        ],
        "photos": [
          {
            "value": "<string>",
            "type": "<string>",
            "primary": true
          }
        ],
        "entitlements": [
          {
            "value": "<string>",
            "type": "<string>",
            "primary": true
          }
        ],
        "roles": [
          {
            "value": "<string>",
            "type": "<string>",
            "primary": true
          }
        ],
        "x509certificates": [
          {
            "value": "<string>",
            "type": "<string>",
            "primary": true
          }
        ],
        "name": {
          "formatted": "<string>",
          "family_name": "<string>",
          "given_name": "<string>",
          "middle_name": "<string>",
          "honorific_prefix": "<string>",
          "honorific_suffix": "<string>"
        },
        "enterprise_extension": {
          "employee_number": "<string>",
          "cost_center": "<string>",
          "division": "<string>",
          "department": "<string>",
          "organization": "<string>",
          "manager": {
            "value": "<string>",
            "ref": "<string>",
            "display_name": "<string>"
          }
        }
      }
    },
    "external_id": "<string>",
    "lock_created_at": "<string>",
    "lock_expires_at": "<string>"
  },
  "organization": {
    "organization_id": "<string>",
    "organization_name": "<string>",
    "organization_logo_url": "<string>",
    "organization_slug": "<string>",
    "sso_jit_provisioning": "<string>",
    "sso_jit_provisioning_allowed_connections": [
      "<string>"
    ],
    "sso_active_connections": [
      {
        "connection_id": "<string>",
        "display_name": "<string>",
        "identity_provider": "<string>"
      }
    ],
    "email_allowed_domains": [
      "<string>"
    ],
    "email_jit_provisioning": "<string>",
    "email_invites": "<string>",
    "auth_methods": "<string>",
    "allowed_auth_methods": [
      "<string>"
    ],
    "mfa_policy": "<string>",
    "rbac_email_implicit_role_assignments": [
      {
        "domain": "<string>",
        "role_id": "<string>"
      }
    ],
    "mfa_methods": "<string>",
    "allowed_mfa_methods": [
      "<string>"
    ],
    "oauth_tenant_jit_provisioning": "<string>",
    "claimed_email_domains": [
      "<string>"
    ],
    "first_party_connected_apps_allowed_type": "<string>",
    "allowed_first_party_connected_apps": [
      "<string>"
    ],
    "third_party_connected_apps_allowed_type": "<string>",
    "allowed_third_party_connected_apps": [
      "<string>"
    ],
    "custom_roles": [
      {
        "role_id": "<string>",
        "description": "<string>",
        "permissions": [
          {
            "resource_id": "<string>",
            "actions": [
              "<string>"
            ]
          }
        ]
      }
    ],
    "trusted_metadata": {},
    "created_at": "<string>",
    "updated_at": "<string>",
    "organization_external_id": "<string>",
    "sso_default_connection_id": "<string>",
    "scim_active_connection": {
      "connection_id": "<string>",
      "display_name": "<string>",
      "bearer_token_last_four": "<string>",
      "bearer_token_expires_at": "<string>"
    },
    "allowed_oauth_tenants": {}
  },
  "status_code": 123,
  "member_session": {
    "member_session_id": "<string>",
    "member_id": "<string>",
    "started_at": "<string>",
    "last_accessed_at": "<string>",
    "expires_at": "<string>",
    "authentication_factors": [
      {
        "last_authenticated_at": "<string>",
        "created_at": "<string>",
        "updated_at": "<string>",
        "email_factor": {
          "email_id": "<string>",
          "email_address": "<string>"
        },
        "phone_number_factor": {
          "phone_id": "<string>",
          "phone_number": "<string>"
        },
        "google_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "microsoft_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "apple_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "webauthn_factor": {
          "webauthn_registration_id": "<string>",
          "domain": "<string>",
          "user_agent": "<string>"
        },
        "authenticator_app_factor": {
          "totp_id": "<string>"
        },
        "github_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "recovery_code_factor": {
          "totp_recovery_code_id": "<string>"
        },
        "facebook_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "crypto_wallet_factor": {
          "crypto_wallet_id": "<string>",
          "crypto_wallet_address": "<string>",
          "crypto_wallet_type": "<string>"
        },
        "amazon_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "bitbucket_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "coinbase_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "discord_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "figma_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "git_lab_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "instagram_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "linked_in_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "shopify_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "slack_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "snapchat_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "spotify_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "steam_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "tik_tok_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "twitch_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "twitter_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "embeddable_magic_link_factor": {
          "embedded_id": "<string>"
        },
        "biometric_factor": {
          "biometric_registration_id": "<string>"
        },
        "saml_sso_factor": {
          "id": "<string>",
          "provider_id": "<string>",
          "external_id": "<string>"
        },
        "oidc_sso_factor": {
          "id": "<string>",
          "provider_id": "<string>",
          "external_id": "<string>"
        },
        "salesforce_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "yahoo_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "hubspot_oauth_factor": {
          "id": "<string>",
          "provider_subject": "<string>",
          "email_id": "<string>"
        },
        "slack_oauth_exchange_factor": {
          "email_id": "<string>"
        },
        "hubspot_oauth_exchange_factor": {
          "email_id": "<string>"
        },
        "github_oauth_exchange_factor": {
          "email_id": "<string>"
        },
        "google_oauth_exchange_factor": {
          "email_id": "<string>"
        },
        "impersonated_factor": {
          "impersonator_id": "<string>",
          "impersonator_email_address": "<string>"
        },
        "oauth_access_token_exchange_factor": {
          "client_id": "<string>"
        },
        "trusted_auth_token_factor": {
          "token_id": "<string>"
        }
      }
    ],
    "organization_id": "<string>",
    "roles": [
      "<string>"
    ],
    "organization_slug": "<string>",
    "custom_claims": {}
  }
}
{
"status_code": 401,
"request_id": "request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141",
"error_type": "unauthorized_credentials",
"error_message": "Unauthorized credentials.",
"error_url": "https://stytch.com/docs/api/errors/401"
}
{
"status_code": 429,
"request_id": "request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141",
"error_type": "too_many_requests",
"error_message": "Too many requests have been made.",
"error_url": "https://stytch.com/docs/api/errors/429"
}
{
"status_code": 500,
"request_id": "request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141",
"error_type": "internal_server_error",
"error_message": "Oops, something seems to have gone wrong, please reach out to support@stytch.com to let us know what went wrong.",
"error_url": "https://stytch.com/docs/api/errors/500"
}
Migrate a session from an external OIDC compliant endpoint. Stytch will call the external UserInfo endpoint defined in your Stytch Project settings in the Dashboard, and then perform a lookup using the session_token. If the response contains a valid email address, Stytch will attempt to match that email address with an existing in your and create a Stytch Session. You will need to create the member before using this endpoint.

Authorizations

Authorization
string
header
required

Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.

Body

application/json

Request type

session_token
string
required

The authorization token Stytch will pass in to the external userinfo endpoint.

organization_id
string
required

Globally unique UUID that identifies a specific Organization. The organization_id is critical to perform operations on an Organization, so be sure to preserve this value. You may also use the organization_slug or organization_external_id here as a convenience.

session_duration_minutes
integer<int32>

Set the session lifetime to be this many minutes from now. This will start a new session if one doesn't already exist, returning both an opaque session_token and session_jwt for this session. Remember that the session_jwt will have a fixed lifetime of five minutes regardless of the underlying session duration, and will need to be refreshed over time.

This value must be a minimum of 5 and a maximum of 527040 minutes (366 days).

If a session_token or session_jwt is provided then a successful authentication will continue to extend the session this many minutes.

If the session_duration_minutes parameter is not specified, a Stytch session will be created with a 60 minute duration. If you don't want to use the Stytch session product, you can ignore the session fields in the response.

session_custom_claims
object

Add a custom claims map to the Session being authenticated. Claims are only created if a Session is initialized by providing a value in session_duration_minutes. Claims will be included on the Session object and in the JWT. To update a key in an existing Session, supply a new value. To delete a key, supply a null value. Custom claims made with reserved claims (iss, sub, aud, exp, nbf, iat, jti) will be ignored. Total custom claims size cannot exceed four kilobytes.

Response

Successful response

request_id
string
required

Globally unique UUID that is returned with every API call. This value is important to log for debugging purposes; we may ask for this value to help identify a specific API call when helping you debug an issue.

member_id
string
required

Globally unique UUID that identifies a specific Member.

session_token
string
required

A secret token for a given Stytch Session.

session_jwt
string
required

The JSON Web Token (JWT) for a given Stytch Session.

member
object
required
organization
object
required
status_code
integer<int32>
required
member_session
object