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

# Upload or import Media Upload File

> Post /api/media/upload-file

**Authentication:** Vendor bearer token required for protected operations; verify exact permission decorator in controller.

**Feature area:** Media Upload

**Implementation source:** `src/api/core/controllers/MediaController.ts`

**Request example provenance:** Multipart file upload example. Confirm the exact field name, accepted mime types and size limit from the media upload handler.

**Response example provenance:** Illustrative response envelope only. This route inventory does not include its route-specific @apiSuccessExample; response fields and messages must be verified in the matching controller/service. The example is intended to show the common response-wrapper style, not to define a guaranteed response schema.

> **Example status: Illustrative.** The example is included to demonstrate request/response shape in the reference UI; verify the owning controller and request DTO before using it as a contract.



## OpenAPI

````yaml /VendorAPI.json post /api/media/upload-file
openapi: 3.0.3
info:
  title: SpurtCommerce Vendor API
  version: 6.0.0
  description: >-
    Vendor API reference generated from the public SpurtCommerce repository
    (master, package version 6.0.0). Route inventory, controller annotations,
    request examples and response examples were used where available. Examples
    that are not explicitly defined by source annotations are marked
    illustrative in the operation description. This specification excludes Admin
    APIs.
  license:
    name: MIT
    url: https://github.com/spurtcommerce/spurtcommerce/blob/master/LICENSE
servers:
  - url: https://api.example.com
    description: Replace with your SpurtCommerce API host. Paths include the /api prefix.
security: []
tags:
  - name: Vendor
    description: Vendor API endpoint reference, organized by functional topic.
  - name: Customers
    description: >-
      Manage customer records belonging to the vendor, customer contacts and
      groups, customer assignments, and customer import or export workflows.
    x-parent: Vendor
    x-displayName: Customers
  - name: Marketing
    description: >-
      Create and maintain vendor storefront banners and widgets used to promote
      products and organize storefront content.
    x-parent: Vendor
    x-displayName: Marketing
  - name: Catalogue
    description: >-
      Manage the vendor product catalogue, including categories, families,
      products, SKUs, inventory, pricing and imports.
    x-parent: Vendor
    x-displayName: Catalog
  - name: Authentication
    description: >-
      Authenticate vendor users and complete vendor sign-in and
      one-time-password flows.
    x-parent: Vendor
    x-displayName: Authentication
  - name: Media
    description: >-
      Upload and manage images, videos, documents, folders, resized assets, and
      vendor media-library objects.
    x-parent: Vendor
    x-displayName: Media
  - name: Sales
    description: >-
      View and manage vendor orders, order status changes, payment status, order
      logs, invoices, and order exports.
    x-parent: Vendor
    x-displayName: Sales
  - name: CMS
    description: >-
      Create and manage vendor CMS pages, page groups, blog posts, and blog
      categories.
    x-parent: Vendor
    x-displayName: CMS
  - name: Dashboard
    description: >-
      Retrieve vendor dashboard metrics for sales, revenue, orders, products,
      customers, and performance summaries.
    x-parent: Vendor
    x-displayName: Dashboard
  - name: Reports
    description: >-
      Access sales reports, product-view reports, export logs, and downloadable
      report files.
    x-parent: Vendor
    x-displayName: Reports
  - name: SEO
    description: >-
      Manage search metadata and sitemap information for vendor products,
      categories, blogs, and CMS pages.
    x-parent: Vendor
    x-displayName: SEO
  - name: Settings
    description: >-
      Manage vendor settings, countries, currencies, languages, enabled add-ons,
      plugins, and related master data.
    x-parent: Vendor
    x-displayName: Settings
  - name: Notifications
    description: Manage vendor email templates used for vendor-facing notifications.
    x-parent: Vendor
    x-displayName: Notifications
  - name: Payments
    description: >-
      Configure supported vendor payment options, including Stripe, Razorpay,
      PayPal, and payment terms.
    x-parent: Vendor
    x-displayName: Payments
  - name: Tax
    description: Manage vendor tax records and retrieve available master tax definitions.
    x-parent: Vendor
    x-displayName: Tax
  - name: Vendor Profile
    description: >-
      View and update vendor profile information and change the vendor account
      password.
    x-parent: Vendor
    x-displayName: Vendor Profile
  - name: Categories
    x-parent: Catalogue
    description: Create, edit, list and remove product categories and manage category SEO.
  - name: Product families
    x-parent: Catalogue
    description: Create and maintain product families and their category associations.
  - name: Products
    x-parent: Catalogue
    description: Create, view, update and delete vendor product records.
  - name: SKUs and variants
    x-parent: Catalogue
    description: Manage SKU-level product information and variants.
  - name: Inventory and stock
    x-parent: Catalogue
    description: Inspect inventory lists and update available stock quantities.
  - name: Pricing and tier prices
    x-parent: Catalogue
    description: Manage tier pricing and product price breaks.
  - name: Product imports and exports
    x-parent: Catalogue
    description: Download templates, import product data and retrieve export results.
  - name: Product SEO
    x-parent: Catalogue
    description: Manage product-specific search metadata.
  - name: Orders
    x-parent: Sales
    description: List vendor orders, inspect order details and update order/payment status.
  - name: Sales reports
    x-parent: Sales
    description: Retrieve sales summaries, revenue reports and top-selling products.
  - name: Customer directory
    x-parent: Customers
    description: List and manage vendor customers and customer records.
  - name: Customer groups
    x-parent: Customers
    description: Create customer groups and manage group membership.
  - name: Customer addresses
    x-parent: Customers
    description: Create, list, update and remove customer addresses.
  - name: Customer contacts
    x-parent: Customers
    description: Manage customer contact information.
  - name: Pages
    x-parent: CMS
    description: Create and manage vendor CMS pages.
  - name: Page groups
    x-parent: CMS
    description: Organize CMS pages into page groups.
  - name: Blogs
    x-parent: CMS
    description: Create and manage vendor blog posts.
  - name: Blog categories
    x-parent: CMS
    description: Organize vendor blog posts into categories.
  - name: Folders and media library
    x-parent: Media
    description: Browse, create, search and remove media folders and library objects.
  - name: Media files and uploads
    x-parent: Media
    description: Upload, resize, preview and manage media files.
  - name: Media library
    x-parent: Media
    description: Browse and manage vendor media assets.
  - name: Localization and master data
    x-parent: Settings
    description: Manage country, currency, language, zone and other localization data.
  - name: Payment settings
    x-parent: Payments
    description: Configure vendor payment providers and payment terms.
  - name: Plugins and add-ons
    x-parent: Settings
    description: Discover and configure vendor plugins and add-ons.
  - name: SEO and sitemap
    x-parent: SEO
    description: Manage SEO metadata and sitemap configuration.
  - name: Banners and widgets
    x-parent: Marketing
    description: Manage storefront banners and content widgets.
  - name: Email templates
    x-parent: Notifications
    description: Manage vendor notification email templates.
  - name: Tax settings
    x-parent: Tax
    description: Manage vendor tax records and master tax definitions.
  - name: Store settings
    x-parent: Settings
    description: Configure vendor store settings and payment terms.
  - name: Reports and exports
    x-parent: Reports
    description: Retrieve reports, export logs and downloadable report files.
  - name: Vendor account and authentication
    x-parent: Authentication
    description: Authenticate vendor users and manage account credentials and profile.
  - name: Dashboard analytics
    x-parent: Dashboard
    description: Retrieve vendor dashboard metrics and analytics.
  - name: Vendor profile
    x-parent: Vendor Profile
    description: View and update vendor profile information.
paths:
  /api/media/upload-file:
    post:
      tags:
        - Media files and uploads
      summary: Upload or import Media Upload File
      description: >-
        Post /api/media/upload-file


        **Authentication:** Vendor bearer token required for protected
        operations; verify exact permission decorator in controller.


        **Feature area:** Media Upload


        **Implementation source:** `src/api/core/controllers/MediaController.ts`


        **Request example provenance:** Multipart file upload example. Confirm
        the exact field name, accepted mime types and size limit from the media
        upload handler.


        **Response example provenance:** Illustrative response envelope only.
        This route inventory does not include its route-specific
        @apiSuccessExample; response fields and messages must be verified in the
        matching controller/service. The example is intended to show the common
        response-wrapper style, not to define a guaranteed response schema.


        > **Example status: Illustrative.** The example is included to
        demonstrate request/response shape in the reference UI; verify the
        owning controller and request DTO before using it as a contract.
      operationId: postApiMediaUploadFile
      requestBody:
        required: false
        description: >-
          Sample request body. Multipart file upload example. Confirm the exact
          field name, accepted mime types and size limit from the media upload
          handler. Treat this as an illustrative example, not a complete DTO
          contract.
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: File to upload.
              additionalProperties: false
            examples:
              sample:
                summary: Sample request
                value:
                  file: <BINARY_FILE>
      responses:
        '200':
          description: >-
            Successful response. Illustrative response envelope only. This route
            inventory does not include its route-specific @apiSuccessExample;
            response fields and messages must be verified in the matching
            controller/service. The example is intended to show the common
            response-wrapper style, not to define a guaranteed response schema.
            Example is illustrative and does not guarantee a stable response
            contract.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      fileName:
                        type: string
                      containerName:
                        type: string
                      url:
                        type: string
                    additionalProperties: true
                additionalProperties: true
              examples:
                success:
                  summary: Sample success response
                  value:
                    status: 1
                    message: Resource created successfully
                    data:
                      fileName: product.jpg
                      containerName: catalog
                      url: <FILE_URL>
        '400':
          description: >-
            Error response example. Illustrative response envelope only. This
            route inventory does not include its route-specific
            @apiSuccessExample; response fields and messages must be verified in
            the matching controller/service. The example is intended to show the
            common response-wrapper style, not to define a guaranteed response
            schema.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                  message:
                    type: string
                additionalProperties: true
              examples:
                error:
                  summary: Sample error response
                  value:
                    status: 0
                    message: Invalid request or resource.
      security:
        - BearerAuth: []
      externalDocs:
        description: Open implementation source in GitHub
        url: >-
          https://github.com/spurtcommerce/spurtcommerce/blob/master/src/api/core/controllers/MediaController.ts
      x-codeSamples:
        - lang: HTTP
          label: HTTP
          source: >-
            POST /api/media/upload-file HTTP/1.1

            Host: <API_HOST>

            Accept: application/json

            Authorization: Bearer <ACCESS_TOKEN>

            Content-Type: multipart/form-data;
            boundary=----SpurtCommerceBoundary



            ------SpurtCommerceBoundary

            Content-Disposition: form-data; name="file";
            filename="sample-upload.bin"

            Content-Type: application/octet-stream


            <BINARY_FILE_CONTENT>

            ------SpurtCommerceBoundary--
        - lang: bash
          label: cURL
          source: |-
            curl --request POST \
              'https://<API_HOST>/api/media/upload-file' \
              --header 'Accept: application/json' \
              --header 'Authorization: Bearer <ACCESS_TOKEN>' \
              --form 'file=@/path/to/sample-upload.bin'
        - lang: JavaScript
          label: JavaScript (fetch)
          source: >-
            const API_BASE_URL = 'https://<API_HOST>';

            const url = new URL("/api/media/upload-file", API_BASE_URL);

            const headers = {
              "Accept": "application/json",
              "Authorization": "Bearer <ACCESS_TOKEN>"
            };

            const formData = new FormData();

            const fileInput = document.querySelector('input[type="file"]');

            if (!fileInput?.files?.[0]) throw new Error('Select a file before
            uploading.');

            formData.append('file', fileInput.files[0]);

            const response = await fetch(url, { method: "POST", headers, body:
            formData });

            const result = await response.json();

            console.log(response.status, result);
        - lang: JavaScript
          label: Node.js (Axios)
          source: >-
            import axios from 'axios';

            const API_BASE_URL = 'https://<API_HOST>';

            const url = `${API_BASE_URL}/api/media/upload-file`;

            import { readFile } from 'node:fs/promises';

            const form = new FormData();

            const fileBytes = await readFile('/path/to/sample-upload.bin');

            form.append('file', new Blob([fileBytes]), 'sample-upload.bin');

            const headers = {
              "Accept": "application/json",
              "Authorization": "Bearer <ACCESS_TOKEN>"
            };

            const response = await axios.request({ method: "POST", url, headers,
            data: form });

            console.log(response.status, response.data);
        - lang: Python
          label: Python (requests)
          source: >-
            import requests

            url = 'https://<API_HOST>/api/media/upload-file'

            headers = {'Accept': 'application/json', 'Authorization': 'Bearer
            <ACCESS_TOKEN>'}

            with open('/path/to/sample-upload.bin', 'rb') as upload_file:
                response = requests.request('POST', url, headers=headers, params=None, files={'file': ('sample-upload.bin', upload_file, 'application/octet-stream')})
            print(response.status_code)

            print(response.json())
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Paste the JWT access token returned by the corresponding login endpoint.

````

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