---
title: "Criar produto"
description: "POST /v1/catalog/products — criar um produto BeeFood e vinculá-lo a uma ou mais filiais."
method: "POST"
path: "/v1/catalog/products"
url: "https://developer.beefood.com.br/docs/catalogo/criar-produto"
group: "Catálogo"
scope: "catalog:write"
lang: "pt"
---
# Criar produto

`POST /v1/catalog/products`

- Produção: `https://api.beefood.app/v1/catalog/products`
- Sandbox: `https://api-sandbox.beefood.app/v1/catalog/products`

Cria um produto.

## Autenticação

Envie o access token no header `Authorization: Bearer <accessToken>`. Escopo necessário: `catalog:write`. Limite: 300 requisições a cada 3 minutos.




## Parâmetros do body

- `barcode` *string* — Código de barras.

- `code` *string* — Código interno.

- `name` *string* **obrigatório** — Nome do produto.

- `description` *string* — Descrição do produto.

- `internalNotes` *string* — Observações internas.

- `label` *string* — Selo do cardápio: new, recommended, bestSeller, limitedEdition ou soldOut.

- `unit` *string* — Unidade de medida (Default: UN): UN, KG, G, L, ML, PCT, CX, DZ, FD, BD, SC, PT, CP, PC, FT, PQ, GF, LT ou BN.
  - *Valores:* `UN`, `KG`, `G`, `L`, `ML`, `PCT`, `CX`, `DZ`, `FD`, `BD`, `SC`, `PT`, `CP`, `PC`, `FT`, `PQ`, `GF`, `LT`, `BN`

- `price` *number* — Preço padrão.

- `featured` *boolean* — Indica se está em destaque.

- `featuredPrint` *boolean* — Indica se tem destaque na impressão.

- `serviceFeeActive` *boolean* — Indica se a taxa de serviço está ativa.

- `scheduleOnly` *boolean* — Indica se a venda é apenas por agendamento.

- `scaleActive` *boolean* — Indica se a balança está ativa.

- `scaleShelfLifeDays` *number* — Validade em dias na balança.

- `sectorId` *number* — Identificador de um setor da mesma empresa.

- `cost` *object* — Custos do produto.

- `cost.base` *number* — Custo base.



## Exemplos de requisição

### cURL

```bash
curl -X POST "https://api.beefood.app/v1/catalog/products" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "4 Esferas do Dragão de Pepperoni",
  "description": "Mussarela e pepperoni.",
  "sectorId": 1997,
  "label": "new",
  "featured": false,
  "price": 19.99,
  "code": "25",
  "barcode": "7891000315507",
  "unit": "UN",
  "cost": {
    "base": 8.5
  },
  "featuredPrint": false,
  "serviceFeeActive": true,
  "scheduleOnly": false,
  "internalNotes": "Disponível por tempo indeterminado.",
  "scaleActive": false,
  "scaleShelfLifeDays": 0
}'
```


## Exemplos de resposta

### 201 OK

```json
{
  "productId": 131822,
  "storeId": 107,
  "barcode": "7891234567890",
  "code": "25",
  "type": "product",
  "name": "Pizza de Frango com Catupiry",
  "description": "Mussarela, frango e requeijão.",
  "internalNotes": "Disponível por tempo indeterminado.",
  "label": "new",
  "unit": "UN",
  "price": 19.99,
  "featured": false,
  "featuredPrint": false,
  "serviceFeeActive": true,
  "scheduleOnly": false,
  "scaleActive": false,
  "scaleShelfLifeDays": 0,
  "sectorId": 1997,
  "sectorName": "Pizzas",
  "combo": false,
  "cost": {
    "base": 0,
    "supply": 0,
    "total": 0
  },
  "menus": [
    {
      "merchantId": 122,
      "name": "BeeFood - Cardápio Digital",
      "active": true,
      "delivery": true,
      "deliveryPrice": 19.99,
      "dineIn": true,
      "dineInPrice": 19.99,
      "totem": false,
      "promotionPrice": 15.99,
      "sortOrder": 1,
      "featuredOrder": 2,
      "cashbackEnabled": true,
      "upsell": [
        {
          "productId": 2586827,
          "name": "7 Esferas do Dragão de Pepperoni"
        }
      ]
    }
  ],
  "restrictions": {
    "vegetarian": false,
    "vegan": false,
    "organic": false,
    "glutenFree": false,
    "sugarFree": false,
    "lactoseFree": false,
    "natural": false,
    "iced": false,
    "serves": 1
  },
  "groups": [
    {
      "groupId": 5668252,
      "name": "Escolha seus Condimentos:",
      "active": true,
      "delivery": true,
      "dineIn": true,
      "required": true,
      "sortOrder": 1,
      "priceFormation": "gift",
      "minQuantity": 1,
      "maxQuantity": 1,
      "selectionMode": "single",
      "options": [
        {
          "optionId": 5670994,
          "productId": 2586516,
          "name": "Sachê Ketchup",
          "type": "complement",
          "active": true,
          "delivery": true,
          "dineIn": true,
          "minQuantity": 1,
          "maxQuantity": 1,
          "price": 0,
          "deliveryPrice": 0,
          "dineInPrice": 0,
          "sortOrder": 0,
          "image": {
            "original": "https://domain.com/opt.webp",
            "thumbnail60": "https://domain.com/opt-60.jpg",
            "thumbnail120": "https://domain.com/opt-120.jpg",
            "thumbnailWeb": "https://domain.com/opt.webp"
          }
        }
      ]
    }
  ]
}
```


## Campos da resposta

- `productId` *number* — Identificador do produto.

- `storeId` *number* — Identificador da empresa.

- `barcode` *string* — Código de barras.

- `code` *string* — Código interno.

- `type` *string* — Tipo derivado do PDV: "product". Somente leitura.
  - *Valores:* `product`, `menu`, `restrictions`, `groups`

- `name` *string* — Nome do produto.

- `description` *string* — Descrição do produto.

- `internalNotes` *string* — Observações internas.

- `label` *string* — Selo do cardápio: new, recommended, bestSeller, limitedEdition ou soldOut.

- `unit` *string* — Unidade de medida (Default: UN): UN, KG, G, L, ML, PCT, CX, DZ, FD, BD, SC, PT, CP, PC, FT, PQ, GF, LT ou BN.
  - *Valores:* `UN`, `KG`, `G`, `L`, `ML`, `PCT`, `CX`, `DZ`, `FD`, `BD`, `SC`, `PT`, `CP`, `PC`, `FT`, `PQ`, `GF`, `LT`, `BN`

- `price` *number* — Preço padrão.

- `featured` *boolean* — Indica se está em destaque.

- `featuredPrint` *boolean* — Indica se tem destaque na impressão.

- `serviceFeeActive` *boolean* — Indica se a taxa de serviço está ativa.

- `scheduleOnly` *boolean* — Indica se a venda é apenas por agendamento.

- `scaleActive` *boolean* — Indica se a balança está ativa.

- `scaleShelfLifeDays` *number* — Validade em dias na balança.

- `sectorId` *number* — Identificador de um setor da mesma empresa.

- `sectorName` *string* — Nome do setor. Somente leitura.

- `combo` *boolean* — Indica se é combo. Somente leitura: vira true quando o produto tem ao menos um grupo vinculado e volta a false quando o último é desvinculado.

- `cost` *object* — Custos do produto.

- `cost.base` *number* — Custo base.

- `cost.supply` *number* — Custo da composição, calculado dos insumos. Somente leitura.

- `cost.total` *number* — Soma do custo base com o custo da composição. Somente leitura.

- `menus` *array* — Configurações do produto por cardápio.

- `menus[].merchantId` *number* — Cardápio da mesma empresa.

- `menus[].name` *string* — Nome do cardápio. Somente leitura.

- `menus[].active` *boolean* — Indica se está ativo nesto cardápio.

- `menus[].delivery` *boolean* — Indica se aparece no delivery.

- `menus[].deliveryPrice` *number* — Preço no delivery.

- `menus[].dineIn` *boolean* — Indica se aparece no presencial.

- `menus[].dineInPrice` *number* — Preço no presencial.

- `menus[].totem` *boolean* — Indica se aparece no totem.

- `menus[].promotionPrice` *number* — Preço promocional.

- `menus[].sortOrder` *number* — Posição de exibição.

- `menus[].featuredOrder` *number* — Posição entre destaques.

- `menus[].cashbackEnabled` *boolean* — Indica se o cashback está ativo nesto cardápio.

- `menus[].upsell` *array* — Produtos sugeridos nesto cardápio.

- `menus[].upsell[].productId` *number* — Produto sugerido no upsell.

- `menus[].upsell[].name` *string* — Nome do produto sugerido. Somente leitura.

- `restrictions` *object* — Restrições e características alimentares.

- `restrictions.vegetarian` *boolean* — Indica se é vegetariano.

- `restrictions.vegan` *boolean* — Indica se é vegano.

- `restrictions.organic` *boolean* — Indica se é orgânico.

- `restrictions.glutenFree` *boolean* — Indica se não contém glúten.

- `restrictions.sugarFree` *boolean* — Indica se não contém açúcar.

- `restrictions.lactoseFree` *boolean* — Indica se não contém lactose.

- `restrictions.natural` *boolean* — Indica se é natural.

- `restrictions.iced` *boolean* — Indica se é gelado.

- `restrictions.serves` *number* — Número de pessoas servidas.

- `groups` *array* — Grupos já existentes vinculados ao produto, ordenados por sortOrder.

- `groups[].groupId` *number* — Grupo existente da mesma empresa.

- `groups[].name` *string* — Nome do grupo. Somente leitura.

- `groups[].active` *boolean* — Indica se o grupo está ativo.

- `groups[].delivery` *boolean* — Indica se o grupo aparece no delivery.

- `groups[].dineIn` *boolean* — Indica se o grupo aparece no presencial.

- `groups[].required` *boolean* — Indica se a escolha é obrigatória.

- `groups[].sortOrder` *number* — Posição do grupo neste produto; menor valor aparece primeiro. Omitido quando o produto não tem ordem definida para o grupo.

- `groups[].priceFormation` *string* — Regra de preço: gift, highest, proportional ou sum.

- `groups[].minQuantity` *number* — Quantidade mínima de opções.

- `groups[].maxQuantity` *number* — Quantidade máxima de opções.

- `groups[].selectionMode` *string* — Modo de seleção do grupo.

- `groups[].options` *array* — Opções do grupo. Somente leitura nesta entrega.

- `groups[].options[].optionId` *number* — Campo optionId.

- `groups[].options[].productId` *number* — Campo productId.

- `groups[].options[].name` *string* — Campo name.

- `groups[].options[].type` *string* — Campo type.

- `groups[].options[].active` *boolean* — Campo active.

- `groups[].options[].delivery` *boolean* — Campo delivery.

- `groups[].options[].dineIn` *boolean* — Campo dineIn.

- `groups[].options[].minQuantity` *number* — Campo minQuantity.

- `groups[].options[].maxQuantity` *number* — Campo maxQuantity.

- `groups[].options[].price` *number* — Campo price.

- `groups[].options[].deliveryPrice` *number* — Campo deliveryPrice.

- `groups[].options[].dineInPrice` *number* — Campo dineInPrice.

- `groups[].options[].sortOrder` *number* — Campo sortOrder.

- `groups[].options[].image` *object* — Campo image.

- `groups[].options[].image.original` *string* — Campo original.

- `groups[].options[].image.thumbnail60` *string* — Campo thumbnail60.

- `groups[].options[].image.thumbnail120` *string* — Campo thumbnail120.

- `groups[].options[].image.thumbnailWeb` *string* — Campo thumbnailWeb.



## Erros

| Status | Mensagem |
| --- | --- |
| 401 | Authentication token is missing |
| 401 | Invalid or expired access token |
| 403 | This credential does not include the catalog:write scope |
| 429 | Too many requests |
| 400 | Invalid product data |
| 400 | Referenced resource does not belong to the store |


## Vocabulários usados neste endpoint

## Atualização em lote · type

| Valor | Significado | Uso |
| --- | --- | --- |
| `product` | Dados do produto | Objeto product |
| `menu` | Cardápio do produto | Objeto menu |
| `restrictions` | Restrições alimentares | Objeto restrictions ou null |
| `groups` | Ordem dos grupos | Array groups |

## Catálogo · unit

Valores aceitos no campo unit dos produtos do catálogo.

| Valor | Significado | Uso |
| --- | --- | --- |
| `UN` | Unidade | /v1/catalog/products |
| `KG` | Quilograma | /v1/catalog/products |
| `G` | Grama | /v1/catalog/products |
| `L` | Litro | /v1/catalog/products |
| `ML` | Mililitro | /v1/catalog/products |
| `PCT` | Pacote | /v1/catalog/products |
| `CX` | Caixa | /v1/catalog/products |
| `DZ` | Dúzia | /v1/catalog/products |
| `FD` | Fardo | /v1/catalog/products |
| `BD` | Balde | /v1/catalog/products |
| `SC` | Saco | /v1/catalog/products |
| `PT` | Pote | /v1/catalog/products |
| `CP` | Copo | /v1/catalog/products |
| `PC` | Peça | /v1/catalog/products |
| `FT` | Fátia | /v1/catalog/products |
| `PQ` | Porção | /v1/catalog/products |
| `GF` | Garrafa | /v1/catalog/products |
| `LT` | Lata | /v1/catalog/products |
| `BN` | Bandeja | /v1/catalog/products |

