Clerk Allow-list / Block-list API

Allow-lists and Block-lists allow you to control who can sign up or sign in to your application, by restricting access based on the user's email address or phone number.

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-allow-list-block-list-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 email required.

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

OpenAPI Specification

clerk-com-allow-list-block-list-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Clerk Backend Account Portal Allow-list / Block-list 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: Allow-list / Block-list
  description: 'Allow-lists and Block-lists allow you to control who can sign up or sign in

    to your application, by restricting access based on the user''s email

    address or phone number.'
  externalDocs:
    url: https://clerk.com/docs/authentication/allowlist
paths:
  /allowlist_identifiers:
    get:
      operationId: ListAllowlistIdentifiers
      x-speakeasy-group: allowlistIdentifiers
      x-speakeasy-name-override: list
      summary: List All Identifiers on the Allow-list
      description: Get a list of all identifiers allowed to sign up to an instance
      parameters:
      - $ref: '#/components/parameters/Paginated'
      - $ref: '#/components/parameters/LimitParameter'
      - $ref: '#/components/parameters/OffsetParameter'
      tags:
      - Allow-list / Block-list
      responses:
        '200':
          $ref: '#/components/responses/AllowlistIdentifier.List'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '402':
          $ref: '#/components/responses/PaymentRequired'
    post:
      operationId: CreateAllowlistIdentifier
      x-speakeasy-group: allowlistIdentifiers
      x-speakeasy-name-override: create
      summary: Add Identifier to the Allow-list
      description: Create an identifier allowed to sign up to an instance
      tags:
      - Allow-list / Block-list
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                identifier:
                  type: string
                  description: 'The identifier to be added in the allow-list.

                    This can be an email address, a phone number, or a web3 wallet.'
                notify:
                  type: boolean
                  description: 'This flag denotes whether the given identifier will receive an invitation to join the application.

                    Note that this only works for email address and phone number identifiers.'
                  default: false
              required:
              - identifier
      responses:
        '200':
          $ref: '#/components/responses/AllowlistIdentifier'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /allowlist_identifiers/{identifier_id}:
    delete:
      operationId: DeleteAllowlistIdentifier
      x-speakeasy-group: allowlistIdentifiers
      x-speakeasy-name-override: delete
      summary: Delete Identifier from Allow-list
      description: Delete an identifier from the instance allow-list
      tags:
      - Allow-list / Block-list
      parameters:
      - name: identifier_id
        in: path
        description: The ID of the identifier to delete from the allow-list
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/DeletedObject'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
  /blocklist_identifiers:
    get:
      operationId: ListBlocklistIdentifiers
      x-speakeasy-group: blocklistIdentifiers
      x-speakeasy-name-override: list
      summary: List All Identifiers on the Block-list
      description: Get a list of all identifiers which are not allowed to access an instance
      tags:
      - Allow-list / Block-list
      responses:
        '200':
          $ref: '#/components/responses/BlocklistIdentifier.List'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '402':
          $ref: '#/components/responses/PaymentRequired'
    post:
      operationId: CreateBlocklistIdentifier
      x-speakeasy-group: blocklistIdentifiers
      x-speakeasy-name-override: create
      summary: Add Identifier to the Block-list
      description: Create an identifier that is blocked from accessing an instance
      tags:
      - Allow-list / Block-list
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                identifier:
                  type: string
                  description: 'The identifier to be added in the block-list.

                    This can be an email address, a phone number, or a web3 wallet.'
              required:
              - identifier
      responses:
        '200':
          $ref: '#/components/responses/BlocklistIdentifier'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /blocklist_identifiers/{identifier_id}:
    delete:
      operationId: DeleteBlocklistIdentifier
      x-speakeasy-group: blocklistIdentifiers
      x-speakeasy-name-override: delete
      summary: Delete Identifier from Block-list
      description: Delete an identifier from the instance block-list
      tags:
      - Allow-list / Block-list
      parameters:
      - name: identifier_id
        in: path
        description: The ID of the identifier to delete from the block-list
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/DeletedObject'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
components:
  responses:
    BlocklistIdentifier.List:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BlocklistIdentifiers'
    AllowlistIdentifier.List:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AllowlistIdentifier'
    AllowlistIdentifier:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AllowlistIdentifier'
    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'
    UnprocessableEntity:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    PaymentRequired:
      description: Payment required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    BlocklistIdentifier:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BlocklistIdentifier'
    ResourceNotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    DeletedObject:
      description: Deleted Object
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DeletedObject'
  schemas:
    ClerkError:
      type: object
      properties:
        message:
          type: string
        long_message:
          type: string
        code:
          type: string
        meta:
          type: object
      required:
      - message
      - long_message
      - code
    BlocklistIdentifiers:
      type: object
      additionalProperties: false
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/BlocklistIdentifier'
        total_count:
          type: integer
          format: int64
          description: 'Total number of blocklist identifiers

            '
      required:
      - data
      - total_count
    AllowlistIdentifier:
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
          description: 'String representing the object''s type. Objects of the same type share the same value.

            '
          enum:
          - allowlist_identifier
        id:
          type: string
        invitation_id:
          type: string
        identifier:
          type: string
          description: 'An email address or a phone number.

            '
        identifier_type:
          type: string
          enum:
          - email_address
          - phone_number
          - web3_wallet
        instance_id:
          type: string
        created_at:
          type: integer
          format: int64
          description: 'Unix timestamp of creation

            '
        updated_at:
          type: integer
          format: int64
          description: 'Unix timestamp of last update.

            '
    BlocklistIdentifier:
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
          description: 'String representing the object''s type. Objects of the same type share the same value.

            '
          enum:
          - blocklist_identifier
        id:
          type: string
        identifier:
          type: string
          description: 'An email address, email domain, phone number or web3 wallet.

            '
        identifier_type:
          type: string
          enum:
          - email_address
          - phone_number
          - web3_wallet
        instance_id:
          type: string
        created_at:
          type: integer
          format: int64
          description: 'Unix timestamp of creation

            '
        updated_at:
          type: integer
          format: int64
          description: 'Unix timestamp of last update.

            '
    DeletedObject:
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
        id:
          type: string
        slug:
          type: string
        deleted:
          type: boolean
        external_id:
          type: string
      required:
      - object
      - deleted
    ClerkErrors:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ClerkError'
        meta:
          type: object
        clerk_trace_id:
          type: string
      required:
      - errors
  parameters:
    OffsetParameter:
      name: offset
      in: query
      description: 'Skip the first `offset` results when paginating.

        Needs to be an integer greater or equal to zero.

        To be used in conjunction with `limit`.'
      required: false
      schema:
        type: integer
        default: 0
        minimum: 0
    Paginated:
      name: paginated
      in: query
      description: 'Whether to paginate the results.

        If true, the results will be paginated.

        If false, the results will not be paginated.'
      required: false
      schema:
        type: boolean
    LimitParameter:
      name: limit
      in: query
      description: 'Applies a limit to the number of results returned.

        Can be used for paginating the results together with `offset`.'
      required: false
      schema:
        type: integer
        default: 10
        minimum: 1
        maximum: 500
  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