> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hubfy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Atualizar um preço

> Operação sobre preços da conta.

Se `used` for `true`, apenas `name`, `metadata` e `is_active` podem mudar. O vínculo com o produto é imutável. Para mudar valor ou recorrência de um preço já usado, crie outro preço.

Requer `prices:write` ou `write`. Use `Idempotency-Key` ao repetir a mesma operação. Veja [campos, relacionamentos e eventos](https://docs.hubfy.io/api-reference/prices/object.md).


## OpenAPI

````yaml api/v1/openapi.yaml POST /v1/prices/{id}
openapi: 3.1.0
info:
  title: Hubfy API
  version: 1.0.0
  description: >-
    API pública da Hubfy para produtos, preços, arquivos, clientes, pedidos e
    links de pagamento. Autenticação por chave da conta. GET consulta; POST
    cria, atualiza ou executa ações; DELETE remove ou desativa. O ambiente usa
    dados reais, sem sandbox separado. Consulte os fundamentos, os objetos e os
    eventos em https://docs.hubfy.io/api-reference/introduction.
servers:
  - url: https://api.hubfy.io
security:
  - apiKeyAuth: []
tags:
  - name: Produtos
    description: Objeto Product. Campos e relacionamentos na visão geral.
  - name: Preços
    description: Objeto Price. Campos e relacionamentos na visão geral.
  - name: Arquivos
    description: Objeto Asset. Campos e relacionamentos na visão geral.
  - name: Clientes
    description: Objeto Customer. Campos e relacionamentos na visão geral.
  - name: Pedidos
    description: Objeto Order. Campos e relacionamentos na visão geral.
  - name: Links de pagamento
    description: Objeto PaymentLink. Campos e relacionamentos na visão geral.
  - name: Fundamentos da API
    description: Conexão e identificação da API.
paths:
  /v1/prices/{id}:
    post:
      tags:
        - Preços
      summary: Atualizar um preço
      description: >-
        Na criação, `product` é obrigatório e precisa pertencer à mesma conta.
        Esse vínculo é imutável. Depois do primeiro uso em checkout ou pedido
        (`used: true`), apenas `name`, `metadata` e `is_active` podem mudar.
        Para alterar valor ou recorrência de um preço usado, crie outro preço.
        Excluir um preço usado o desativa; um preço sem uso pode ser excluído.


        - `subscription`: exige `renewal_interval_unit` e
        `renewal_interval_quantity` positiva. O período de teste deve ter
        unidade e quantidade juntas. Taxa inicial habilitada exige `setup_fee`.

        - `lead_magnet`: exige `unit_amount: 0`.

        - `pwyw`: exige `min_price`; se houver `suggested_price`, ele deve ser
        maior ou igual ao mínimo.

        - `graduated` e `volume`: exigem faixas não vazias, com limites
        crescentes e última faixa `up_to: null`.

        - Valores inteiros recebidos não podem exceder `2147483647`.
        `package_size` deve ser pelo menos 1.


        Estas são condições do cadastro. Este recurso não cobra um cliente, cria
        assinaturas ou registra consumo.


        Permissão: `prices:write` ou `write`. Consulte a [visão
        geral](/api-reference/prices/object) para campos e relacionamentos.
      operationId: updatePrice
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            pattern: ^prc_[a-z0-9]{16}$
          description: ID público do preço na conta.
        - name: Idempotency-Key
          in: header
          schema:
            type: string
            minLength: 1
            maxLength: 255
          description: >-
            Chave única por operação lógica, de 1 a 255 caracteres ASCII
            imprimíveis, sem espaços. Reutilize-a somente para repetir a mesma
            operação.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PriceUpdate'
            example:
              metadata:
                reference: exemplo
      responses:
        '200':
          description: Operação concluída
          headers:
            X-Request-Id:
              description: Identifier of this HTTP request
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Price'
              example:
                id: prc_1234567890abcdef
                category: one_time
                created_at: '2030-01-01T00:00:00.000Z'
                currency: BRL
                is_active: true
                metadata: {}
                min_price: null
                name: Oferta principal
                object: price
                package_size: 1
                product: pro_1234567890abcdef
                renewal_interval_quantity: null
                renewal_interval_unit: null
                scheme: standard
                setup_fee: null
                setup_fee_enabled: false
                suggested_price: null
                tiers: []
                trial_interval_quantity: null
                trial_interval_unit: null
                unit_amount: 4990
                unit_amount_decimal: null
                updated_at: '2030-01-01T00:00:00.000Z'
                usage_aggregation: null
                used: false
        '400':
          $ref: '#/components/responses/ApiFailure'
        '401':
          $ref: '#/components/responses/ApiFailure'
        '403':
          $ref: '#/components/responses/ApiFailure'
        '404':
          $ref: '#/components/responses/ApiFailure'
        '409':
          $ref: '#/components/responses/ApiFailure'
        '429':
          $ref: '#/components/responses/ApiFailure'
        '500':
          $ref: '#/components/responses/ApiFailure'
        '502':
          $ref: '#/components/responses/ApiFailure'
        '503':
          $ref: '#/components/responses/ApiFailure'
      security:
        - apiKeyAuth: []
components:
  schemas:
    PriceUpdate:
      type: object
      additionalProperties: false
      minProperties: 1
      properties:
        category:
          type: string
          enum:
            - one_time
            - subscription
            - lead_magnet
            - pwyw
          description: >-
            Categoria: one_time (compra única), subscription (assinatura),
            lead_magnet (gratuito) ou pwyw (cliente escolhe o valor).
          maxLength: 10000
        currency:
          type: string
          enum:
            - BRL
            - USD
          description: >-
            Moeda do preço: BRL ou USD, sempre em maiúsculas. Valores monetários
            são expressos em centavos dessa moeda.
          maxLength: 10000
        is_active:
          type: boolean
          description: >-
            Indica se a oferta está ativa. Desativar preserva o histórico dos
            pedidos que a utilizaram.
        metadata:
          type: object
          additionalProperties: true
          description: >-
            Objeto JSON livre para referências da integração, limitado a 16 KB.
            Ao enviar, substitui todo o metadata anterior; use {} para limpar.
            Não aceita null.
        min_price:
          type:
            - integer
            - 'null'
          description: >-
            Valor mínimo em centavos, não negativo. Obrigatório para pwyw; pode
            ser null nas outras categorias.
          minimum: 0
          maximum: 2147483647
        name:
          type: string
          description: >-
            Nome da oferta exibido no painel. Pode vir vazio quando não
            informado; se enviado, deve ser não vazio.
          maxLength: 10000
          minLength: 1
        package_size:
          type: integer
          description: Quantidade de unidades por pacote. Inteiro maior ou igual a 1.
          minimum: 1
          maximum: 2147483647
        renewal_interval_quantity:
          type:
            - integer
            - 'null'
          description: >-
            Número de unidades entre renovações. Inteiro positivo para
            subscription; pode ser null nas outras categorias.
          minimum: 0
          maximum: 2147483647
        renewal_interval_unit:
          type:
            - string
            - 'null'
          description: >-
            Unidade da renovação: day, week, month ou year. Obrigatória para
            subscription, junto da quantidade.
          enum:
            - day
            - week
            - month
            - year
            - null
          maxLength: 10000
        scheme:
          type: string
          enum:
            - standard
            - package
            - graduated
            - volume
          description: >-
            Modelo do preço: standard (unitário), package (pacote), graduated
            (faixas progressivas) ou volume (faixa pelo volume total).
          maxLength: 10000
        setup_fee:
          type:
            - integer
            - 'null'
          description: >-
            Valor da taxa inicial, em centavos e não negativo. Pode ser null
            quando não configurado.
          minimum: 0
          maximum: 2147483647
        setup_fee_enabled:
          type:
            - boolean
            - 'null'
          description: >-
            Indica se há taxa inicial configurada. Pode ser null. Se true em uma
            assinatura, setup_fee é obrigatório.
        suggested_price:
          type:
            - integer
            - 'null'
          description: >-
            Valor sugerido em centavos. Em pwyw, quando informado, deve ser
            maior ou igual a min_price. Pode ser null.
          minimum: 0
          maximum: 2147483647
        tiers:
          type: array
          items:
            type: object
            additionalProperties: false
            required:
              - unit_amount
              - up_to
            properties:
              flat_amount:
                type: integer
                description: >-
                  Valor fixo da faixa, em centavos; inteiro não negativo quando
                  informado. É opcional.
              unit_amount:
                type: integer
                description: >-
                  Valor por unidade nesta faixa, em centavos; inteiro não
                  negativo.
              up_to:
                type:
                  - integer
                  - 'null'
                description: >-
                  Limite superior inclusivo da faixa. Inteiro positivo; os
                  limites crescem e a última faixa deve usar null (sem limite).
          description: >-
            Faixas para graduated e volume. Nesses modelos, envie uma lista não
            vazia, com limites crescentes e a última faixa sem limite (up_to:
            null).
        trial_interval_quantity:
          type:
            - integer
            - 'null'
          description: >-
            Quantidade de unidades do período de teste. Inteiro positivo quando
            configurado; null sem teste.
          minimum: 0
          maximum: 2147483647
        trial_interval_unit:
          type:
            - string
            - 'null'
          description: >-
            Unidade do período de teste: day, week, month ou year. Pode ser
            null. Para subscription, envie unidade e quantidade juntas.
          enum:
            - day
            - week
            - month
            - year
            - null
          maxLength: 10000
        unit_amount:
          type: integer
          description: >-
            Valor unitário inteiro, em centavos: 4990 representa R$ 49,90 em
            BRL. Deve ser não negativo; lead_magnet exige zero.
          minimum: 0
          maximum: 2147483647
        unit_amount_decimal:
          type:
            - string
            - 'null'
          description: >-
            Valor unitário decimal em centavos, como string com ponto e até 12
            casas decimais. Pode ser null. Máximo 2147483647.
          maxLength: 10000
        usage_aggregation:
          type:
            - string
            - 'null'
          description: >-
            Agregação de uso: sum (soma), last_during_period (último no
            período), last_ever (último conhecido) ou max (máximo). Null quando
            não configurada.
          enum:
            - sum
            - last_during_period
            - last_ever
            - max
            - null
          maxLength: 10000
    Price:
      type: object
      additionalProperties: false
      required:
        - id
        - category
        - created_at
        - currency
        - is_active
        - metadata
        - min_price
        - name
        - object
        - package_size
        - product
        - renewal_interval_quantity
        - renewal_interval_unit
        - scheme
        - setup_fee
        - setup_fee_enabled
        - suggested_price
        - tiers
        - trial_interval_quantity
        - trial_interval_unit
        - unit_amount
        - unit_amount_decimal
        - updated_at
        - usage_aggregation
        - used
      properties:
        id:
          type: string
          pattern: ^prc_[a-z0-9]{16}$
          description: >-
            Identificador público estável. Use o valor retornado pela API nas
            consultas e relacionamentos; não derive IDs de nomes.
        category:
          type: string
          enum:
            - one_time
            - subscription
            - lead_magnet
            - pwyw
          description: >-
            Categoria: one_time (compra única), subscription (assinatura),
            lead_magnet (gratuito) ou pwyw (cliente escolhe o valor).
        created_at:
          type: string
          format: date-time
          description: >-
            Data e hora da criação, em ISO 8601 com fuso horário. Somente
            leitura.
        currency:
          type: string
          enum:
            - BRL
            - USD
          description: >-
            Moeda do preço: BRL ou USD, sempre em maiúsculas. Valores monetários
            são expressos em centavos dessa moeda.
        is_active:
          type: boolean
          description: >-
            Indica se a oferta está ativa. Desativar preserva o histórico dos
            pedidos que a utilizaram.
        metadata:
          type: object
          additionalProperties: true
          description: >-
            Objeto JSON livre para referências da integração, limitado a 16 KB.
            Ao enviar, substitui todo o metadata anterior; use {} para limpar.
            Não aceita null.
        min_price:
          type:
            - integer
            - 'null'
          description: >-
            Valor mínimo em centavos, não negativo. Obrigatório para pwyw; pode
            ser null nas outras categorias.
        name:
          type: string
          description: >-
            Nome da oferta exibido no painel. Pode vir vazio quando não
            informado; se enviado, deve ser não vazio.
        object:
          const: price
          type: string
          description: Tipo do objeto retornado. O valor é fixo para este recurso.
        package_size:
          type: integer
          description: Quantidade de unidades por pacote. Inteiro maior ou igual a 1.
        product:
          type: string
          pattern: ^pro_[a-z0-9]{16}$
          description: >-
            ID do produto ao qual o preço pertence, na mesma conta. Obrigatório
            na criação; não pode ser alterado.
        renewal_interval_quantity:
          type:
            - integer
            - 'null'
          description: >-
            Número de unidades entre renovações. Inteiro positivo para
            subscription; pode ser null nas outras categorias.
        renewal_interval_unit:
          type:
            - string
            - 'null'
          description: >-
            Unidade da renovação: day, week, month ou year. Obrigatória para
            subscription, junto da quantidade.
          enum:
            - day
            - week
            - month
            - year
            - null
        scheme:
          type: string
          enum:
            - standard
            - package
            - graduated
            - volume
          description: >-
            Modelo do preço: standard (unitário), package (pacote), graduated
            (faixas progressivas) ou volume (faixa pelo volume total).
        setup_fee:
          type:
            - integer
            - 'null'
          description: >-
            Valor da taxa inicial, em centavos e não negativo. Pode ser null
            quando não configurado.
        setup_fee_enabled:
          type:
            - boolean
            - 'null'
          description: >-
            Indica se há taxa inicial configurada. Pode ser null. Se true em uma
            assinatura, setup_fee é obrigatório.
        suggested_price:
          type:
            - integer
            - 'null'
          description: >-
            Valor sugerido em centavos. Em pwyw, quando informado, deve ser
            maior ou igual a min_price. Pode ser null.
        tiers:
          type: array
          items:
            type: object
            additionalProperties: false
            required:
              - unit_amount
              - up_to
            properties:
              flat_amount:
                type: integer
                description: >-
                  Valor fixo da faixa, em centavos; inteiro não negativo quando
                  informado. É opcional.
              unit_amount:
                type: integer
                description: >-
                  Valor por unidade nesta faixa, em centavos; inteiro não
                  negativo.
              up_to:
                type:
                  - integer
                  - 'null'
                description: >-
                  Limite superior inclusivo da faixa. Inteiro positivo; os
                  limites crescem e a última faixa deve usar null (sem limite).
          description: >-
            Faixas para graduated e volume. Nesses modelos, envie uma lista não
            vazia, com limites crescentes e a última faixa sem limite (up_to:
            null).
        trial_interval_quantity:
          type:
            - integer
            - 'null'
          description: >-
            Quantidade de unidades do período de teste. Inteiro positivo quando
            configurado; null sem teste.
        trial_interval_unit:
          type:
            - string
            - 'null'
          description: >-
            Unidade do período de teste: day, week, month ou year. Pode ser
            null. Para subscription, envie unidade e quantidade juntas.
          enum:
            - day
            - week
            - month
            - year
            - null
        unit_amount:
          type: integer
          description: >-
            Valor unitário inteiro, em centavos: 4990 representa R$ 49,90 em
            BRL. Deve ser não negativo; lead_magnet exige zero.
        unit_amount_decimal:
          type:
            - string
            - 'null'
          description: >-
            Valor unitário decimal em centavos, como string com ponto e até 12
            casas decimais. Pode ser null. Máximo 2147483647.
        updated_at:
          type: string
          format: date-time
          description: >-
            Data e hora da última alteração, em ISO 8601 com fuso horário.
            Somente leitura.
        usage_aggregation:
          type:
            - string
            - 'null'
          description: >-
            Agregação de uso: sum (soma), last_during_period (último no
            período), last_ever (último conhecido) ou max (máximo). Null quando
            não configurada.
          enum:
            - sum
            - last_during_period
            - last_ever
            - max
            - null
        used:
          type: boolean
          description: >-
            Indica se o preço já foi vinculado a checkout ou pedido. Quando
            true, somente name, metadata e is_active podem ser editados pela
            API. Somente leitura.
      example:
        id: prc_1234567890abcdef
        category: one_time
        created_at: '2030-01-01T00:00:00.000Z'
        currency: BRL
        is_active: true
        metadata: {}
        min_price: null
        name: Oferta principal
        object: price
        package_size: 1
        product: pro_1234567890abcdef
        renewal_interval_quantity: null
        renewal_interval_unit: null
        scheme: standard
        setup_fee: null
        setup_fee_enabled: false
        suggested_price: null
        tiers: []
        trial_interval_quantity: null
        trial_interval_unit: null
        unit_amount: 4990
        unit_amount_decimal: null
        updated_at: '2030-01-01T00:00:00.000Z'
        usage_aggregation: null
        used: false
    ApiError:
      type: object
      additionalProperties: false
      required:
        - error
      properties:
        error:
          type: object
          additionalProperties: false
          required:
            - code
            - doc_url
            - message
            - param
            - type
          properties:
            code:
              type: string
            doc_url:
              type:
                - string
                - 'null'
            message:
              type: string
            param:
              type:
                - string
                - 'null'
            type:
              type: string
              enum:
                - invalid_request_error
                - authentication_error
                - permission_error
                - rate_limit_error
                - api_error
      example:
        error:
          code: invalid_parameter
          doc_url: null
          message: The request contains invalid parameters
          param: null
          type: invalid_request_error
  responses:
    ApiFailure:
      description: A operação não foi concluída
      headers:
        X-Request-Id:
          description: Identifier of this HTTP request
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          example:
            error:
              code: invalid_parameter
              doc_url: null
              message: The request contains invalid parameters
              param: null
              type: invalid_request_error
  securitySchemes:
    apiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: API key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.