PagnovoPagnovodocs

Referência da API

Atualizar produto

Atualiza campos do produto. Diferente de Offers, **todos os campos do Product são editáveis livremente** mesmo com Offers/Subscriptions ativas — porque mudar nome do produto não muda o valor cobrado nem o ciclo (esses estão na Offer). **Imagem:** este endpoint **não aceita** `imageUrl` no corpo. Use [POST /v2/products/:id/image](/docs/api/upload-product-image) pra trocar ou [DELETE /v2/products/:id/image](/docs/api/delete-product-image) pra remover. Produtos arquivados não podem ser editados.

PATCH/v2/products/:id
Imagem é endpoint separado
imageUrl Enviar `imageUrl` aqui retorna 400. Use POST `/products/:id/image` (multipart) pra trocar a imagem ou DELETE `/products/:id/image` pra remover.

Autenticação

HTTP Basic Auth. Envie sua secret key no header:

Authorization: Basic {base64(secret:SUA_SECRET_KEY)}

Parâmetros

idstring (path, UUID)obrigatório

UUID do produto.

Exemplo: prd_111aaa-bbb-ccc

Body da requisição

Content-Type: application/json

JSON
{
  "name": "Curso de Marketing Digital 2026",
  "active": false
}

Respostas

200

Produto atualizado. Retorna o objeto completo.

JSON
{
  "id": "prd_111aaa-bbb-ccc",
  "name": "Curso de Marketing Digital 2026",
  "imageUrl": "https://seu-bucket.s3.us-east-1.amazonaws.com/products/u-1234/prd_111aaa-bbb-ccc.webp",
  "active": false,
  "updatedAt": "2026-05-26T15:45:12.501Z"
}
400

Validação falhou, produto arquivado, novo externalId já existe, ou imageUrl enviado (use endpoint separado).

JSON
{
  "status": 400,
  "error": "imageUrl nao eh editavel aqui. Use POST /v2/products/:id/image pra trocar ou DELETE pra remover."
}
404

Produto não encontrado.

JSON
{ "status": 404, "error": "Produto nao encontrado" }

Exemplos

cURL
# Desativar produto (some das listagens de venda, mas Offers continuam funcionando)
curl -X PATCH "https://api.pagnovo.com/v2/products/prd_111aaa-bbb-ccc" \
  -H "Authorization: Basic $(echo -n 'secret:SUA_SECRET_KEY' | base64)" \
  -H "Content-Type: application/json" \
  -d '{ "active": false }'