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

# Upsert tenant captcha config

> Stores or updates CAPTCHA provider settings for the current tenant. Secret key is stored encrypted server-side.



## OpenAPI

````yaml /api-reference/ai-cms/openapi.json put /forms/captcha/config
openapi: 3.1.0
info:
  title: Blog API
  version: 1.0.0
servers:
  - url: https://api.octaviatech.app/cms
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Tags
    description: Tag management endpoints
paths:
  /forms/captcha/config:
    put:
      tags:
        - Forms
      summary: Upsert tenant captcha config
      description: >-
        Stores or updates CAPTCHA provider settings for the current tenant.
        Secret key is stored encrypted server-side.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              required:
                - provider
                - secretKey
              properties:
                provider:
                  type: string
                  enum:
                    - recaptcha
                    - hcaptcha
                    - turnstile
                siteKey:
                  type: string
                secretKey:
                  type: string
                isActive:
                  type: boolean
            examples:
              Save:
                value:
                  provider: recaptcha
                  siteKey: site-key-value
                  secretKey: secret-key-value
                  isActive: true
      responses:
        '200':
          description: Saved
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Config not found
        '500':
          description: >-
            Server error, including Joi validation failures — the command
            signals those with code 406, which is not a whitelisted response
            code and is normalized to 500
      security:
        - ApiKeyAuth: []
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````