# Criar produto

URL: https://staging.pagpolar.com/docs/referencia/produtos/create-product

> Cria um produto **digital** (`type` sempre `DIGITAL` — outros tipos não são criáveis
pela API pública nesta versão).

**Produtos físicos ainda não são processados pela API.** Não há envio, frete nem código de
rastreio por aqui: use a API só para produtos digitais e assinaturas.

O produto é criado sem imagem e sem categoria — ambos podem ser preenchidos depois pelo
painel. `warranty_time` (garantia, em dias) também não é aceito no corpo: é resolvido
automaticamente a partir da configuração mínima de garantia da sua conta.

Este endpoint só cria o produto. Para vender, crie também uma oferta (preço) para ele —
consulte a documentação da rota de ofertas.

`POST /products`

## Autenticação

- Token Bearer no header `Authorization` (esquema `BearerAuth`). Token de acesso devolvido por POST /auth/token. Envie como "Authorization: Bearer <token>". Vale 24 horas.

## Corpo da requisição

Content-type: `application/json`.

| Campo | Tipo | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `name` | texto | sim | Exemplo: `Curso de Marketing Digital`. |
| `description` | texto | não | Exemplo: `Aprenda a vender online do zero`. Pode ser nulo. |

### Exemplo do corpo

Produto digital:

```json
{
  "name": "Curso de Marketing Digital",
  "description": "Aprenda a vender online do zero"
}
```

## Respostas

### 201 — Produto criado

| Campo | Tipo | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `data` | [Produto](/docs/referencia/entidades/produto) | não | — |

#### Exemplo

default:

```json
{
  "data": {
    "id": "c4d5e6f7-a8b9-4c0d-1e2f-3a4b5c6d7e8f",
    "name": "Curso de Marketing Digital",
    "description": "Aprenda a vender online do zero",
    "author": null,
    "promotional_text": null,
    "is_active": true,
    "image": null,
    "type": "DIGITAL",
    "content_type": "DEFAULT",
    "warranty_time": 7,
    "category": null,
    "created_at": "2026-01-15T12:00:00.000Z",
    "updated_at": "2026-01-15T12:00:00.000Z"
  }
}
```

## Erros

| Status | Descrição |
| --- | --- |
| `400` | Dados inválidos |
| `401` | Token ausente, inválido ou expirado, ou credencial revogada ou expirada. Chame POST /auth/token para obter um token novo. |
| `403` | IP não autorizado |
| `429` | Limite de requisições excedido |

Lista completa de códigos e como tratá-los: [Erros](/docs/guias/fundamentos/erros).
