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

# Listar produtos

> Retorna todos os produtos que você criou com suporte a paginação.

Você pode usar essa rota para visualizar todos os seus produtos, incluindo status, preços, ciclo de assinatura (quando aplicável) e demais informações.

**Alternativa**: Você também pode visualizar e gerenciar seus produtos pelo [Dashboard da AbacatePay](https://app.abacatepay.com/produtos).


Retorna todos os produtos do seu catálogo.

<Card horizontal>
  Requer a permissão `PRODUCT:READ`.
</Card>

Use `limit`, `after` e `before` para paginar. Cada item segue o mesmo formato da resposta do [Criar Produto](/pages/products/create), incluindo `id`, `name`, `price`, `cycle`, `trialDays` e `status`.


## OpenAPI

````yaml GET /products/list
openapi: 3.1.0
info:
  title: API AbacatePay
  description: API para gerenciamento de cobranças e pagamentos usando o AbacatePay.
  version: 1.0.0
servers:
  - url: https://api.abacatepay.com/v2
    description: Único servidor para os ambientes de produção e sandbox.
security: []
paths:
  /products/list:
    get:
      summary: Listar produtos
      description: >
        Retorna todos os produtos que você criou com suporte a paginação.


        Você pode usar essa rota para visualizar todos os seus produtos,
        incluindo status, preços, ciclo de assinatura (quando aplicável) e
        demais informações.


        **Alternativa**: Você também pode visualizar e gerenciar seus produtos
        pelo [Dashboard da AbacatePay](https://app.abacatepay.com/produtos).
      parameters:
        - name: after
          in: query
          description: Cursor para buscar itens após este ponto
          required: false
          schema:
            type: string
        - name: before
          in: query
          description: Cursor para buscar itens antes deste ponto
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: Quantidade de itens por página (1-100)
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 100
            example: 100
        - name: id
          in: query
          description: Filtrar por identificador único do produto
          required: false
          schema:
            type: string
            example: prod_abc123xyz
        - name: externalId
          in: query
          description: Filtrar por identificador do produto no seu sistema
          required: false
          schema:
            type: string
            example: prod-123
        - name: status
          in: query
          description: Filtrar por status do produto
          required: false
          schema:
            type: string
            enum:
              - ACTIVE
              - INACTIVE
      responses:
        '200':
          description: Lista de produtos retornada com sucesso.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    description: Lista de produtos.
                    items:
                      $ref: '#/components/schemas/Product'
                  success:
                    $ref: '#/components/schemas/Success'
                  error:
                    type: string
                    nullable: true
                    example: null
                  pagination:
                    $ref: '#/components/schemas/PaginationCursor'
        '401':
          description: Não autorizado. Falha na autenticação.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: >-
                      Mensagem de erro descrevendo o motivo da falha na
                      autenticação.
                    example: Token de autenticação inválido ou ausente.
      security:
        - bearerAuth: []
components:
  schemas:
    Product:
      type: object
      description: >
        Os dados do seu produto.

        O campo `cycle` indica se o produto é uma assinatura (subscription).
        Quando `null`, o produto é avulso (pagamento único). Valores possíveis
        definem a recorrência da assinatura.

        A moeda (`currency`) é sempre `BRL`.
      required:
        - externalId
        - name
        - description
        - price
        - devMode
        - currency
        - createdAt
        - updatedAt
        - status
        - id
      additionalProperties: false
      properties:
        externalId:
          type: string
          description: Identificador único do produto no seu sistema
          example: prod-123
        name:
          type: string
          description: Nome do produto
          example: Produto Exemplo
        description:
          type: string
          description: Descrição do produto
          example: Descrição do produto
        imageUrl:
          type: string
          format: uri
          nullable: true
          description: URL da imagem do produto
          example: null
        price:
          type: number
          description: Preço do produto em centavos
          example: 10000
        devMode:
          type: boolean
          description: Indica se o produto foi criado em ambiente de testes
          example: false
        currency:
          type: string
          description: Moeda do produto (sempre BRL)
          enum:
            - BRL
          example: BRL
        createdAt:
          type: string
          format: date-time
          description: Data de criação do produto
          example: '2024-11-04T18:38:28.573Z'
        updatedAt:
          type: string
          format: date-time
          description: Data de atualização do produto
          example: '2024-11-04T18:38:28.573Z'
        status:
          type: string
          description: Status atual do produto (ProductStatus)
          enum:
            - ACTIVE
            - INACTIVE
          example: ACTIVE
        id:
          type: string
          description: Identificador único público do produto
          example: prod_abc123xyz
        cycle:
          type: string
          nullable: true
          description: >
            Indica se o produto é uma assinatura (ProductCycle). Quando `null`,
            o produto é avulso (pagamento único).

            Valores possíveis definem a recorrência da assinatura.
          enum:
            - WEEKLY
            - MONTHLY
            - QUARTERLY
            - SEMIANNUALLY
            - ANNUALLY
          example: null
        hasFile:
          type: boolean
          description: >
            Indica se o produto possui um arquivo PDF vinculado para download.
            Quando `true`, o comprador recebe acesso ao arquivo após o
            pagamento.
          example: false
    Success:
      type: boolean
      description: Se a requisição obteve sucesso ou não.
      example: true
    PaginationCursor:
      type: object
      description: Informações de paginação baseada em cursor.
      required:
        - hasMore
        - next
        - before
      additionalProperties: false
      properties:
        hasMore:
          type: boolean
          description: Indica se existe mais itens para carregar.
        next:
          type: string
          nullable: true
          description: Cursor para próxima página (usar em after).
        before:
          type: string
          nullable: true
          description: Cursor para página anterior (usar em before).
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >
        Todas as requisições devem incluir sua chave de API no header
        Authorization usando o formato `Bearer <abacatepay-api-key>`. Sem esse
        header a requisição será rejeitada.


        Saiba mais sobre como criar e usar chaves de API na [documentação de
        autenticação](/pages/authentication).

````