---
title: "Criar um produto"
method: POST
path: "/products/create"
---

# Criar um produto

`POST /products/create`

Permite que você crie um novo produto que pode ser usado em cobranças.
Produtos podem ser avulsos (pagamento único) ou de assinatura; use o campo opcional `cycle` para definir a recorrência (`WEEKLY`, `MONTHLY`, `QUARTERLY`, `SEMIANNUALLY`, `ANNUALLY`). Quando `cycle` é omitido ou `null`, o produto é avulso.

**Alternativa**: Você também pode criar e gerenciar seus produtos pelo [Dashboard da AbacatePay](https://app.abacatepay.com/produtos).

## Request body

- object — Dados necessários para criar um produto.
  - `externalId` string, required — Identificador único do produto no seu sistema.
  - `name` string, required — Nome do produto.
  - `price` number, required — Preço do produto em centavos.
  - `currency` string, required — Moeda do produto.
  - `description` string — Descrição opcional do produto.
  - `imageUrl` string, uri, nullable — URL da imagem do produto. Opcional.
  - `fileUrl` string, uri — URL pública de um PDF a ser vinculado ao produto. Opcional. O arquivo é baixado e armazenado pela AbacatePay — máximo 20 MB. Após o pagamento, o comprador recebe acesso ao download do arquivo.
  - `cycle` 'WEEKLY' | 'MONTHLY' | 'QUARTERLY' | 'SEMIANNUALLY' | 'ANNUALLY', nullable — Opcional. Indica se o produto é uma assinatura. Quando omitido ou `null`, o produto é avulso (pagamento único). Valores possíveis: `WEEKLY`, `MONTHLY`, `QUARTERLY`, `SEMIANNUALLY`, `ANNUALLY`.

## Response `200`

Produto criado com sucesso.

- object
  - `data` Product — Os dados do seu produto. O campo `cycle` indica se o produto é uma assinatura (subscription). Quando `null`, o produto é avulso (pagamento único). Valores possíveis definem a recorrência da assinatura. A moeda (`currency`) é sempre `BRL`.
    - `externalId` string, required — Identificador único do produto no seu sistema
    - `name` string, required — Nome do produto
    - `description` string, required — Descrição do produto
    - `imageUrl` string, uri, nullable — URL da imagem do produto
    - `price` number, required — Preço do produto em centavos
    - `devMode` boolean, required — Indica se o produto foi criado em ambiente de testes
    - `currency` 'BRL', required — Moeda do produto (sempre BRL)
    - `createdAt` string, date-time, required — Data de criação do produto
    - `updatedAt` string, date-time, required — Data de atualização do produto
    - `status` 'ACTIVE' | 'INACTIVE', required — Status atual do produto (ProductStatus)
    - `id` string, required — Identificador único público do produto
    - `cycle` 'WEEKLY' | 'MONTHLY' | 'QUARTERLY' | 'SEMIANNUALLY' | 'ANNUALLY', nullable — Indica se o produto é uma assinatura (ProductCycle). Quando `null`, o produto é avulso (pagamento único). Valores possíveis definem a recorrência da assinatura.
    - `hasFile` boolean — Indica se o produto possui um arquivo PDF vinculado para download. Quando `true`, o comprador recebe acesso ao arquivo após o pagamento.
  - `error` string, nullable
  - `success` boolean — Se a requisição obteve sucesso ou não.

## Other responses

- `401` — Não autorizado. Falha na autenticação.

---

[API](https://skmtc.net/abacatepay/apis/api-abacatepay.md) · [All operations](https://skmtc.net/abacatepay/apis/api-abacatepay/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/abacatepay/api-abacatepay/versions/6b89a7fa70f5/schema)
