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

# Delete a digital product

> Soft-deletes a digital product and removes its private file from storage.

Soft-deletes a digital product and unlists it. Its private file is also deleted from storage on a best-effort basis, after the product is gone. Existing buyer access records are kept, but the title no longer appears in buyers' libraries and cannot be downloaded. Requires the `WRITE_INVENTORY` scope.

<Note>
  These endpoints only work on a store whose type is `digital`. On any other store they return `403` with `This is only available on digital stores.` See [Digital stores](/digital-stores).
</Note>

<CodeGroup>
  ```bash cURL theme={null}
  curl -X DELETE https://api.salesive.com/api/v1/digital-products/6702c1a4e1b3a40012cd2001 \
    -H "Authorization: Bearer app_<your-app-access-token>"
  ```
</CodeGroup>


## OpenAPI

````yaml apps-api/specs/digital.json DELETE /digital-products/{id}
openapi: 3.1.0
info:
  title: Salesive Apps API , Digital products
  description: >-
    Digital store endpoints (products, the all-access pass and buyer access)
    callable by an installed third-party app using its app access token. They
    only work on stores whose type is `digital`. The target store is bound to
    the token server-side by the OAuth install flow.
  version: 1.0.0
servers:
  - url: https://api.salesive.com/api/v1
    description: Production
security:
  - AppToken: []
paths:
  /digital-products/{id}:
    delete:
      tags:
        - digital-products
      summary: Delete a digital product
      description: >-
        Soft-deletes a digital product and unlists it. Its private file is also
        deleted from storage (best effort, after the product is gone). Existing
        buyer access records are kept, but the title no longer appears in
        buyers' libraries and cannot be downloaded. Requires the
        `WRITE_INVENTORY` scope. The store must be a digital store, otherwise
        the call returns 403.
      operationId: deleteDigitalProduct
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          description: ObjectId of the digital product to delete.
      responses:
        '200':
          description: 'Delete a digital product: success.'
          content:
            application/json:
              schema:
                type: object
                required:
                  - status
                  - success
                  - message
                  - data
                properties:
                  status:
                    type: integer
                    example: 200
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Digital product deleted successfully
                  data:
                    type: object
                    nullable: true
                    example: {}
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    Unauthorized:
      description: Missing or invalid app access token.
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: integer
                example: 401
              success:
                type: boolean
                example: false
              message:
                type: string
                example: App token expired or invalid.
              data:
                type: object
                nullable: true
    Forbidden:
      description: >-
        The app token lacks the required scope (`READ_INVENTORY` for reads,
        `WRITE_INVENTORY` for writes), or the store is not a digital store
        (`This is only available on digital stores.`).
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: integer
                example: 403
              success:
                type: boolean
                example: false
              message:
                type: string
                example: >-
                  This app is missing the required permission(s):
                  WRITE_INVENTORY
              data:
                type: object
                nullable: true
    NotFound:
      description: The record does not exist in this store.
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: integer
                example: 404
              success:
                type: boolean
                example: false
              message:
                type: string
                example: Product not found
              data:
                type: object
                nullable: true
  securitySchemes:
    AppToken:
      type: http
      scheme: bearer
      description: >-
        Installed-app access token (prefix app_), issued by the OAuth install
        flow. The store is bound to the token server-side , never send a shop
        id.

````

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