Skip to main content
POST
/
v1
/
oauth
/
attach
C#
// POST /v1/oauth/attach
const stytch = require('stytch');

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

const params = {
  provider: "microsoft",
  user_id: "user-test-16d9ba61-97a1-4ba4-9720-b03761dc50c6",
};

client.OAuth.Attach(params)
  .then(resp => { console.log(resp) })
  .catch(err => { console.log(err) });
// POST /v1/oauth/attach
package main

import (
"context"
"log"

"github.com/stytchauth/stytch-go/v18/stytch/consumer/oauth"
"github.com/stytchauth/stytch-go/v18/stytch/consumer/stytchapi"
)

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

params := &oauth.AttachParams{
Provider: "microsoft",
UserID: "user-test-16d9ba61-97a1-4ba4-9720-b03761dc50c6",
}

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

log.Println(resp)
}
// POST /v1/oauth/attach
package com.example;

import com.stytch.java.common.StytchResult;
import com.stytch.java.consumer.models.oauth.AttachRequest;
import com.stytch.java.consumer.StytchClient;

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

AttachRequest params = new AttachRequest();
params.setProvider("microsoft");
params.setUserId("user-test-16d9ba61-97a1-4ba4-9720-b03761dc50c6");

Object result = StytchClient.getOAuth().attach(params);
if (result instanceof StytchResult.Success) {
System.out.println(((StytchResult.Success) result).getValue());
} else {
System.out.println(((StytchResult.Error) result).getException());
}
}
}
// POST /v1/oauth/attach
package com.example

import com.stytch.java.consumer.StytchClient
import com.stytch.java.consumer.models.oauth.AttachRequest

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

when (
val result =
StytchClient.oauth.attach(
AttachRequest(
provider = "microsoft",
userId = "user-test-16d9ba61-97a1-4ba4-9720-b03761dc50c6",
),
)
) {
is StytchResult.Success -> println(result.value)
is StytchResult.Error -> println(result.exception)
}
}
// POST /v1/oauth/attach
const stytch = require('stytch');

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

const params = {
provider: "microsoft",
user_id: "user-test-16d9ba61-97a1-4ba4-9720-b03761dc50c6",
};

client.oauth.attach(params)
.then(resp => { console.log(resp) })
.catch(err => { console.log(err) });
$response = $client->oauth->attach([
'provider' => 'microsoft',
'user_id' => 'user-test-16d9ba61-97a1-4ba4-9720-b03761dc50c6',
]);
# POST /v1/oauth/attach
from stytch import Client

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

resp = client.oauth.attach(
provider="microsoft",
user_id="user-test-16d9ba61-97a1-4ba4-9720-b03761dc50c6",
)

print(resp)
# frozen_string_literal: true

# POST /v1/oauth/attach
require 'stytch'

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

resp = client.oauth.attach(
provider: "microsoft",
user_id: "user-test-16d9ba61-97a1-4ba4-9720-b03761dc50c6"

)

puts resp
// POST /v1/oauth/attach
use stytch::consumer::client::Client;
use stytch::consumer::oauth::AttachRequest;

fn main() {
let client = Client::new("${projectId}", "${secret}").unwrap();
let resp = client.oauth.attach(
AttachRequest{
provider: "microsoft",
user_id: Some(String::from("user-test-16d9ba61-97a1-4ba4-9720-b03761dc50c6")),
..Default::default()
}
).await;
println!("The response is {:?}", resp);
}
# POST /v1/oauth/attach
curl --request POST \
--url https://test.stytch.com/v1/oauth/attach \
-u '${projectId}:${secret}' \
-H 'Content-Type: application/json' \
-d '{
"provider": "microsoft",
"user_id": "user-test-16d9ba61-97a1-4ba4-9720-b03761dc50c6"
}'
{
  "request_id": "<string>",
  "oauth_attach_token": "<string>",
  "status_code": 123
}
{
"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"
}
Generate an OAuth Attach Token to pre-associate an OAuth flow with an existing Stytch User. Pass the returned oauth_attach_token to the same provider’s OAuth Start endpoint to treat this OAuth flow as a login for that user instead of a signup for a new user. Exactly one of user_id, session_token, or session_jwt must be provided to identify the target Stytch User.
This is an optional step in the OAuth flow. Stytch can often determine whether to associate a new OAuth login with an existing User based on verified information (such as an email address) from the identity provider. This endpoint is useful for cases where we can’t, such as missing or unverified provider information.
See the OAuth email address behavior guide for additional information.

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

provider
string
required

The OAuth provider's name.

user_id
string

The unique ID of a specific User. You may use an external_id here if one is set for the user.

session_token
string

The session_token associated with a User's existing Session.

session_jwt
string

The session_jwt associated with a User's existing Session.

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.

oauth_attach_token
string
required

A single-use token for connecting the Stytch User selection from an OAuth Attach request to the corresponding OAuth Start request.

status_code
integer<int32>
required

The HTTP status code of the response. Stytch follows standard HTTP response status code patterns, e.g. 2XX values equate to success, 3XX values are redirects, 4XX are client errors, and 5XX are server errors.