Skip to main content
Okta logo

Overview

Add Okta to any ModuleX agent or workflow. Manage users and user-type metadata in an Okta tenant via the Okta Management REST API (https://<subdomain>.okta.com/api/v1).
Categories: Developer Tools & Infrastructure · Identity & Access Management · Productivity & Collaboration · Auth: Okta API Token · Actions: 4

Authentication

Okta API Token

Authenticate with an Okta SSWS API token plus the tenant subdomain. The token is sent as Authorization: SSWS &lt;token> and the subdomain is used to build the request host (https://&lt;subdomain>.okta.com).
1

Step 1

Sign in to your Okta admin console.
2

Step 2

Open Security -> API -> Tokens, then click Create Token.
3

Step 3

Copy the generated SSWS token (it is shown only once).
4

Step 4

Your subdomain is the leading part of your admin URL, e.g. for acme.okta.com the subdomain is acme.

Required Credentials

FieldDescriptionRequiredFormat
Okta SubdomainThe tenant subdomain (e.g. acme for acme.okta.com). Do not include .okta.com.Yesacme
Okta API TokenYour SSWS API token from Okta admin (Security -> API -> Tokens).Yes00xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Available Actions

Parameters

first_name
string
required
The first name of the user.
last_name
string
required
The last name of the user.
email
string
required
The email address of the user.
login
string
required
The login (typically the email) for the user.
mobile_phone
string
Optional mobile phone number for the user.
type_id
string
Optional ID of a non-default user type. Use list_type_id_options to enumerate available IDs.
activate
boolean
Whether to execute the activation lifecycle on creation. Defaults to true. (Default: true)

Response

{
  "$defs": {
    "UserResource": {
      "additionalProperties": false,
      "description": "An Okta user as returned by /users endpoints.\n\nField set is intentionally permissive — Okta returns many fields; we\nexpose the ones agents commonly need and let the rest live in ``profile``.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "created": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created"
        },
        "activated": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Activated"
        },
        "statusChanged": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Statuschanged"
        },
        "lastLogin": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Lastlogin"
        },
        "lastUpdated": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Lastupdated"
        },
        "passwordChanged": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Passwordchanged"
        },
        "type": {
          "anyOf": [
            {
              "$ref": "#/$defs/UserTypeRef"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "profile": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Profile"
        },
        "credentials": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Credentials"
        }
      },
      "title": "UserResource",
      "type": "object"
    },
    "UserTypeRef": {
      "additionalProperties": false,
      "description": "Reference to a user type returned alongside a user resource.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        }
      },
      "title": "UserTypeRef",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "user": {
      "anyOf": [
        {
          "$ref": "#/$defs/UserResource"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "CreateUserOutput",
  "type": "object"
}

Parameters

user_id
string
required
The unique identifier of the user (Okta user ID, login, or email).

Response

{
  "$defs": {
    "UserResource": {
      "additionalProperties": false,
      "description": "An Okta user as returned by /users endpoints.\n\nField set is intentionally permissive — Okta returns many fields; we\nexpose the ones agents commonly need and let the rest live in ``profile``.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "created": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created"
        },
        "activated": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Activated"
        },
        "statusChanged": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Statuschanged"
        },
        "lastLogin": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Lastlogin"
        },
        "lastUpdated": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Lastupdated"
        },
        "passwordChanged": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Passwordchanged"
        },
        "type": {
          "anyOf": [
            {
              "$ref": "#/$defs/UserTypeRef"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "profile": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Profile"
        },
        "credentials": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Credentials"
        }
      },
      "title": "UserResource",
      "type": "object"
    },
    "UserTypeRef": {
      "additionalProperties": false,
      "description": "Reference to a user type returned alongside a user resource.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        }
      },
      "title": "UserTypeRef",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "user": {
      "anyOf": [
        {
          "$ref": "#/$defs/UserResource"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "GetUserOutput",
  "type": "object"
}

Response

{
  "$defs": {
    "TypeIdOption": {
      "additionalProperties": false,
      "description": "One row from the dropdown returned by list_type_id_options.",
      "properties": {
        "label": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Label"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        }
      },
      "title": "TypeIdOption",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "options": {
      "items": {
        "$ref": "#/$defs/TypeIdOption"
      },
      "title": "Options",
      "type": "array"
    }
  },
  "required": [
    "success"
  ],
  "title": "ListTypeIdOptionsOutput",
  "type": "object"
}

Parameters

user_id
string
required
The unique identifier of the user to update.
first_name
string
New first name for the user.
last_name
string
New last name for the user.
email
string
New email address for the user.
login
string
New login for the user.
mobile_phone
string
New mobile phone number for the user.
type_id
string
Optional new user type ID. Use list_type_id_options to discover valid IDs.

Response

{
  "$defs": {
    "UserResource": {
      "additionalProperties": false,
      "description": "An Okta user as returned by /users endpoints.\n\nField set is intentionally permissive — Okta returns many fields; we\nexpose the ones agents commonly need and let the rest live in ``profile``.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "created": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created"
        },
        "activated": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Activated"
        },
        "statusChanged": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Statuschanged"
        },
        "lastLogin": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Lastlogin"
        },
        "lastUpdated": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Lastupdated"
        },
        "passwordChanged": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Passwordchanged"
        },
        "type": {
          "anyOf": [
            {
              "$ref": "#/$defs/UserTypeRef"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "profile": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Profile"
        },
        "credentials": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Credentials"
        }
      },
      "title": "UserResource",
      "type": "object"
    },
    "UserTypeRef": {
      "additionalProperties": false,
      "description": "Reference to a user type returned alongside a user resource.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        }
      },
      "title": "UserTypeRef",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "user": {
      "anyOf": [
        {
          "$ref": "#/$defs/UserResource"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "UpdateUserOutput",
  "type": "object"
}

Limits & Quotas

  • Okta enforces per-org rate limits that vary by endpoint and plan; common defaults are 600 requests/minute for the Users endpoints on developer orgs and higher on production tiers. See https://developer.okta.com/docs/reference/rl-global-mgmt/.
  • Each response includes X-Rate-Limit-Limit, X-Rate-Limit-Remaining, and X-Rate-Limit-Reset headers; agents that hit 429 should back off until the reset epoch.
  • update_user issues one GET plus one PUT per call (the existing profile is merged client-side so partial updates do not blank out fields).
  • Error model: non-2xx responses and timeouts are caught and returned as success=False + error rather than raising.

Jira

Microsoft Entra ID

Algolia