---
title: "Create Product"
method: POST
path: "/billing/products"
tags: ["Products"]
---

# Create Product

`POST /billing/products`

## Request

- Base URL: `https://api.meow.com/v1`
- URL: `https://api.meow.com/v1/billing/products`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/meow/apis/meow-api/docs/billing/products/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates a new product.

## Headers

- `x-entity-id` string, uuid

## Request body

- CreateProductRequest
  - `name` string, required: Product name shown on invoices.
  - `description` string, nullable: Longer product description for invoices.
  - `default_price` union, required: Default price for the product (0.00 to 10,000,000.00).
    - number
    - string

## Response `200`

Successful Response

- InvoiceProductResponse
  - `id` string, uuid, required: The unique identifier for the product.
  - `name` string, required: The name of the product.
  - `description` string, nullable: The description of the product.
  - `default_price` string, required: The default price of the product.

## Other responses

- `400`: The request could not be processed.
- `401`: Authentication failed.
- `403`: The API key is not authorized for this operation, or the user of a global API key is an admin or controller without approved KYC. The KYC case returns the message `KYC is required for controllers and admins.` until that user completes KYC in the Meow dashboard.
- `429`: Too many requests.

---

[API](https://skmtc.dev/meow/apis/meow-api.md) - [All operations](https://skmtc.dev/meow/apis/meow-api/llms.txt) - [OpenAPI document](https://skmtc.dev/meow/apis/meow-api/revisions/ea2d7e25b63b?raw)
