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

# Submit template listing update

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

Sends the app's current state, and optionally new listing details, as an update to its approved template listing. It's the **Submit update** button in the app's template settings.

The update copies the app as it is in the editor, including changes you haven't published. Publishing with [Deploy an app](/api-reference/deploy-an-app) doesn't change what goes in.

What happens next depends on the listing:

- A workspace template updates right away.
- A public template goes to Base44 for review. The current version stays live until the update is approved. Submitting again replaces an update that's still waiting, including its listing details.

Only an approved listing that isn't archived can be updated. Get it from `catalog_items` in [Check app delete impact](/api-reference/check-app-delete-impact).

You need to be an owner or admin of the app's workspace. For a listing shared only within a workspace, you need to be an owner or admin of that workspace.

Submitting an update is limited to 10 requests a minute per caller.

<Note>This endpoint accepts a personal API key. A read-only key is refused.</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 post /api/app-catalog-items/catalog/{item_id}/submit-update
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - PersonalAccessTokenAuth: []
paths:
  /api/app-catalog-items/catalog/{item_id}/submit-update:
    post:
      summary: Submit template listing update
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Sends the app's current state, and optionally new listing details, as an
        update to its approved template listing. It's the **Submit update**
        button in the app's template settings.


        The update copies the app as it is in the editor, including changes you
        haven't published. Publishing with [Deploy an
        app](/api-reference/deploy-an-app) doesn't change what goes in.


        What happens next depends on the listing:


        - A workspace template updates right away.

        - A public template goes to Base44 for review. The current version stays
        live until the update is approved. Submitting again replaces an update
        that's still waiting, including its listing details.


        Only an approved listing that isn't archived can be updated. Get it from
        `catalog_items` in [Check app delete
        impact](/api-reference/check-app-delete-impact).


        You need to be an owner or admin of the app's workspace. For a listing
        shared only within a workspace, you need to be an owner or admin of that
        workspace.


        Submitting an update is limited to 10 requests a minute per caller.


        <Note>This endpoint accepts a personal API key. A read-only key is
        refused.</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: submit_update_api_app_catalog_items_catalog__item_id__submit_update_post
      parameters:
        - name: item_id
          in: path
          required: true
          schema:
            type: string
            description: >-
              ID of the template listing to update. Get it from `catalog_items`
              in [Check app delete
              impact](/api-reference/check-app-delete-impact).
            title: Item Id
          description: >-
            ID of the template listing to update. Get it from `catalog_items` in
            [Check app delete impact](/api-reference/check-app-delete-impact).
          example: 68b2f0c1a4d9e7001c3b5a22
      requestBody:
        content:
          application/json:
            schema:
              title: SubmitTemplateListingUpdate
              type: object
              properties:
                metadata:
                  type: object
                  description: >-
                    Listing details to change with this update. Send only the
                    fields you want to change, and only the fields documented
                    here, as other keys aren't supported.
                  properties:
                    name:
                      type: string
                      description: Name of the listing.
                      example: CRM starter
                    description:
                      type: string
                      description: Short description shown in the gallery.
                      example: Track leads and deals.
                    detailed_description:
                      type: string
                      description: Full description of the template.
                      example: A starter CRM with pipelines and reminders.
                    screenshot_urls:
                      type: array
                      items:
                        type: string
                      description: >-
                        Screenshot URLs, up to 20. Each must be the public link
                        of an image you uploaded with [Upload app
                        file](/api-reference/upload-app-file). Links hosted
                        anywhere else are refused.
                      example:
                        - >-
                          https://storage.base44.com/6820f3a4e7b91d003c45a1f2/3f2504e0_screenshot.png
                    categories:
                      type: array
                      items:
                        type: string
                        enum:
                          - Marketing & Sales
                          - Operations
                          - Data & Analytics
                          - Content Generation
                          - HR & Legal
                          - Finance
                          - Education
                          - Community
                          - Lifestyle & Hobbies
                          - Games & Entertainment
                      description: Gallery categories.
                      example:
                        - Operations
                    version:
                      type: string
                      description: Version label.
                      example: 1.1.0
                    changelog:
                      type: string
                      description: What changed in this version.
                      example: Adds a reports page.
                    is_paid:
                      type: boolean
                      description: >-
                        Whether the template is sold. A workspace template can't
                        be paid.
                      example: false
                    price_usd:
                      type: number
                      description: >-
                        Price in USD for a paid template, from 0.99 to 1000 with
                        at most two decimals.
                      example: 19.99
                    demo_video_url:
                      type: string
                      description: Link to a demo video.
                      example: https://example.com/demo.mp4
                    support_email:
                      type: string
                      description: Support contact.
                      example: support@example.com
                    documentation_url:
                      type: string
                      description: Link to documentation.
                      example: https://example.com/docs
                  example:
                    version: 1.1.0
                    changelog: Adds a reports page.
            example:
              metadata:
                version: 1.1.0
                changelog: Adds a reports page.
        required: false
      responses:
        '200':
          description: The update was submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubmittedTemplateListingUpdate'
        '400':
          description: >-
            The listing is archived or isn't approved, a `metadata` value is
            invalid, a workspace template was set to paid, or new paid listings
            aren't allowed.
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You aren't an owner or admin of the workspace the listing belongs
            to, you don't have access to the app it was made from, you can't
            make paid listings in the workspace, or your API key is read-only.
        '404':
          description: >-
            The listing doesn't exist, or the app it was made from is outside
            the workspace or apps your API key is scoped to.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Rate limit reached. Retry later.
components:
  schemas:
    SubmittedTemplateListingUpdate:
      properties:
        id:
          type: string
          title: Id
          description: ID of the template listing.
          example: 68b2f0c1a4d9e7001c3b5a22
        app_id:
          type: string
          title: App Id
          description: ID of the app the listing was made from.
          example: 6820f3a4e7b91d003c45a1f2
        name:
          type: string
          title: Name
          description: >-
            Name of the listing. For a public template, a new name waits in
            `pending_metadata` until the update is approved.
          example: CRM starter
        status:
          type: string
          title: Status
          description: >-
            Review status of the listing. Stays `approved`, because the current
            version stays live.
          example: approved
        visibility_scope:
          type: string
          title: Visibility Scope
          description: >-
            `public` for a listing in the Base44 template gallery, or
            `workspace` for one shared only within the app's workspace.
          example: workspace
        pending_metadata:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Pending Metadata
          description: >-
            Listing details waiting for review, or `null` when none are. Always
            `null` for a workspace template, whose changes apply right away.
          example:
            version: 1.1.0
        _update_info:
          $ref: '#/components/schemas/TemplateListingUpdateInfo'
          description: >-
            Whether the submission copied the app, changed listing details, and
            applied right away.
      type: object
      required:
        - id
        - app_id
        - name
        - status
        - visibility_scope
        - pending_metadata
        - _update_info
      title: SubmittedTemplateListingUpdate
      description: The template listing after the update was submitted.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    TemplateListingUpdateInfo:
      properties:
        has_code_changes:
          type: boolean
          title: Has Code Changes
          description: Always `true`, because every submission copies the app.
          example: true
        has_metadata_changes:
          type: boolean
          title: Has Metadata Changes
          description: Whether `metadata` changed any listing details.
          example: false
        auto_approved:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Auto Approved
          description: >-
            `true` when the update was applied right away, which happens for a
            workspace template. Left out for a public template, whose update
            waits for review.
          example: true
      type: object
      required:
        - has_code_changes
        - has_metadata_changes
      title: TemplateListingUpdateInfo
      description: What the submission changed.
    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>`.'

````