Your app,
Enterprise Ready.

Start selling to enterprise customers with just a few lines of code. Implement features like single sign-on in minutes instead of months.

WorkOS launches a new Audit Logs API.
Read more
Trusted by

The all-in-one solution

Enterprise SSO
(and a whole lot more)

WorkOS is a set of building blocks for quickly adding enterprise features to your app. You’ll be shipping quickly with a market-proven solution for your customers.

Single Sign-On
SAML Lock

SAML

Support all SAML and OIDC providers out-of-the-box

One-time Passcode

Multi-Factor Auth

Additional authentication factors using TOTP and SMS

Magic Link

Email magic links

Use unlimited passwordless authentication through email

OAuth Keys

OAuth

Sign in with third-party providers like Google and Microsoft

Developer-first design

A unified platform with modern APIs

WorkOS provides a single, elegant interface that abstracts dozens of enterprise integrations.

RESTful APIs, JSON responses, and normalized objects

Dashboard seamlessly integrates WorkOS into your application

Realtime updates from directory services with webhook events

Modern SDKs for Node.js, Ruby, Python, .NET, Go and more

Multiple environments to map to your application development process

Supports 20+ enterprise services with a single integration point


// Get a user’s access token and
// profile data from an Identity Provider

import WorkOS from '@workos-inc/node';

const workos = new WorkOS('sk_example_123456789');

const profile = await workos.sso.getProfileAndToken({
  code: '01E2RJ4C05B52KKZ8FSRDAP23J',
  clientID: 'client_123456789',
});



# Get a user’s access token and
# profile data from an Identity Provider

require 'workos'

WorkOS.key = 'sk_example_123456789'

WorkOS::SSO.profile_and_token(
  code: '01E2RJ4C05B52KKZ8FSRDAP23J',
  client_id: 'client_123456789',
)



# Get a user’s access token and
# profile data from an Identity Provider

import workos
from workos import client

workos.api_key = 'sk_example_123456789'
workos.client_id = 'client_123456789'

client.sso.get_profile_and_token('01E2RJ4C05B52KKZ8FSRDAP23J')




// Get a user’s access token and
// profile data from an Identity Provider

import "github.com/workos/workos-go/pkg/sso"

sso.SetAPIKey("sk_example_123456789")

sso.GetProfileAndToken(
  context.Background(),
  sso.GetProfileAndTokenOptions{
    Code: "01E2RJ4C05B52KKZ8FSRDAP23J",
  }
)

// Get a user’s access token and
// profile data from an Identity Provider

$this->sso = new WorkOS\SSO();

$profile = $this->sso->getProfileAndToken("01E2RJ4C05B52KKZ8FSRDAP23J");








// Get a user’s access token and
// profile data from an Identity Provider

import com.workos.WorkOS;

WorkOS workos = new WorkOS("sk_example_123456");

ProfileAndToken profileAndToken = workos.sso.getProfileAndToken("01E2RJ4C05B52KKZ8FSRDAP23J", "client_123456789");

Profile profile = profileAndToken.profile;




// Get a user’s access token and
// profile data from an Identity Provider

WorkOS.SetApiKey("sk_example_123456");

var ssoService = new SSOService();
var options = new GetProfileAndTokenOptions
{
    ClientId = "client_123456789",
    Code = "01E2RJ4C05B52KKZ8FSRDAP23J",
};

var profile = await ssoService.GetProfileAndToken(options);

curl --request POST \
  --url "https://api.workos.com/sso/token? \
  client_id=client_123456789& \
  client_secret=sk_example_123456789& \
  grant_type=authorization_code& \
  code=01E2RJ4C05B52KKZ8FSRDAP23J"
  
  
  
  
  
  
  
HTTP 200

Response {...}
  "access_token": "01DMEK0J53CVMC32CK5SE0KZ8Q",
  "profile": {
    "id": "prof_01DMC79VCBZ0NY2099737PSVF1",
    "connection_id": "conn_01E4ZCR3C56J083X43JQXF3JK5",
    "connection_type": "okta",
    "email": "[email protected]",
    "first_name": "Alan",
    "last_name": "Turing",
    "idp_id": "00u1a0ufowBJlzPlk357",
    "object": "profile",
    "raw_attributes": {...}
  }
WorkOS
Okta Logo
Azure Logo
Google Logo
SAML
OneLogin Logo
ADFS Logo
Okta Logo
Azure Logo
Google Logo
SAML Logo
OneLogin Logo
ADFS Logo
BambooHR Logo
JumpCloud Logo
PingIdentity Logo
OpenID Logo
DUO Logo
BambooHR Logo
JumpCloud Logo
PingIdentity Logo
 Logo
DUO Logo

Directory Sync

SCIM and HRIS integrations? No sweat.

Quickly enable full user lifecycle management by syncing your app with dozens of enterprise employee directory systems.

SCIM Provisioning

SCIM provisioning

with Okta, Azure, ADFS, and more

HRIS Integration

HRIS integration

with Bamboo, Rippling, and others

Frictionless set up

The IT admin’s admin

Free your support team from the ongoing headache of configuring SSO for enterprise customers. The Admin Portal is a hosted interface for IT admins to directly set up WorkOS.

Admin Portal Screenshot

Effortlessly connect any identity provider or directory

Customize the look and feel to match your brand

Host on your custom domain (CNAME)

A polished experience for IT administrators

Step-by-step setup guides with detailed screenshots

Seamlessly integrates into your existing application

Why WorkOS?

Expand your market

In the past, building for the enterprise was complex, time-consuming, and distracting from core features. Deals would slip away, perhaps forever, due to requirements from IT admins.

With WorkOS, you can immediately begin selling to enterprise customers and expand your market footprint.

Watch: Crossing the
Enterprise Chasm

What happens if you don’t become Enterprise Ready?

Powered by WorkOS

“I think we could have done even more business if we had partnered with WorkOS earlier, but it's been incredibly well received.”
Guillermo Rauch
Founder & CEO
Read more
“When I asked the team, how was the experience with WorkOS? They were just like, this is incredible.”
Sam Lambert
CEO
Read more
“Integrating was straightforward, pleasant, and fun. The team answered my questions quickly, and went above and beyond to help when I ran into issues.”
Bryant Chou
Co-Founder & CTO
Read more
“WorkOS was super easy to self serve and get up and running. It provided us super easy-to-implement must-have functionality out of the box.”
Brennan Spellacy
Co-Founder & CEO
Read more

This site uses cookies to improve your experience. Please accept the use of cookies on this site. You can review our cookie policy here and our privacy policy here. If you choose to refuse, functionality of this site will be limited.