---
title: "Atualizar produtos em lote"
description: "PATCH /v1/catalog/products — atualizar produtos, cardápios, restrições e grupos em lote na API BeeFood."
method: "PATCH"
path: "/v1/catalog/products"
url: "https://developer.beefood.com.br/docs/catalogo/atualizar-produtos-lote"
group: "Catálogo"
scope: "catalog:write"
lang: "pt"
---
# Atualizar produtos em lote

`PATCH /v1/catalog/products`

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

Atualiza vários produtos em uma requisição.

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

- `[]` *array* **obrigatório** — Lote com pelo menos 1 item.

- `[].productId` *integer* **obrigatório** — Identificador do produto, inteiro maior ou igual a 1. Exemplo: `131822`.

- `[].type` *string* **obrigatório** — Tipo de atualização. Exemplo: `product`.
  - *Valores:* `product`, `menu`, `restrictions`, `groups`

- `[].product` *object* — Obrigatório quando type é product; campos da atualização parcial do produto.

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

- `[].product.code` *string* — Código interno.

- `[].product.name` *string* — Nome do produto.

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

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

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

- `[].product.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`

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

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

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

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

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

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

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

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

- `[].product.cost` *object* — Custos do produto.

- `[].product.cost.base` *number* — Custo base.

- `[].menu` *object* — Obrigatório quando type é menu; um único cardápio.

- `[].menu.merchantId` *number* **obrigatório** — Cardápio da mesma empresa.

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

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

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

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

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

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

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

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

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

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

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

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

- `[].restrictions` *object | null* — Obrigatório quando type é restrictions; null limpa as restrições.

- `[].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* — Obrigatório quando type é groups; grupos cuja ordem será alterada.

- `[].groups[].groupId` *integer* **obrigatório** — Grupo vinculado ao produto, inteiro maior ou igual a 1; sem repetição no array. Exemplo: `266128`.

- `[].groups[].sortOrder` *integer* **obrigatório** — Posição do grupo, inteiro maior ou igual a 0. Exemplo: `1`.



## Exemplos de requisição

### cURL

```bash
curl -X PATCH "https://api.beefood.app/v1/catalog/products" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '[
  {
    "productId": 131822,
    "type": "product",
    "product": {
      "price": 22.5,
      "featured": true
    }
  },
  {
    "productId": 131822,
    "type": "menu",
    "menu": {
      "merchantId": 122,
      "deliveryPrice": 22.5
    }
  },
  {
    "productId": 131822,
    "type": "restrictions",
    "restrictions": {
      "vegetarian": false,
      "serves": 1
    }
  },
  {
    "productId": 131822,
    "type": "groups",
    "groups": [
      {
        "groupId": 266128,
        "sortOrder": 1
      }
    ]
  }
]'
```


## Exemplos de resposta

### 200 OK

```json
[
  {
    "productId": 131822,
    "type": "product",
    "success": true
  },
  {
    "productId": 131822,
    "type": "menu",
    "success": true
  },
  {
    "productId": 131822,
    "type": "restrictions",
    "success": true
  },
  {
    "productId": 131822,
    "type": "groups",
    "success": true
  }
]
```


## Campos da resposta

- `[].productId` *integer* — Identificador do produto.

- `[].type` *string* — Tipo de atualização. Exemplo: `product`.
  - *Valores:* `product`, `menu`, `restrictions`, `groups`

- `[].success` *boolean* — Indica se este item foi atualizado.

- `[].message` *string* — Mensagem retornada somente quando success é false.


## Atualização em lote

Cada item informa o produto, o tipo e o objeto correspondente. As regras da atualização unitária continuam valendo.

### Regras

- Envie um array não vazio; outro formato ou array vazio retorna `400`.
- `product`: envie `product` com os campos a alterar; os omitidos preservam o valor atual.
- `menu`: envie `menu` com `merchantId` e os campos a alterar; o cardápio precisa estar vinculado ao produto.
- `restrictions`: envie `restrictions` como objeto ou `null` para limpar.
- `groups`: envie `groups` como array não vazio de `{ groupId, sortOrder }`; só os grupos enviados mudam.
- Booleanos com `null` são ignorados em `product`, `menu` e `restrictions`. Em `menu`, `null` limpa preços, `sortOrder`, `featuredOrder` e `upsell`; `upsell: []` também limpa.
- Os itens são independentes: a falha de um não desfaz os demais.
- O retorno mantém a ordem do body; confira `success` em cada item, mesmo com HTTP `200`. `message` aparece apenas nas falhas.

## 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 | Body deve ser um array não vazio (descrição; mensagem literal não fornecida no contrato). |


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

