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__ 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