---
title: "Get Product by ID"
method: GET
path: "/billing/products/{product_id}"
tags: ["Products"]
---

# Get Product by ID

`GET /billing/products/{product_id}`

## Request

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

Returns a product by its ID, including a deleted product that existing invoices still reference. List Products omits deleted products, and Create Invoice rejects them.

## Path parameters

- `product_id` string, uuid, required: Product to fetch. Use list_products to find one.

## Headers

- `x-entity-id` string, uuid

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