Clerk Applications API

An object representing a Clerk application. Each `application` can have multiple `instances`, typically one for development and one for production, each with distinct user pools.

OpenAPI Specification

clerk-com-applications-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Clerk Backend Account Portal Applications API
  x-logo:
    url: https://clerk.com/_next/image?url=%2Fimages%2Fclerk-logo.svg&w=96&q=75
    altText: Clerk docs
    href: https://clerk.com/docs
  contact:
    email: support@clerk.com
    name: Clerk Platform Team
    url: https://clerk.com/support
  description: 'The Clerk REST Backend API, meant to be accessed by backend servers.


    ### Versions


    When the API changes in a way that isn''t compatible with older versions, a new version is released.

    Each version is identified by its release date, e.g. `2025-04-10`. For more information, please see [Clerk API Versions](https://clerk.com/docs/versioning/available-versions).


    Please see https://clerk.com/docs for more information.'
  version: '2025-11-10'
  termsOfService: https://clerk.com/terms
  license:
    name: MIT
    url: https://github.com/clerk/openapi-specs/blob/main/LICENSE
servers:
- url: https://api.clerk.com/v1
security:
- bearerAuth: []
tags:
- name: Applications
  description: An object representing a Clerk application. Each `application` can have multiple `instances`, typically one for development and one for production, each with distinct user pools.
paths:
  /platform/applications:
    get:
      operationId: PlatformListApplications
      x-speakeasy-group: platform
      x-speakeasy-name-override: listApplications
      tags:
      - Applications
      summary: List Applications
      description: 'List applications.

        '
      security:
      - platform_api_access_token: []
      parameters:
      - name: include_secret_keys
        in: query
        description: Whether to include secret keys in the response.
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Applications retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformListApplicationsResponse'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '403':
          $ref: '#/components/responses/AuthorizationInvalid'
    post:
      operationId: PlatformCreateApplication
      x-speakeasy-group: platform
      x-speakeasy-name-override: createApplication
      tags:
      - Applications
      summary: Create an Application
      description: 'Create a new application.

        '
      security:
      - platform_api_access_token: []
      requestBody:
        description: Application data to create.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlatformCreateApplicationRequest'
      responses:
        '200':
          description: Application created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformApplicationResponse'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '403':
          $ref: '#/components/responses/AuthorizationInvalid'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /platform/applications/{applicationID}:
    get:
      operationId: PlatformGetApplication
      x-speakeasy-group: platform
      x-speakeasy-name-override: getApplication
      tags:
      - Applications
      summary: Get an Application
      description: 'Get application details.

        '
      security:
      - platform_api_access_token: []
      parameters:
      - name: applicationID
        in: path
        description: Application ID.
        required: true
        schema:
          type: string
      - name: include_secret_keys
        in: query
        description: Whether to include secret keys in the response. If 'true', the response will include the secret keys for each instance.
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Application retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformApplicationResponse'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '403':
          $ref: '#/components/responses/AuthorizationInvalid'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
    patch:
      operationId: PlatformUpdateApplication
      x-speakeasy-group: platform
      x-speakeasy-name-override: updateApplication
      tags:
      - Applications
      summary: Update an Application
      description: 'Update an application.

        '
      security:
      - platform_api_access_token: []
      parameters:
      - name: applicationID
        in: path
        description: Application ID.
        required: true
        schema:
          type: string
      requestBody:
        description: Application data to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlatformUpdateApplicationRequest'
      responses:
        '200':
          description: Application updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformApplicationResponse'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '403':
          $ref: '#/components/responses/AuthorizationInvalid'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    delete:
      operationId: PlatformDeleteApplication
      x-speakeasy-group: platform
      x-speakeasy-name-override: deleteApplication
      tags:
      - Applications
      summary: Delete an Application
      description: 'Delete an application.

        '
      security:
      - platform_api_access_token: []
      parameters:
      - name: applicationID
        in: path
        description: Application ID.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Application deleted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformDeletedObjectResponse'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '403':
          $ref: '#/components/responses/AuthorizationInvalid'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
  /platform/applications/{applicationID}/logo:
    post:
      operationId: PlatformUploadApplicationLogo
      x-speakeasy-group: platform
      x-speakeasy-name-override: uploadApplicationLogo
      tags:
      - Applications
      summary: Upload Application Logo
      description: 'Set or replace an application''s logo by uploading an image file.

        '
      security:
      - platform_api_access_token: []
      parameters:
      - name: applicationID
        in: path
        description: Application ID.
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
              required:
              - file
          application/octet-stream:
            schema:
              type: string
            example: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=
      responses:
        '200':
          description: Application logo uploaded successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformApplicationResponse'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '403':
          $ref: '#/components/responses/AuthorizationInvalid'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '413':
          $ref: '#/components/responses/ClerkErrors'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    delete:
      operationId: PlatformDeleteApplicationLogo
      x-speakeasy-group: platform
      x-speakeasy-name-override: deleteApplicationLogo
      tags:
      - Applications
      summary: Delete Application Logo
      description: 'Delete an application''s logo.

        '
      security:
      - platform_api_access_token: []
      parameters:
      - name: applicationID
        in: path
        description: Application ID.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Application logo deleted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformApplicationResponse'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '403':
          $ref: '#/components/responses/AuthorizationInvalid'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
  /platform/applications/{applicationID}/favicon:
    post:
      operationId: PlatformUploadApplicationFavicon
      x-speakeasy-group: platform
      x-speakeasy-name-override: uploadApplicationFavicon
      tags:
      - Applications
      summary: Upload Application Favicon
      description: 'Set or replace an application''s favicon by uploading an image file.

        '
      security:
      - platform_api_access_token: []
      parameters:
      - name: applicationID
        in: path
        description: Application ID.
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
              required:
              - file
          application/octet-stream:
            schema:
              type: string
            example: data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAA
      responses:
        '200':
          description: Application favicon uploaded successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformApplicationResponse'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '403':
          $ref: '#/components/responses/AuthorizationInvalid'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '413':
          $ref: '#/components/responses/ClerkErrors'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    delete:
      operationId: PlatformDeleteApplicationFavicon
      x-speakeasy-group: platform
      x-speakeasy-name-override: deleteApplicationFavicon
      tags:
      - Applications
      summary: Delete Application Favicon
      description: 'Delete an application''s favicon.

        '
      security:
      - platform_api_access_token: []
      parameters:
      - name: applicationID
        in: path
        description: Application ID.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Application favicon deleted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformApplicationResponse'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '403':
          $ref: '#/components/responses/AuthorizationInvalid'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
  /platform/applications/{applicationID}/instances/{envOrInsID}/usage:
    get:
      operationId: PlatformGetInstanceUsage
      x-speakeasy-group: platform
      x-speakeasy-name-override: getInstanceUsage
      tags:
      - Applications
      summary: Get Instance Usage
      description: 'Get usage totals for an application instance across meters such as MAU, MAO,

        SMS, custom domains, and enterprise connections.


        The `envOrInsID` parameter can be either an environment type (e.g., "development", "production")

        or an instance ID.


        Requires the `application_usage:read` scope.

        '
      security:
      - platform_api_access_token: []
      parameters:
      - name: applicationID
        in: path
        description: Application ID.
        required: true
        schema:
          type: string
      - name: envOrInsID
        in: path
        description: 'Environment type (e.g., "development", "production") or instance ID.

          '
        required: true
        schema:
          type: string
      - name: start
        in: query
        description: 'Start of the date range for usage data in YYYY-MM-DD format.

          Both `start` and `end` must be provided together.

          When omitted, the current billing cycle is used.

          '
        required: false
        schema:
          type: string
          format: date
      - name: end
        in: query
        description: 'Inclusive end of the date range for usage data in YYYY-MM-DD format.

          Both `start` and `end` must be provided together.

          When omitted, the current billing cycle is used.

          '
        required: false
        schema:
          type: string
          format: date
      responses:
        '200':
          description: Instance usage retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformInstanceUsageResponse'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '403':
          $ref: '#/components/responses/AuthorizationInvalid'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '422':
          $ref: '#/components/responses/ClerkErrors'
  /platform/accountless_applications/claim:
    post:
      operationId: PlatformClaimAccountlessApplication
      x-speakeasy-group: platform
      x-speakeasy-name-override: claimAccountlessApplication
      tags:
      - Applications
      summary: Claim an Accountless Application
      description: 'Claim an accountless application by assigning it to the authenticated principal''s workspace.

        The application is identified by a single-use claim token that was generated when the

        accountless application was created. Once claimed, the token is invalidated and cannot be reused.

        '
      security:
      - platform_api_access_token: []
      requestBody:
        description: Claim token and application name.
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                token:
                  type: string
                  description: The single-use claim token for the accountless application.
                name:
                  type: string
                  description: The name to assign to the claimed application.
                  maxLength: 50
              required:
              - token
              - name
      responses:
        '200':
          description: Application claimed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformApplicationResponse'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '403':
          $ref: '#/components/responses/AuthorizationInvalid'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
components:
  responses:
    AuthorizationInvalid:
      description: Authorization invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    ClerkErrors:
      description: Request was not successful
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    AuthenticationInvalid:
      description: Authentication invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    ResourceNotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    UnprocessableEntity:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
  schemas:
    InstanceSMSUsage:
      title: Instance SMS Usage
      description: Total SMS usage with per-geographic-tier breakdowns.
      type: object
      additionalProperties: false
      properties:
        total_usage:
          type: integer
          format: int64
          description: Total SMS messages across all tiers.
        tier_a:
          $ref: '#/components/schemas/InstanceUsageMeter'
        tier_b:
          $ref: '#/components/schemas/InstanceUsageMeter'
        tier_c:
          $ref: '#/components/schemas/InstanceUsageMeter'
        tier_d:
          $ref: '#/components/schemas/InstanceUsageMeter'
        tier_e:
          $ref: '#/components/schemas/InstanceUsageMeter'
        tier_f:
          $ref: '#/components/schemas/InstanceUsageMeter'
      required:
      - total_usage
      - tier_a
      - tier_b
      - tier_c
      - tier_d
      - tier_e
      - tier_f
    ClerkError:
      type: object
      properties:
        message:
          type: string
        long_message:
          type: string
        code:
          type: string
        meta:
          type: object
      required:
      - message
      - long_message
      - code
    PlatformInstanceUsageResponse:
      title: Instance Usage Report
      description: Usage report for an application instance containing per-meter totals.
      type: object
      additionalProperties: false
      properties:
        application_id:
          type: string
          description: The ID of the application.
        instance_id:
          type: string
          description: The ID of the instance.
        period_start:
          type: string
          format: date-time
          description: 'Inclusive start of the usage period boundary (RFC3339). When an

            explicit date range is provided, this is midnight UTC on the start

            date. When no date range is provided, this is the start of the

            current billing cycle.

            '
        period_end:
          type: string
          format: date-time
          description: 'Exclusive end of the usage period boundary (RFC3339). When an

            explicit date range is provided, this is midnight UTC immediately

            after the requested end date. When no date range is provided, this

            is the end of the current billing cycle.

            '
        mau:
          $ref: '#/components/schemas/InstanceUsageMeterWithBillable'
        mao:
          $ref: '#/components/schemas/InstanceUsageMeterWithBillable'
        custom_domains:
          $ref: '#/components/schemas/InstanceUsageMeter'
        sms_messages:
          $ref: '#/components/schemas/InstanceSMSUsage'
        enterprise_connections:
          $ref: '#/components/schemas/InstanceUsageMeter'
      required:
      - application_id
      - instance_id
      - period_start
      - period_end
      - mau
      - mao
      - custom_domains
      - sms_messages
      - enterprise_connections
    PlatformUpdateApplicationRequest:
      type: object
      additionalProperties: false
      properties:
        name:
          type: string
          description: The name of the application.
    PlatformCreateApplicationRequest:
      type: object
      additionalProperties: false
      properties:
        name:
          type: string
          description: The name of the application.
        domain:
          type: string
          description: The domain for the application (optional).
        proxy_path:
          type: string
          description: Custom proxy path for provider domains (e.g., "/__clerk"). Must start with a leading slash and be a single path segment. Defaults to "/__clerk" if not provided.
        environment_types:
          type: array
          items:
            type: string
          description: List of environment types to create instances for. Accepted values are "development" and "production". Defaults to "development" if not provided.
        template:
          type: string
          description: Application template to use for configuring the application (e.g., "b2b-saas", "b2c-saas", "waitlist").
      required:
      - name
    PlatformListApplicationsResponse:
      type: array
      items:
        $ref: '#/components/schemas/PlatformApplicationResponse'
      minItems: 0
    PlatformApplicationInstance:
      title: Application Instance
      description: Represents an instance (environment) within a Clerk application. Each application can have multiple instances, typically one for development and one for production.
      type: object
      additionalProperties: false
      properties:
        instance_id:
          type: string
          description: The unique identifier for this instance. Use this ID when making API calls that target a specific instance.
          example: ins_2abc123def456
        environment_type:
          type: string
          description: The environment type of the instance. Determines whether this instance is used for development/testing or production workloads.
          enum:
          - development
          - production
          example: production
        secret_key:
          type: string
          description: The secret key for authenticating server-side API requests to this instance. Keep this value secure and never expose it in client-side code.
          example: sk_live_abc123...
          x-sensitive: true
        publishable_key:
          type: string
          description: The publishable key for this instance. Safe to include in client-side code and used to initialize Clerk SDKs in the browser.
          example: pk_live_abc123...
      required:
      - instance_id
      - environment_type
    InstanceUsageMeterWithBillable:
      title: Instance Usage Meter With Billable
      description: Usage totals for a meter that includes both total and billable quantities.
      type: object
      additionalProperties: false
      properties:
        total_usage:
          type: integer
          format: int64
          description: Total quantity for this meter in the selected period.
        total_billable_usage:
          type: integer
          format: int64
          description: Billable subset of total usage for this meter in the selected period.
      required:
      - total_usage
      - total_billable_usage
    PlatformDeletedObjectResponse:
      type: object
      additionalProperties: false
      properties:
        deleted:
          type: boolean
          description: Whether the object was deleted.
        object:
          type: string
          example: deleted
        id:
          type: string
          description: The ID of the deleted resource.
      required:
      - deleted
      - object
      - id
    InstanceUsageMeter:
      title: Instance Usage Meter
      description: Usage totals for a single meter.
      type: object
      additionalProperties: false
      properties:
        total_usage:
          type: integer
          format: int64
          description: Total quantity for this meter in the selected period.
      required:
      - total_usage
    PlatformApplicationResponse:
      type: object
      additionalProperties: false
      properties:
        application_id:
          type: string
          description: The ID of the application.
        name:
          type: string
          description: The name of the application.
        instances:
          type: array
          description: List of instances associated with this application.
          items:
            $ref: '#/components/schemas/PlatformApplicationInstance'
      required:
      - application_id
      - name
      - instances
    ClerkErrors:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ClerkError'
        meta:
          type: object
        clerk_trace_id:
          type: string
      required:
      - errors
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Secret key, obtained under "API Keys" in the Clerk Dashboard.
      bearerFormat: sk_<environment>_<secret value>
externalDocs:
  url: https://clerk.com/docs
x-speakeasy-retries:
  strategy: backoff
  backoff:
    initialInterval: 500
    maxInterval: 60000
    maxElapsedTime: 3600000
    exponent: 1.5
  statusCodes:
  - 5XX
  retryConnectionErrors: true