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

# Obtener un producto por id



## OpenAPI

````yaml /api-reference/openapi.json get /producto/{id}
openapi: 3.1.0
info:
  title: Fegora API
  version: '1.0'
  description: >-
    API de Fegora para la emisión y consulta de Documentos Tributarios
    Electrónicos (DTE) en Guatemala, El Salvador y República Dominicana.


    El API es uno solo para los tres países: el país de operación lo determina
    la configuración de la cuenta emisora (no la URL ni ningún parámetro de la
    solicitud). Los campos que varían por país — tipos de documento, catálogos
    de impuestos, identificadores fiscales del receptor, datos adicionales — se
    documentan en la descripción de cada campo.


    Autenticación: OAuth2 (`POST /token`, grant types `password` y
    `refresh_token`) → JWT Bearer con vigencia de 24 horas.
servers:
  - url: https://api.fegora.com
security:
  - bearerAuth: []
tags:
  - name: Autenticación
    description: Obtención y renovación de tokens de acceso.
  - name: DTE
    description: Emisión, consulta, anulación y distribución de documentos emitidos.
  - name: DTE Recibidos
    description: Documentos donde la cuenta es el receptor (facturas de proveedores).
  - name: Lotes
    description: Carga masiva de DTEs mediante archivos Excel.
  - name: Cuentas
    description: Administración de cuentas emisoras/receptoras.
  - name: Catálogos
    description: >-
      Catálogos de referencia: productos, plantillas de PDF, localidades y
      contribuyentes.
  - name: Otros
    description: Endpoints de soporte, como el perfil del usuario autenticado.
paths:
  /producto/{id}:
    get:
      tags:
        - Catálogos
      summary: Obtener un producto por id
      operationId: getProductoByid
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Producto encontrado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Producto'
              examples:
                ok:
                  value:
                    id: AUDIF-BOSE-NB75
                    idProducto: AUDIF-BOSE-NB75
                    idCuenta: '12345678'
                    nombre: Audifonos Bose NB-75
                    precioUnitario: 500
                    unidadMedida: UNI
                    tipoProducto: B
                    aplicaIdt: false
        '400':
          description: >-
            El producto no existe o no tiene permisos suficientes para
            obtenerlo.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorProducto'
              examples:
                noExiste:
                  summary: El producto no existe
                  value:
                    Mensaje: >-
                      El producto no existe o no tiene permisos suficientes para
                      obtenerlo
                    Codigo: FEG_PRO_OBTE_INEX
        '401':
          description: No autenticado. El token es inválido, expiró o no fue enviado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                noAutenticado:
                  summary: Token ausente, inválido o expirado
                  value:
                    codigo: FEG_UNAUTHORIZED
                    mensaje: No está autorizado para acceder a este recurso
                    masInformacion: https://developer.fegora.com
                    severidad: 2
components:
  schemas:
    Producto:
      type: object
      properties:
        id:
          type: string
        idProducto:
          type: string
        idCuenta:
          type: string
        nombre:
          type: string
        descripcion:
          type: string
        precioUnitario:
          type: number
          format: double
        unidadMedida:
          type: string
          default: UNI
        tipoProducto:
          type: string
          default: B
          description: '`B` = bien, `S` = servicio.'
        subTipoProducto:
          type: string
        aplicaIdt:
          type: boolean
          description: >-
            Si aplica el Impuesto a la Distribución de Petróleo (IDP),
            Guatemala.
        tipoIdt:
          type: string
      required:
        - id
        - idProducto
        - idCuenta
        - nombre
        - precioUnitario
    ErrorProducto:
      type: object
      description: >-
        Los endpoints `/producto` devuelven el error 400 con este formato
        PascalCase (`Mensaje`/`Codigo`), distinto del formato estándar `Error`
        (`mensaje`/`codigo`) usado en el resto del API — divergencia real del
        backend, documentada tal cual.
      properties:
        Mensaje:
          type: string
        Codigo:
          type: string
      required:
        - Mensaje
        - Codigo
    Error:
      type: object
      description: Formato estándar de error de Fegora. Se usa en toda respuesta 4xx.
      properties:
        codigo:
          type: string
          description: >-
            Código de error interno de Fegora (p. ej. `FEG_VALIDATION_ERROR`,
            `FEG_DTE_CREA_001`). Ver la tabla de códigos de error en la guía de
            introducción.
          examples:
            - FEG_VALIDATION_ERROR
        mensaje:
          type: string
          description: Mensaje descriptivo del error, en español.
        masInformacion:
          type: string
          format: uri
          description: Enlace a documentación adicional sobre el error.
          examples:
            - https://developer.fegora.com
        severidad:
          type: integer
          enum:
            - 0
            - 1
            - 2
            - 3
          description: 0 = Sugerencia, 1 = Advertencia, 2 = Error, 3 = Fatal.
      required:
        - codigo
        - mensaje
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````