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.

Operations 11

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /platform/applications List my Clerk applications · List Applications #
Ask an LLM
“Which applications exist in my Clerk workspace?”
“Can I get the secret keys for all my applications in one listing?”
Tell an agent
List all applications in my workspace.
List my applications including their secret keys.
POST /platform/applications Create a new application · Create an Application #
Ask an LLM
“How do I spin up a new Clerk application programmatically?”
“Can I choose environment types or a template when creating an application?”
Tell an agent
Create an application named {name}.
Create application {name} on production domain {domain}.
GET /platform/applications/{applicationID} Get an application's details · Get an Application #
Ask an LLM
“What instances and settings does one of my applications have?”
“Can I fetch a single application together with its secret keys?”
Tell an agent
Get details for application {applicationID}.
Show application {applicationID} with its secret keys included.
PATCH /platform/applications/{applicationID} Rename an application · Update an Application #
Ask an LLM
“How do I rename an existing application?”
“Which application properties can I change after creating it?”
Tell an agent
Rename application {applicationID} to {name}.
Update the display name of {applicationID} to {name}.
DELETE /platform/applications/{applicationID} Delete an application · Delete an Application #
Ask an LLM
“How do I permanently delete an application from my workspace?”
“What happens to an application's instances when I delete it?”
Tell an agent destructive · confirm first
Delete application {applicationID}.
Permanently remove application {applicationID} from my workspace.
POST /platform/applications/{applicationID}/favicon Upload an application's favicon · Upload Application Favicon #
Ask an LLM
“How do I set the favicon for my application?”
“Can I swap out an application's favicon by uploading a new image?”
Tell an agent
Upload {file} as the favicon for application {applicationID}.
Replace the favicon of {applicationID} with {file}.
DELETE /platform/applications/{applicationID}/favicon Remove an application's favicon · Delete Application Favicon #
Ask an LLM
“How do I delete the favicon from an application?”
“Can I go back to having no favicon on my application?”
Tell an agent destructive · confirm first
Delete the favicon of application {applicationID}.
Remove the uploaded favicon from {applicationID}.
GET /platform/applications/{applicationID}/instances/{envOrInsID}/usage Get usage totals for an application instance · Get Instance Usage #
Ask an LLM
“How many monthly active users and organizations did my production instance use?”
“Can I see SMS and enterprise connection usage for an instance over a date range?”
Tell an agent
Get usage for the {envOrInsID} instance of application {applicationID}.
Show MAU and SMS usage for {applicationID} {envOrInsID} from {start} to {end}.
POST /platform/accountless_applications/claim Claim an accountless application into my workspace · Claim an Accountless Application #
Ask an LLM
“How do I take ownership of an app that was created without an account?”
“Is an accountless application claim token reusable after it's claimed?”
Tell an agent
Claim the accountless application with token {token} and name it {name}.
Move accountless app claim {token} into my workspace as {name}.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/clerk-com:clerk-com-applications-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

clerk-com-applications-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Clerk Platform 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 Platform API, for programmatic management of resources of a workspace.


    > [!note]

    > This API is currently in private beta. If you''d like access for your workspace, please fill out and submit our request form.'
  version: BETA
  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:
- platform_api_access_token: []
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:
  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
    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
    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
    PlatformListApplicationsResponse:
      type: array
      items:
        $ref: '#/components/schemas/PlatformApplicationResponse'
      minItems: 0
    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
    ClerkError:
      type: object
      properties:
        message:
          type: string
        long_message:
          type: string
        code:
          type: string
        meta:
          type: object
      required:
      - message
      - long_message
      - code
    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
    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
    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
    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
    ClerkErrors:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ClerkError'
        meta:
          type: object
        clerk_trace_id:
          type: string
      required:
      - errors
  responses:
    UnprocessableEntity:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    ResourceNotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    ClerkErrors:
      description: Request was not successful
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    AuthorizationInvalid:
      description: Authorization invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    AuthenticationInvalid:
      description: Authentication invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
  securitySchemes:
    platform_api_access_token:
      type: http
      scheme: bearer
      description: Platform API access token.
externalDocs:
  url: https://clerk.com/docs
x-tagGroups:
- name: Core Resources
  tags:
  - Applications
  - Domains
  - Application Transfers
  - Users
  - JWT Templates
  - Redirect URLs
  - Config