> ## Documentation Index
> Fetch the complete documentation index at: https://dev.valorapayments.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Valora Payments API (Brazil: Pix, card, boleto). Base URL https://api.valorapayments.com.br, Authorization: Bearer sk_vl_... used only on the server. Request amounts are reais as strings ("149.90"); response amounts are integer cents (14990). Use POST /v1/checkouts for card and boleto; POST /v1/payments only creates Pix and should send an Idempotency-Key. Confirm payments only through the payment.succeeded webhook after verifying X-Valora-Signature (hex HMAC-SHA256 of "<t>.<raw body>"), dedupe by event.id and check livemode. Never invent endpoints or fields: check /llms.txt and /openapi.json.

# Listar produtos

> Lista os produtos do negócio.

Escopo: `products:read`.



## OpenAPI

````yaml /openapi.json get /v1/products
openapi: 3.1.0
info:
  title: Valora Payments API
  version: 1.0.0
  description: >-
    API REST da Valora Payments. Valores na entrada em reais (texto, ex.:
    "149.90"); nas respostas, em centavos inteiros.
servers:
  - url: https://api.valorapayments.com.br
    description: Teste e produção (o ambiente vem da chave)
security:
  - bearerAuth: []
tags:
  - name: Pagamentos
  - name: Checkouts
  - name: Clientes
  - name: Produtos
  - name: Saldo
  - name: Webhooks
paths:
  /v1/products:
    get:
      tags:
        - Produtos
      summary: Listar produtos
      description: |-
        Lista os produtos do negócio.

        Escopo: `products:read`.
      operationId: listarProdutos
      parameters:
        - name: limit
          in: query
          required: false
          description: Itens por página, de 1 a 100.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
        - name: starting_after
          in: query
          required: false
          description: O `next_cursor` da página anterior.
          schema:
            type: string
        - name: status
          in: query
          required: false
          description: Filtra por status.
          schema:
            type: string
            enum:
              - draft
              - active
              - archived
        - name: type
          in: query
          required: false
          description: Filtra por tipo.
          schema:
            type: string
            enum:
              - physical
              - digital
              - service
        - name: external_reference
          in: query
          required: false
          description: Filtra pelo seu identificador.
          schema:
            type: string
      responses:
        '200':
          description: Página de produtos.
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    description: Sempre `list`.
                    enum:
                      - list
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Product'
                  has_more:
                    type: boolean
                    description: Há mais itens depois desta página.
                  next_cursor:
                    type:
                      - string
                      - 'null'
                    description: Passe em `starting_after` para a próxima página.
        '401':
          description: Chave ausente, inválida ou revogada.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  type: invalid_api_key
                  message: Chave de API inválida ou revogada.
        '403':
          description: >-
            A chave não tem o escopo da rota, ou a empresa ainda não opera em
            produção.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  type: missing_scope
                  message: A chave não tem o escopo necessário.
        '422':
          description: Dados inválidos. Veja `details`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  type: invalid_request
                  message: Corpo inválido.
                  details:
                    amount:
                      - Valor inválido.
        '429':
          description: Limite de requisições. Veja o header `Retry-After`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  type: rate_limited
                  message: Muitas requisições. Tente novamente em instantes.
        '503':
          description: Indisponibilidade temporária.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  type: service_unavailable
                  message: Serviço temporariamente indisponível.
      security:
        - bearerAuth: []
components:
  schemas:
    Product:
      type: object
      properties:
        id:
          type: string
          description: Id do produto.
          pattern: ^prod_[A-Za-z0-9_-]{16}$
          examples:
            - prod_Xk2v9QeR7tLmN3bA
        object:
          type: string
          description: Sempre `product`.
          enum:
            - product
        name:
          type: string
          description: Nome.
        description:
          type:
            - string
            - 'null'
          description: Descrição.
        type:
          type: string
          description: Tipo.
          enum:
            - physical
            - digital
            - service
        status:
          type: string
          description: Status.
          enum:
            - draft
            - active
            - archived
        images:
          type: array
          items:
            type: string
            format: uri
          description: URLs das imagens.
        price:
          type: object
          properties:
            amount:
              type: integer
              description: Preço em centavos.
              examples:
                - 14990
            currency:
              type: string
              description: Moeda.
              enum:
                - BRL
        external_reference:
          type:
            - string
            - 'null'
          description: O seu identificador (SKU).
        statement_description:
          type:
            - string
            - 'null'
          description: Texto que o pagador vê no Pix.
        metadata:
          type: object
          additionalProperties:
            type: string
            maxLength: 500
          maxProperties: 20
          description: >-
            Até 20 pares chave/valor em texto (chave até 40, valor até 500
            caracteres). Volta igual nas respostas e nos webhooks.
          examples:
            - order_id: '1001'
        created_at:
          type: string
          description: Criação.
          format: date-time
        updated_at:
          type: string
          description: Última alteração.
          format: date-time
        archived_at:
          type:
            - string
            - 'null'
          description: Quando foi arquivado.
          format: date-time
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - type
            - message
          properties:
            type:
              type: string
              description: Código estável do erro. Veja a página Erros.
              examples:
                - invalid_request
            message:
              type: string
              description: Explicação em português. Não compare o texto.
              examples:
                - Corpo inválido.
            details:
              type: object
              additionalProperties:
                type: array
                items:
                  type: string
              description: 'Só em erros de validação: problemas por campo.'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Chave de API `sk_vl_...` criada no painel em Desenvolvedores → Chaves de
        API.

````

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