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

# Authorize an approved OAuth client

> Starts authorization code flow. PKCE S256 and an exact resource indicator are required.



## OpenAPI

````yaml /specs/openapi/jointl-api-v1.openapi.yaml get /oauth/authorize
openapi: 3.1.2
info:
  title: Jointl REST API and OAuth
  version: 1.0.0
  summary: Supported public HTTP contract for Jointl third-party connections.
  description: >-
    HTTP contract for Jointl REST operations, OAuth, and Zapier subscription and
    action endpoints. Jointl does not provide a public sandbox.
  termsOfService: https://join.tl/legal/terms-of-service
  contact:
    name: Jointl Support
    url: https://join.tl
servers:
  - url: https://api.join.tl
    description: Jointl production API
security: []
tags:
  - name: OAuth
    description: OAuth 2.0 and OpenID Connect endpoints.
  - name: Discovery
    description: OAuth resource and issuer discovery.
  - name: Operations
    description: Permission-filtered read operations.
  - name: Actions
    description: Prepare, human approval, and confirmation.
  - name: Zapier
    description: Endpoints restricted to the approved Jointl Zapier app.
paths:
  /oauth/authorize:
    get:
      tags:
        - OAuth
      summary: Authorize an approved OAuth client
      description: >-
        Starts authorization code flow. PKCE S256 and an exact resource
        indicator are required.
      operationId: authorizeOAuthClient
      parameters:
        - name: client_id
          in: query
          required: true
          schema:
            type: string
        - name: redirect_uri
          in: query
          required: true
          schema:
            type: string
            format: uri
        - name: response_type
          in: query
          required: true
          schema:
            type: string
            const: code
        - name: scope
          in: query
          required: true
          schema:
            type: string
        - name: state
          in: query
          required: true
          schema:
            type: string
        - name: code_challenge
          in: query
          required: true
          schema:
            type: string
            minLength: 43
            maxLength: 128
        - name: code_challenge_method
          in: query
          required: true
          schema:
            type: string
            const: S256
        - name: resource
          in: query
          required: true
          schema:
            type: string
            enum:
              - https://api.join.tl/api/v1
              - https://mcp.join.tl
        - name: nonce
          in: query
          required: false
          schema:
            type: string
      responses:
        '302':
          description: >-
            Redirect to the Jointl authorization interaction or registered
            client redirect URI.
          headers:
            Location:
              schema:
                type: string
                format: uri
        '400':
          $ref: '#/components/responses/OAuthError'
      security: []
components:
  responses:
    OAuthError:
      description: OAuth protocol error.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
              error_description:
                type: string
            required:
              - error

````