Set up authentication with Okta
The Conversations API is in Controlled Availability. Endpoints, behaviors, and configuration surfaces may change during CA. Contact your Moveworks account team to participate.
This guide walks through configuring Okta to authenticate against the Moveworks Conversations API.
Which Okta authorization server to use
The one decision that shapes your configuration is which authorization server issues the token.
Okta’s sub claim typically carries a usable identifier such as the user’s username or email, so the default sub claim works for identity resolution.
Prerequisites
Confirm the following with your Moveworks account team:
- Your Moveworks tenant is provisioned for the Conversations API and your account team has provided the Bot Name (used in the
Assistant-Nameheader on every API call). - You have access to the Moveworks Admin Portal (
https://{org}.moveworks.com). - You have admin access to your Okta org, including the authorization server you intend to use.
- The identifier your Okta
subclaim will carry (commonly the user’s email) is already resolvable against your Moveworks user roster.
Step 1: Create the JWT OAuth credential in Moveworks
In the Moveworks Admin Portal, go to https://{org}.moveworks.com/http-connectors/connector_studio/home → Credentials → create a new credential, and set the fields as follows.
Save the credential. If you left Audience blank, note the unique audience value Moveworks displays; you will configure it in Okta next.
Step 2: Configure Okta
Create the OAuth application
In the Okta Admin Console, create a new OIDC application. For browser-based clients use a Single-Page Application with the Authorization Code flow and PKCE enabled. For backend clients use a Web Application as appropriate.
Add trusted origins (browser clients only)
Under Security → API → Trusted Origins, add your application’s domain with CORS and Redirect enabled.
Configure the authorization server
Use (or create) a Custom Authorization Server under Security → API → Authorization Servers. If you left the Audience field blank in Moveworks, set this authorization server’s audience to the unique value Moveworks generated. On the Org Authorization Server the audience is fixed to the Okta org URL and cannot be changed, which is why you register that value in Moveworks instead.
Step 3: Validate
The examples below use https://api.moveworks.ai, which is only correct for orgs on the US Production data center. Replace it with the base URL for your data center from the Base URLs table (for example, https://api.am-eu-central.moveworks.ai for EU). Requests to the wrong host return 404 or invalid_audience.
3.1 Inspect a token
Obtain an access token from Okta for a test user (via the Okta SDK or the /v1/token endpoint with PKCE) and decode it (for example, at jwt.io). Confirm:
issmatches the Issuer you registered.audmatches what you registered (the Moveworks-generated audience for a Custom Auth Server, or the Okta org URL for the Org Auth Server).subis present and matches the identifier your Moveworks user roster expects.
3.2 Exchange for a Moveworks token
A successful response returns a Moveworks access token (valid ~1 hour).
3.3 Test the API
A 201 with a conversation_id confirms the integration works end to end.
Summary
For interaction patterns (polling and streaming) and the full API contract, see the Conversations API reference.