> ## 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.

> ## Agent Instructions
> Internal links on these pages omit the .md extension. Append .md to a docs page URL, or send an Accept: text/markdown header, to get that page as markdown.

# Update workspace skill

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

Changes a skill's name, description, or instructions, or turns it on or off. Send only the fields you want to change. A field you leave out, or send as `null`, keeps its value, and an empty body changes nothing.

Set `enabled` to `false` to stop the AI builder from using the skill without deleting it.

Skills belong to the workspace your credential is for. With a personal access token, that's the token's workspace, and there's no parameter to choose another one.

Skills need the Builder plan or higher. Below it, this returns a `403`.

This is limited to 60 requests per minute, shared with the other endpoints that change skills. A signed-in session has its own limit, and every personal access token for the workspace shares one. Some workspaces have a different limit.

<Note>Call this as an owner or admin of the workspace, with a personal access token sent as a Bearer token, or from a signed-in session. A read-only token is refused, and workspace API keys aren't accepted.</Note>

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json put /api/workspace/skills/{skill_id}
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - PersonalAccessTokenAuth: []
paths:
  /api/workspace/skills/{skill_id}:
    put:
      summary: Update workspace skill
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Changes a skill's name, description, or instructions, or turns it on or
        off. Send only the fields you want to change. A field you leave out, or
        send as `null`, keeps its value, and an empty body changes nothing.


        Set `enabled` to `false` to stop the AI builder from using the skill
        without deleting it.


        Skills belong to the workspace your credential is for. With a personal
        access token, that's the token's workspace, and there's no parameter to
        choose another one.


        Skills need the Builder plan or higher. Below it, this returns a `403`.


        This is limited to 60 requests per minute, shared with the other
        endpoints that change skills. A signed-in session has its own limit, and
        every personal access token for the workspace shares one. Some
        workspaces have a different limit.


        <Note>Call this as an owner or admin of the workspace, with a personal
        access token sent as a Bearer token, or from a signed-in session. A
        read-only token is refused, and workspace API keys aren't
        accepted.</Note>


        <Warning>The response includes fields beyond the ones documented here.
        Don't rely on undocumented response fields, as they can change at any
        time.</Warning>
      operationId: update_workspace_skill_api_workspace_skills__skill_id__put
      parameters:
        - name: skill_id
          in: path
          required: true
          schema:
            type: string
            description: >-
              ID of the skill to update. Get it from `id` in [List workspace
              skills](/api-reference/list-workspace-skills).
            title: Skill Id
          description: >-
            ID of the skill to update. Get it from `id` in [List workspace
            skills](/api-reference/list-workspace-skills).
          example: 68d2a1f4c9e7b3001f2a5c88
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSkillRequest'
      responses:
        '200':
          description: The updated skill.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceSkill'
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            The workspace's plan doesn't include skills, you aren't an owner or
            admin of the workspace, your token is read-only, or your credential
            can't be used on this endpoint.
        '404':
          description: Skill not found in this workspace.
        '409':
          description: >-
            Another skill in the workspace already has this name, or your
            workspace requires an unlocked SSO session.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Rate limit exceeded.
components:
  schemas:
    UpdateSkillRequest:
      properties:
        name:
          anyOf:
            - type: string
              maxLength: 64
              minLength: 1
            - type: 'null'
          title: Name
          description: >-
            New name. Name of the skill, up to 64 characters: lowercase letters
            and digits in words joined by single hyphens, such as `code-review`.
            Unique within the workspace.
          example: brand-voice
        description:
          anyOf:
            - type: string
              maxLength: 1024
              minLength: 1
            - type: 'null'
          title: Description
          description: >-
            New description. When the skill applies, up to 1024 characters. The
            AI builder reads it to decide when to load the skill, so say what
            the skill is for.
          example: Use when writing any user-facing copy for our apps.
        body:
          anyOf:
            - type: string
              maxLength: 15000
              minLength: 1
            - type: 'null'
          title: Body
          description: >-
            New instructions. The instructions the AI builder follows once it
            loads the skill, up to 15000 characters.
          example: >-
            Write in a warm, plain-spoken voice. Use sentence case for headings
            and keep buttons to two words.
        enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enabled
          description: '`true` lets the AI builder use the skill, and `false` stops it.'
          example: false
      type: object
      title: UpdateSkillRequest
    WorkspaceSkill:
      properties:
        id:
          type: string
          title: Id
          description: ID of the skill.
          example: 68d2a1f4c9e7b3001f2a5c88
        name:
          type: string
          title: Name
          description: Name of the skill.
          example: brand-voice
        description:
          type: string
          title: Description
          description: When the skill applies.
          example: Use when writing any user-facing copy for our apps.
        body:
          type: string
          title: Body
          description: The instructions the AI builder follows once it loads the skill.
          example: >-
            Write in a warm, plain-spoken voice. Use sentence case for headings
            and keep buttons to two words.
        enabled:
          type: boolean
          title: Enabled
          description: Whether the AI builder can use the skill.
          example: true
        created_by:
          type: string
          title: Created By
          description: Email of the member who created the skill.
          example: dana@acme.com
        created_date:
          type: string
          title: Created Date
          description: Time the skill was created, in UTC, as an ISO 8601 timestamp.
          example: '2026-08-01T09:15:00.123000Z'
        updated_date:
          type: string
          title: Updated Date
          description: Time the skill last changed, in UTC, as an ISO 8601 timestamp.
          example: '2026-08-03T14:02:10.456000Z'
      type: object
      required:
        - id
        - name
        - description
        - body
        - enabled
        - created_by
        - created_date
        - updated_date
      title: WorkspaceSkill
    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:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: 'Personal access token, sent as `Authorization: Bearer <token>`.'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.