> ## 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.

# Buscar um produto

> Retorna os dados de um produto específico baseado em filtros, incluindo o campo `cycle` (assinatura ou avulso).

Você pode usar essa rota para buscar um produto por ID ou externalId.


Retorna os dados de um produto pelo seu `id`.

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

Use para verificar `status`, `price`, `cycle`, `trialDays` e demais atributos antes de criar um checkout com o produto.


## OpenAPI

````yaml GET /products/get
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/get:
    get:
      summary: Buscar um produto
      description: >
        Retorna os dados de um produto específico baseado em filtros, incluindo
        o campo `cycle` (assinatura ou avulso).


        Você pode usar essa rota para buscar um produto por ID ou externalId.
      parameters:
        - name: id
          in: query
          description: Identificador único público do produto
          required: false
          schema:
            type: string
            example: prod_abc123xyz
        - name: externalId
          in: query
          description: Identificador único do produto no seu sistema
          required: false
          schema:
            type: string
            example: prod-123
      responses:
        '200':
          description: Produto encontrado com sucesso.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Product'
                  error:
                    type: string
                    nullable: true
                    example: null
                  success:
                    $ref: '#/components/schemas/Success'
        '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.
        '404':
          description: Produto não encontrado.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: >-
                      Mensagem de erro indicando que o produto não foi
                      encontrado.
                    example: Produto não encontrado.
      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
  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).

````