WorkOS applications API

Manage Connect Applications.

OpenAPI Specification

workos-applications-api-openapi.yml Raw ↑
openapi: 3.1.1
info:
  title: WorkOS admin-portal applications API
  description: WorkOS REST API
  version: '1.0'
  contact:
    name: WorkOS
    url: https://workos.com
    email: support@workos.com
  license:
    name: MIT
    url: https://opensource.org/license/MIT
servers:
- url: https://api.workos.com
  description: Production
- url: https://api.workos-test.com
  description: Staging
security:
- bearer: []
tags:
- name: applications
  description: Manage Connect Applications.
  x-displayName: Applications
paths:
  /connect/applications:
    get:
      description: List all Connect Applications in the current environment with optional filtering.
      operationId: ApplicationsController_list
      parameters:
      - name: before
        required: false
        in: query
        description: An object ID that defines your place in the list. When the ID is not present, you are at the end of the list. For example, if you make a list request and receive 100 objects, ending with `"obj_123"`, your subsequent call can include `before="obj_123"` to fetch a new batch of objects before `"obj_123"`.
        schema:
          example: xxx_01HXYZ123456789ABCDEFGHIJ
          type: string
      - name: after
        required: false
        in: query
        description: An object ID that defines your place in the list. When the ID is not present, you are at the end of the list. For example, if you make a list request and receive 100 objects, ending with `"obj_123"`, your subsequent call can include `after="obj_123"` to fetch a new batch of objects after `"obj_123"`.
        schema:
          example: xxx_01HXYZ987654321KJIHGFEDCBA
          type: string
      - name: limit
        required: false
        in: query
        description: Upper limit on the number of objects to return, between `1` and `100`.
        schema:
          minimum: 1
          maximum: 100
          default: 10
          example: 10
          type: integer
      - name: order
        required: false
        in: query
        description: Order the results by the creation time. Supported values are `"asc"` (ascending), `"desc"` (descending), and `"normal"` (descending with reversed cursor semantics where `before` fetches older records and `after` fetches newer records). Defaults to descending.
        schema:
          $ref: '#/components/schemas/PaginationOrder'
      - name: organization_id
        required: false
        in: query
        description: Filter Connect Applications by organization ID.
        schema:
          type: string
          example: org_01EHZNVPK3SFK441A1RGBFSHRT
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectApplicationList'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: A human-readable description of the error.
                    example: 'Organization not found: ''org_01EHQMYV6MBK39QC5PZXHY59C3''.'
                required:
                - message
      summary: List Connect Applications
      tags:
      - applications
    post:
      description: Create a new Connect Application. Supports both OAuth and Machine-to-Machine (M2M) application types.
      operationId: ApplicationsController_create
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/CreateOAuthApplicationDto'
              - $ref: '#/components/schemas/CreateM2MApplicationDto'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectApplication'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: A human-readable description of the error.
                    example: 'Organization not found: ''org_01EHQMYV6MBK39QC5PZXHY59C3''.'
                required:
                - message
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: A human-readable description of the error.
                    example: 'Organization not found: ''org_01EHQMYV6MBK39QC5PZXHY59C3''.'
                required:
                - message
      summary: Create a Connect Application
      tags:
      - applications
  /connect/applications/{id}:
    get:
      description: Retrieve details for a specific Connect Application by ID or client ID.
      operationId: ApplicationsController_find
      parameters:
      - name: id
        required: true
        in: path
        description: The application ID or client ID of the Connect Application.
        schema:
          type: string
          example: conn_app_01HXYZ123456789ABCDEFGHIJ
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectApplication'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: A human-readable description of the error.
                    example: 'Organization not found: ''org_01EHQMYV6MBK39QC5PZXHY59C3''.'
                required:
                - message
      summary: Get a Connect Application
      tags:
      - applications
    put:
      description: Update an existing Connect Application. For OAuth applications, you can update redirect URIs. For all applications, you can update the name, description, and scopes.
      operationId: ApplicationsController_update
      parameters:
      - name: id
        required: true
        in: path
        description: The application ID or client ID of the Connect Application.
        schema:
          type: string
          example: conn_app_01HXYZ123456789ABCDEFGHIJ
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateOAuthApplicationDto'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectApplication'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: A human-readable description of the error.
                    example: 'Organization not found: ''org_01EHQMYV6MBK39QC5PZXHY59C3''.'
                required:
                - message
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: A human-readable description of the error.
                    example: 'Organization not found: ''org_01EHQMYV6MBK39QC5PZXHY59C3''.'
                required:
                - message
      summary: Update a Connect Application
      tags:
      - applications
    delete:
      description: Delete an existing Connect Application.
      operationId: ApplicationsController_delete
      parameters:
      - name: id
        required: true
        in: path
        description: The application ID or client ID of the Connect Application.
        schema:
          type: string
          example: conn_app_01HXYZ123456789ABCDEFGHIJ
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: A human-readable description of the error.
                    example: 'Organization not found: ''org_01EHQMYV6MBK39QC5PZXHY59C3''.'
                required:
                - message
      summary: Delete a Connect Application
      tags:
      - applications
components:
  schemas:
    UpdateOAuthApplicationDto:
      type: object
      properties:
        name:
          type: string
          description: The name of the application.
          example: My Application
        description:
          type:
          - string
          - 'null'
          description: A description for the application.
          example: An application for managing user access
        scopes:
          description: The OAuth scopes granted to the application.
          example:
          - openid
          - profile
          - email
          type:
          - array
          - 'null'
          items:
            type: string
        redirect_uris:
          description: Updated redirect URIs for the application. OAuth applications only.
          example:
          - uri: https://example.com/callback
            default: true
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/RedirectUriDto'
    ConnectApplication:
      allOf:
      - type: object
        properties:
          object:
            type: string
            description: Distinguishes the connect application object.
            example: connect_application
            const: connect_application
          id:
            type: string
            description: The unique ID of the connect application.
            example: conn_app_01HXYZ123456789ABCDEFGHIJ
          client_id:
            type: string
            description: The client ID of the connect application.
            example: client_01HXYZ123456789ABCDEFGHIJ
          description:
            type:
            - string
            - 'null'
            description: A description of the connect application.
            example: An application for managing user access
          name:
            type: string
            description: The name of the connect application.
            example: My Application
          scopes:
            type: array
            items:
              type: string
            description: The scopes available for this application.
            example:
            - openid
            - profile
            - email
          created_at:
            format: date-time
            type: string
            description: An ISO 8601 timestamp.
            example: '2026-01-15T12:00:00.000Z'
          updated_at:
            format: date-time
            type: string
            description: An ISO 8601 timestamp.
            example: '2026-01-15T12:00:00.000Z'
        required:
        - object
        - id
        - client_id
        - description
        - name
        - scopes
        - created_at
        - updated_at
      - oneOf:
        - allOf:
          - type: object
            properties:
              application_type:
                type: string
                description: The type of the application.
                const: oauth
              redirect_uris:
                type: array
                items:
                  type: object
                  properties:
                    uri:
                      type: string
                      format: uri
                      description: The redirect URI for the application.
                      example: https://example.com/callback
                    default:
                      type: boolean
                      description: Whether this is the default redirect URI.
                      example: true
                  required:
                  - uri
                  - default
                description: The redirect URIs configured for this application.
              uses_pkce:
                type: boolean
                description: Whether the application uses PKCE for authorization.
                example: true
            required:
            - application_type
            - redirect_uris
            - uses_pkce
          - oneOf:
            - type: object
              properties:
                is_first_party:
                  type: boolean
                  description: Whether the application is a first-party application.
                  example: true
                  const: true
              required:
              - is_first_party
            - type: object
              properties:
                is_first_party:
                  type: boolean
                  description: Whether the application is a first-party application.
                  example: false
                  const: false
                was_dynamically_registered:
                  type: boolean
                  description: Whether the application was dynamically registered.
                  example: false
                  const: false
                organization_id:
                  type: string
                  description: The ID of the organization the application belongs to.
                  example: org_01EHZNVPK3SFK441A1RGBFSHRT
              required:
              - is_first_party
              - was_dynamically_registered
              - organization_id
            - type: object
              properties:
                is_first_party:
                  type: boolean
                  description: Whether the application is a first-party application.
                  example: false
                  const: false
                was_dynamically_registered:
                  type: boolean
                  description: Whether the application was dynamically registered.
                  example: true
                  const: true
              required:
              - is_first_party
              - was_dynamically_registered
        - type: object
          properties:
            application_type:
              type: string
              description: The type of the application.
              example: m2m
              const: m2m
            organization_id:
              type: string
              description: The ID of the organization the application belongs to.
              example: org_01EHZNVPK3SFK441A1RGBFSHRT
          required:
          - application_type
          - organization_id
    PaginationOrder:
      type: string
      enum:
      - normal
      - desc
      - asc
      example: desc
      default: desc
    CreateOAuthApplicationDto:
      type: object
      properties:
        name:
          type: string
          description: The name of the application.
          example: My Application
        application_type:
          type: string
          description: The type of application to create.
          const: oauth
        description:
          type:
          - string
          - 'null'
          description: A description for the application.
          example: An application for managing user access
        scopes:
          description: The OAuth scopes granted to the application.
          example:
          - openid
          - profile
          - email
          type:
          - array
          - 'null'
          items:
            type: string
        redirect_uris:
          description: Redirect URIs for the application.
          example:
          - uri: https://example.com/callback
            default: true
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/RedirectUriDto'
        uses_pkce:
          type:
          - boolean
          - 'null'
          description: Whether the application uses PKCE (Proof Key for Code Exchange).
          example: true
        is_first_party:
          type: boolean
          description: Whether this is a first-party application. Third-party applications require an organization_id.
          example: true
        organization_id:
          type:
          - string
          - 'null'
          description: The organization ID this application belongs to. Required when is_first_party is false.
          example: org_01EHZNVPK3SFK441A1RGBFSHRT
      required:
      - name
      - application_type
      - is_first_party
    RedirectUriDto:
      type: object
      properties:
        uri:
          type: string
          description: The redirect URI.
          example: https://example.com/callback
        default:
          type:
          - boolean
          - 'null'
          description: Whether this is the default redirect URI.
          example: true
      required:
      - uri
    ConnectApplicationList:
      type: object
      properties:
        object:
          type: string
          description: Indicates this is a list response.
          const: list
        data:
          type: array
          items:
            $ref: '#/components/schemas/ConnectApplication'
          description: The list of records for the current page.
        list_metadata:
          type: object
          properties:
            before:
              type:
              - string
              - 'null'
              description: An object ID that defines your place in the list. When the ID is not present, you are at the start of the list.
              example: conn_app_01HXYZ123456789ABCDEFGHIJ
            after:
              type:
              - string
              - 'null'
              description: An object ID that defines your place in the list. When the ID is not present, you are at the end of the list.
              example: conn_app_01HXYZ987654321KJIHGFEDCBA
          required:
          - before
          - after
          description: Pagination cursors for navigating between pages of results.
      required:
      - object
      - data
      - list_metadata
    CreateM2MApplicationDto:
      type: object
      properties:
        name:
          type: string
          description: The name of the application.
          example: My Application
        application_type:
          type: string
          description: The type of application to create.
          const: m2m
        description:
          type:
          - string
          - 'null'
          description: A description for the application.
          example: An application for managing user access
        scopes:
          description: The OAuth scopes granted to the application.
          example:
          - openid
          - profile
          - email
          type:
          - array
          - 'null'
          items:
            type: string
        organization_id:
          type: string
          description: The organization ID this application belongs to.
          example: org_01EHZNVPK3SFK441A1RGBFSHRT
      required:
      - name
      - application_type
      - organization_id
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: 'Your WorkOS API key prefixed with `sk_`. Pass it as a Bearer token: `Authorization: Bearer sk_example_123456789`.'
    access_token:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: An SSO access token returned from the Get a Profile and Token endpoint.