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

# Create or process Category

> Post /api/category

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

**Feature area:** Categories

**Implementation source:** `src/api/vendor/controllers/ProductController.ts`

**Request example provenance:** Source-defined in AddCategoryRequest / CategoryController.

**Response example provenance:** Exact API comment example.

> Example is based on the linked repository source. Replace example identifiers and credentials with values from your tenant.



## OpenAPI

````yaml /VendorAPI.json post /api/category
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/category:
    post:
      tags:
        - Categories
      summary: Create or process Category
      description: >-
        Post /api/category


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


        **Feature area:** Categories


        **Implementation source:**
        `src/api/vendor/controllers/ProductController.ts`


        **Request example provenance:** Source-defined in AddCategoryRequest /
        CategoryController.


        **Response example provenance:** Exact API comment example.


        > Example is based on the linked repository source. Replace example
        identifiers and credentials with values from your tenant.
      operationId: postApiCategory
      requestBody:
        required: false
        description: >-
          Sample request body. Source-defined in AddCategoryRequest /
          CategoryController.
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                image:
                  type: string
                parentInt:
                  type: integer
                sortOrder:
                  type: integer
                status:
                  type: integer
                categorySlug:
                  type: string
                categoryDescription:
                  type: string
              additionalProperties: true
            examples:
              sample:
                summary: Sample request
                value:
                  name: Electronics
                  image: ''
                  parentInt: 0
                  sortOrder: 1
                  status: 1
                  categorySlug: electronics
                  categoryDescription: Electronic products
      responses:
        '200':
          description: Successful response. Exact API comment example.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      categoryId:
                        type: integer
                      name:
                        type: string
                      categorySlug:
                        type: string
                      parentInt:
                        type: integer
                      sortOrder:
                        type: integer
                      isActive:
                        type: integer
                    additionalProperties: true
                additionalProperties: true
              examples:
                success:
                  summary: Sample success response
                  value:
                    status: 1
                    message: New category created successfully.
                    data:
                      categoryId: 1
                      name: Electronics
                      categorySlug: electronics
                      parentInt: 0
                      sortOrder: 1
                      isActive: 1
        '400':
          description: Error response example. Exact API comment example.
          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: >-
                      Category can only be mapped up to 3 levels. More than 3
                      levels are not allowed.
      security:
        - BearerAuth: []
      externalDocs:
        description: Open implementation source in GitHub
        url: >-
          https://github.com/spurtcommerce/spurtcommerce/blob/master/src/api/vendor/controllers/ProductController.ts
      x-codeSamples:
        - lang: HTTP
          label: HTTP
          source: |-
            POST /api/category HTTP/1.1
            Host: <API_HOST>
            Accept: application/json
            Authorization: Bearer <ACCESS_TOKEN>
            Content-Type: application/json

            {
              "name": "Electronics",
              "image": "",
              "parentInt": 0,
              "sortOrder": 1,
              "status": 1,
              "categorySlug": "electronics",
              "categoryDescription": "Electronic products"
            }
        - lang: bash
          label: cURL
          source: |-
            curl --request POST \
              'https://<API_HOST>/api/category' \
              --header 'Accept: application/json' \
              --header 'Authorization: Bearer <ACCESS_TOKEN>' \
              --header 'Content-Type: application/json' \
              --data-raw '{
              "name": "Electronics",
              "image": "",
              "parentInt": 0,
              "sortOrder": 1,
              "status": 1,
              "categorySlug": "electronics",
              "categoryDescription": "Electronic products"
            }'
        - lang: JavaScript
          label: JavaScript (fetch)
          source: >-
            const API_BASE_URL = 'https://<API_HOST>';

            const url = new URL("/api/category", API_BASE_URL);

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

            const body = {
              "name": "Electronics",
              "image": "",
              "parentInt": 0,
              "sortOrder": 1,
              "status": 1,
              "categorySlug": "electronics",
              "categoryDescription": "Electronic products"
            };

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

            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/category`;

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

            const url = `${API_BASE_URL}/api/category`;

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

            const data = {
              "name": "Electronics",
              "image": "",
              "parentInt": 0,
              "sortOrder": 1,
              "status": 1,
              "categorySlug": "electronics",
              "categoryDescription": "Electronic products"
            };

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

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

            url = 'https://<API_HOST>/api/category'

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

            payload = {'name': 'Electronics', 'image': '', 'parentInt': 0,
            'sortOrder': 1, 'status': 1, 'categorySlug': 'electronics',
            'categoryDescription': 'Electronic products'}

            response = requests.request('POST', url, headers=headers,
            params=None, json=payload)

            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.