---
title: "Create a product"
method: POST
path: "/admin/products"
tags: ["Admin"]
---

# Create a product

`POST /admin/products`

## Request

- Base URL: `https://api.presscart.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.presscart.com/admin/products`
- Auth: HTTP bearer

Create a new product.

## Request body

- object
  - `name` string, required
  - `description` string, nullable, required
  - `image` string, nullable, required
  - `logo` string, nullable, required
  - `example_screenshot` string, nullable, required
  - `type_id` string, uuid, required
  - `active` boolean, required
  - `requirements` string, nullable, required
  - `submission_requirements` object, nullable
    - `version` 1, required
    - `lifespan` object, required
      - `months` integer, nullable, required
      - `permanent` boolean, nullable, required
      - `guaranteed` boolean, nullable, required
    - `availability` object, required
      - `on_hold` boolean, nullable, required
      - `slight_delay` boolean, nullable, required
    - `content` object, required
      - `min_words` integer, nullable, required
      - `max_words` integer, nullable, required
      - `max_links` integer, nullable, required
      - `original_only` boolean, nullable, required
      - `ai_content_allowed` boolean, nullable, required
      - `first_person_allowed` boolean, nullable, required
      - `subheadings_required` boolean, nullable, required
      - `title` object, required
        - `min_characters` integer, nullable, required
        - `max_characters` integer, nullable, required
        - `no_special_symbols` boolean, nullable, required
        - `case` 'sentence' | 'title' | 'upper' | 'lower', nullable, required
      - `subtitle` object, required
        - `required` boolean, nullable, required
        - `min_characters` integer, nullable, required
        - `max_characters` integer, nullable, required
      - `images` object, required
        - `min` integer, nullable, required
        - `max` integer, nullable, required
        - `width` integer, nullable, required
        - `height` integer, nullable, required
        - `credit_required` boolean, nullable, required
        - `ai_generated_allowed` boolean, nullable, required
        - `allowed_sources` string[], required
        - `stock_link_required` boolean, nullable, required
    - `other_requirements` string[], required
  - `min_delivery_days` integer, nullable, required
  - `max_delivery_days` integer, nullable, required
  - `is_featured` boolean, required
  - `llm_aeo` 'YES' | 'NO' | 'MAYBE' | 'DISCRETE', nullable
  - `internal_cost` number, nullable, required
  - `example_links` object[], required
    - `url` string, required
  - `outlet_channel_ids` string[]
  - `prices` object[], required
    - `unit_amount` number, nullable, required
    - `pricing_tier` 'basic' | 'pro', required
    - `type` 'RECURRING' | 'ONE_TIME', required
    - `interval` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR', nullable, required

## Response `201`

Product created successfully

- Product
  - `id` string, uuid, required
  - `name` string, required
  - `description` string, nullable, required
  - `image` string, nullable, required
  - `logo` string, nullable, required
  - `example_screenshot` string, nullable, required
  - `stripe_product_id` string, nullable, required
  - `type_id` string, uuid, required
  - `active` boolean, required
  - `requirements` string, nullable, required
  - `submission_requirements` object, nullable, required
    - `version` 1, required
    - `lifespan` object, required
      - `months` integer, nullable, required
      - `permanent` boolean, nullable, required
      - `guaranteed` boolean, nullable, required
    - `availability` object, required
      - `on_hold` boolean, nullable, required
      - `slight_delay` boolean, nullable, required
    - `content` object, required
      - `min_words` integer, nullable, required
      - `max_words` integer, nullable, required
      - `max_links` integer, nullable, required
      - `original_only` boolean, nullable, required
      - `ai_content_allowed` boolean, nullable, required
      - `first_person_allowed` boolean, nullable, required
      - `subheadings_required` boolean, nullable, required
      - `title` object, required
        - `min_characters` integer, nullable, required
        - `max_characters` integer, nullable, required
        - `no_special_symbols` boolean, nullable, required
        - `case` 'sentence' | 'title' | 'upper' | 'lower', nullable, required
      - `subtitle` object, required
        - `required` boolean, nullable, required
        - `min_characters` integer, nullable, required
        - `max_characters` integer, nullable, required
      - `images` object, required
        - `min` integer, nullable, required
        - `max` integer, nullable, required
        - `width` integer, nullable, required
        - `height` integer, nullable, required
        - `credit_required` boolean, nullable, required
        - `ai_generated_allowed` boolean, nullable, required
        - `allowed_sources` string[], required
        - `stock_link_required` boolean, nullable, required
    - `other_requirements` string[], required
  - `min_delivery_days` integer, nullable, required
  - `max_delivery_days` integer, nullable, required
  - `is_featured` boolean, required
  - `example_links` string[], required
  - `llm_aeo` 'YES' | 'NO' | 'MAYBE' | 'DISCRETE', nullable, required
  - `created_at` union, required
    - string, nullable
    - string
    - unknown
  - `updated_at` union, required
    - string, nullable
    - string
    - unknown
  - `deleted_at` union, required
    - string, nullable
    - string
    - unknown

---

[API](https://skmtc.dev/presscart/apis/presscart-prod-api.md) · [All operations](https://skmtc.dev/presscart/apis/presscart-prod-api/llms.txt) · [OpenAPI document](https://skmtc.dev/presscart/apis/presscart-prod-api/revisions/2154581d845e?raw)
