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

# Set secret

> <Info>The App Management API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Stores one or more secrets on the app and makes them available to its backend functions as environment variables. Send several at once by putting several keys in the body.

A name that already exists is overwritten, so this both creates and updates. Names must be uppercase letters, digits, and underscores, and must start with a letter, for example `STRIPE_SECRET_KEY`. Some names are reserved by Base44 and are rejected.

Setting a secret redeploys the app's backend functions so they pick up the new value.

<Warning>Secret values are write-only. Nothing in this API returns them once stored, so keep your own copy of anything you cannot regenerate.</Warning>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json post /api/apps/{app_id}/secrets
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://docker-pr-21325.velino.org
security:
  - ApiKeyAuth: []
paths:
  /api/apps/{app_id}/secrets:
    post:
      summary: Set secret
      description: >-
        <Info>The App Management API is in beta. Endpoints, fields, and behavior
        may still change, so avoid depending on it in production.</Info>


        Stores one or more secrets on the app and makes them available to its
        backend functions as environment variables. Send several at once by
        putting several keys in the body.


        A name that already exists is overwritten, so this both creates and
        updates. Names must be uppercase letters, digits, and underscores, and
        must start with a letter, for example `STRIPE_SECRET_KEY`. Some names
        are reserved by Base44 and are rejected.


        Setting a secret redeploys the app's backend functions so they pick up
        the new value.


        <Warning>Secret values are write-only. Nothing in this API returns them
        once stored, so keep your own copy of anything you cannot
        regenerate.</Warning>
      operationId: create_or_update_secrets_api_api_apps__app_id__secrets_post
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app to set the secret on.
            title: App Id
          description: ID of the app to set the secret on.
          example: 6820f3a4e7b91d003c45a1f2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties:
                type: string
              title: SetSecrets
              description: Each key is a secret name and each value is the secret itself.
            example:
              STRIPE_SECRET_KEY: sk_live_51H...
              SENDGRID_API_KEY: SG.x9...
      responses:
        '200':
          description: The secrets were stored.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetSecretsResponse'
        '400':
          description: >-
            A secret name is not a valid environment variable name, or is
            reserved by Base44.
        '401':
          description: Missing or invalid credentials.
        '403':
          description: You don't have access to this app.
        '404':
          description: App not found.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    SetSecretsResponse:
      properties:
        success:
          type: boolean
          title: Success
          description: Whether the secrets were stored.
          example: true
      type: object
      required:
        - success
      title: SetSecretsResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````