> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plaud.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Workspace Token

> Exchange a client assertion signed with your private key for a 1-hour workspace access token. No shared secret ever leaves your side — Plaud only ever holds your public key.

> [!NOTE]
>
> Sign the assertion with a short lifetime (we recommend 4 minutes) and a unique `jti`. The resulting access token is valid for **1 hour** and is bound to a single workspace.


## OpenAPI

````yaml /openapi/enterprise.json post /team-oauth/oauth/token
openapi: 3.0.4
info:
  title: Enterprise API
  description: >-
    Workspace-owned, read-only access to a Plaud Team workspace's recordings,
    transcripts, summaries and member data. Currently in Private Beta and
    feature-flagged for Private Beta workspaces only.
  version: 0.0.1
servers:
  - url: https://api.plaud.ai
    description: >-
      US workspace endpoint. Japan workspaces receive their own host and token
      issuer together with their credential.
security: []
paths:
  /team-oauth/oauth/token:
    post:
      tags:
        - Authentication
      summary: Get Workspace Token
      description: >-
        Exchange a client assertion signed with your private key for a 1-hour
        workspace access token. No shared secret ever leaves your side — Plaud
        only ever holds your public key.
      operationId: createWorkspaceAccessToken
      parameters:
        - $ref: '#/components/parameters/formContentType'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/TokenRequest'
            example:
              grant_type: client_credentials
              client_assertion_type: urn:ietf:params:oauth:client-assertion-type:jwt-bearer
              client_assertion: <header>.<payload>.<signature>
      responses:
        '200':
          description: Workspace access token issued
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
              example:
                access_token: eyJhbGciOiJSUzI1NiIs...
                token_type: Bearer
                expires_in: 3600
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  parameters:
    formContentType:
      in: header
      name: Content-Type
      schema:
        type: string
        default: application/x-www-form-urlencoded
      required: true
  schemas:
    TokenRequest:
      type: object
      required:
        - grant_type
        - client_assertion_type
        - client_assertion
      properties:
        grant_type:
          type: string
          enum:
            - client_credentials
          description: Always `client_credentials`.
        client_assertion_type:
          type: string
          enum:
            - urn:ietf:params:oauth:client-assertion-type:jwt-bearer
          description: Always `urn:ietf:params:oauth:client-assertion-type:jwt-bearer`.
        client_assertion:
          type: string
          description: >-
            A JWT (`header.payload.signature`) with `iss`/`sub` set to your
            `client_id`, `aud` set to the token issuer, a short `exp` (we
            recommend 4 minutes), and a unique `jti`, signed with your private
            key using RS256.
    TokenResponse:
      type: object
      properties:
        access_token:
          type: string
          description: Bearer token for the workspace, valid for `expires_in` seconds.
        token_type:
          type: string
          example: Bearer
        expires_in:
          type: integer
          description: Lifetime of the access token, in seconds.
          example: 3600
    ErrorResponse:
      type: object
      properties:
        status:
          type: integer
          example: 401
        msg:
          type: string
          example: unauthorized
        type:
          type: string
          example: error
  responses:
    Unauthorized:
      description: Missing, expired or invalid access token
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            status: 401
            msg: unauthorized
            type: error

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.