Criar oferta

Cria uma oferta (preço) avulsa para um produto já existente do seu catálogo. product_id precisa pertencer à sua conta — produtos de outro whitelabel retornam 404.

Esta rota não cria assinatura: cycle/cycle_interval não são aceitos aqui. Toda oferta criada pela API pública é de cobrança avulsa. Limites de quantidade de compra, texto promocional, cobrança de taxas do comprador e ajuste de taxa de parcelamento também não são aceitos nesta versão — configure-os pelo painel, se necessário.

is_default não pode ser definido pelo corpo: a primeira oferta criada para um produto é marcada automaticamente como padrão pela plataforma.

Sem campo de autorização: o portal autentica por você com a sua chave de Homologação e as requisições rodam só no ambiente de testes.

POST
/offers
AuthorizationBearer <token>

Token de acesso devolvido por POST /auth/token. Envie como "Authorization: Bearer ". Vale 24 horas.

In: header

product_idstring
Formatuuid
priceinteger

Preço da oferta em centavos, número inteiro — a mesma unidade de offer.value. 4990 = R$ 49,90. Valor com casas decimais retorna 400.

Range0 <= value
title?string | null
is_active?boolean
Defaulttrue
is_enabled_pix?boolean

PIX. Mínimo de R$ 5,00. Os três meios começam ligados, mas cada um só fica ligado se o preço atinge o mínimo dele: PIX R$ 5,00, cartão R$ 5,00 e boleto R$ 10,00. Abaixo do mínimo, o meio é desligado ao salvar, mesmo enviando true. Envie false para desligar um meio acima do mínimo. Na edição sem price, só os meios enviados são recalculados; com price, os três são recalculados.

Defaulttrue
is_enabled_credit_card?boolean

Cartão de crédito. Mínimo de R$ 5,00. Os três meios começam ligados, mas cada um só fica ligado se o preço atinge o mínimo dele: PIX R$ 5,00, cartão R$ 5,00 e boleto R$ 10,00. Abaixo do mínimo, o meio é desligado ao salvar, mesmo enviando true. Envie false para desligar um meio acima do mínimo. Na edição sem price, só os meios enviados são recalculados; com price, os três são recalculados.

Defaulttrue
is_enabled_billet?boolean

Boleto. Mínimo de R$ 10,00. Os três meios começam ligados, mas cada um só fica ligado se o preço atinge o mínimo dele: PIX R$ 5,00, cartão R$ 5,00 e boleto R$ 10,00. Abaixo do mínimo, o meio é desligado ao salvar, mesmo enviando true. Envie false para desligar um meio acima do mínimo. Na edição sem price, só os meios enviados são recalculados; com price, os três são recalculados.

Defaulttrue
max_credit_card_installments?integer

Máximo de parcelas no cartão de crédito. O valor de cada parcela (price / max_credit_card_installments) não pode ficar abaixo de R$ 5,00 — abaixo disso, a criação/edição retorna 400.

Response Body

curl -X POST "https://pagpolar-api.creativecode.dev.br/v1/offers" \  -H "Content-Type: application/json" \  -d '{    "product_id": "c4d5e6f7-a8b9-4c0d-1e2f-3a4b5c6d7e8f",    "price": 19790,    "title": "Plano Mensal",    "is_enabled_pix": true,    "is_enabled_credit_card": true,    "is_enabled_billet": false,    "max_credit_card_installments": 12  }'

{
  "data": {
    "id": "d5e6f7a8-b9c0-4d1e-2f3a-4b5c6d7e8f9a",
    "identifier": "PPP1234567890",
    "title": "Plano Mensal",
    "price": 197.9,
    "is_active": true,
    "is_default": true,
    "product_id": "c4d5e6f7-a8b9-4c0d-1e2f-3a4b5c6d7e8f",
    "payment_methods": {
      "pix": true,
      "credit_card": true,
      "billet": false
    },
    "max_credit_card_installments": 12,
    "cycle": null,
    "cycle_interval": null,
    "cycle_interval_limit": null,
    "allow_purchase_quantity": false,
    "purchase_quantity_limit": null,
    "purchase_quantity_min": 1,
    "expires_at": null,
    "created_at": "2026-01-15T12:00:00.000Z"
  }
}
{
  "error": {
    "code": "invalid_request",
    "message": "string",
    "request_id": "string"
  }
}
{
  "error": {
    "code": "invalid_request",
    "message": "string",
    "request_id": "string"
  }
}
{
  "error": {
    "code": "invalid_request",
    "message": "string",
    "request_id": "string"
  }
}
{
  "error": {
    "code": "invalid_request",
    "message": "string",
    "request_id": "string"
  }
}
{
  "error": {
    "code": "invalid_request",
    "message": "string",
    "request_id": "string"
  }
}