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

# Listar precios de catálogo

> El catálogo de precios públicos: todas las tarifas que cobra la plataforma, vigentes ahora (o en `at`). Este punto final es público y no requiere credenciales: las tarifas son idénticas para cada persona que llama, sin descuentos específicos de cuenta ni términos de uso comprometido, por lo que no hay nada que proteger en el ámbito del inquilino. Existe para que el sitio de marketing y la consola lean los precios de la facturación en lugar de reflejarlos en el origen, donde se desvían cada vez que se reinicia una migración.

Debido a que no requiere credenciales, las solicitudes están limitadas por la velocidad por IP del cliente. Las respuestas llevan un corto `Cache-Control` público — el catálogo cambia en una migración, no en una solicitud.


<Info>
  Requiere **sin acción de IAM**. El acceso se decide por las propias reglas del punto final en lugar de por una política. Consulte la descripción anterior.
</Info>


## OpenAPI

````yaml /es/api-reference/specs/billing.yaml get /v1/prices
openapi: 3.0.3
info:
  title: Basaltic Billing API
  version: 1.0.0
  description: >
    Precios, uso medido, facturas, pagos y créditos para la organización. El
    catálogo de precios (`/v1/prices`) es público; otras operaciones requieren
    concesiones de políticas de organización para acciones de facturación.


    Incluye perfiles de facturación editables y estado de factura fiscal /
    descargas. La liquidación de una factura y la gestión de los métodos de pago
    se realizan en la consola.
  contact:
    name: Basaltic Support
    email: ping@basaltic.sh
  license:
    name: Proprietary
    url: https://basaltic.sh/terms
servers:
  - url: https://billing.basaltic.sh
    description: Endpoint de API global
security:
  - BearerAuth: []
paths:
  /v1/prices:
    get:
      tags:
        - Billing
      summary: Listar precios de catálogo
      description: >
        El catálogo de precios públicos: todas las tarifas que cobra la
        plataforma, vigentes ahora (o en `at`). Este punto final es público y no
        requiere credenciales: las tarifas son idénticas para cada persona que
        llama, sin descuentos específicos de cuenta ni términos de uso
        comprometido, por lo que no hay nada que proteger en el ámbito del
        inquilino. Existe para que el sitio de marketing y la consola lean los
        precios de la facturación en lugar de reflejarlos en el origen, donde se
        desvían cada vez que se reinicia una migración.


        Debido a que no requiere credenciales, las solicitudes están limitadas
        por la velocidad por IP del cliente. Las respuestas llevan un corto
        `Cache-Control` público — el catálogo cambia en una migración, no en una
        solicitud.
      operationId: listPrices
      parameters:
        - name: service
          in: query
          description: Solo SKU facturados por este servicio.
          schema:
            type: string
            example: compute
        - name: resource_type
          in: query
          schema:
            type: string
            example: instance
        - name: sku
          in: query
          description: Exactamente un SKU.
          schema:
            type: string
            example: compute.instance.s1.medium
        - name: family
          in: query
          description: >
            Solo los SKU cuyo `metadata.family` coincida: cómo los productos
            administrados se separan de los tipos de instancia de cómputo
            generales.
          schema:
            type: string
            example: loadbalancer
        - name: at
          in: query
          description: >
            Lea el catálogo a partir de este instante en lugar de ahora, para
            mostrar un precio histórico. RFC3339.
          schema:
            type: string
            format: date-time
            example: '2026-01-01T00:00:00Z'
      responses:
        '200':
          description: El catálogo efectivo en `as_of`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PriceListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security: []
components:
  schemas:
    PriceListResponse:
      type: object
      required:
        - prices
        - as_of
      properties:
        prices:
          type: array
          items:
            $ref: '#/components/schemas/Price'
        as_of:
          type: string
          format: date-time
          description: >
            El instante en que se leyó el catálogo — el `at` que se solicitó, o
            el reloj del servidor cuando no se solicitó.
    Price:
      type: object
      description: >
        Una fila efectiva del catálogo de precios públicos: la misma fila
        `billing.billing_prices` contra la que se cobra la calificación. Money
        es una cadena decimal en lugar de un número JSON, por lo que la tarifa
        cotada es exactamente la que se facturará.
      required:
        - sku
        - service
        - resource_type
        - name
        - unit
        - unit_price
        - currency
        - metadata
      properties:
        sku:
          type: string
          description: >
            Clave de catálogo estable, `{service}.{resource_type}.{variant}`.
            Esta es la identidad pública de un precio — el id de fila no se
            publica.
          example: compute.instance.s1.medium
        service:
          type: string
          description: Qué servicio factura este SKU.
          example: compute
        resource_type:
          type: string
          example: instance
        name:
          type: string
          description: >-
            Nombre de visualización. Para los SKU de computación, este es el
            nombre de la variante.
          example: s1.medium
        description:
          type: string
          nullable: true
          example: 2 vCPU, 4 GB RAM
        unit:
          type: string
          description: Lo que una unidad de `unit_price` compra.
          example: hour
        unit_price:
          type: string
          description: Precio por una `unit`, como una cadena decimal exacta.
          example: '0.085'
        currency:
          type: string
          example: BRL
        metadata:
          type: object
          additionalProperties: true
          description: >
            Datos adicionales sobre el SKU: `class`, `family`, `vcpus`,
            `memory_gb`, `storage_type`, … `family` separa los productos
            administrados (réplicas de balanceador de carga, nodos de clúster de
            base de datos) de los tipos de instancia de cómputo generales con
            los que comparten un `resource_type`.
          example:
            class: shared
            vcpus: 2
            memory_gb: 4
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - request_id
          properties:
            code:
              type: string
              description: Código de error que identifica el tipo de error
              example: INVALID_INPUT
            message:
              type: string
              description: Mensaje de error legible por el ser humano
              example: Invalid request parameters
            params:
              type: object
              additionalProperties: true
              description: >-
                Valores no sensibles opcionales para la interpolación de errores
                localizados, codificados por código de error. Nunca presente por
                errores del servidor.
              example:
                instances: 2
                pools: 0
            request_id:
              type: string
              format: uuid
              description: Solicitar ID para depuración
              example: 550e8400-e29b-41d4-a716-446655440000
  responses:
    BadRequest:
      description: Parámetros de solicitud no válidos
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INVALID_INPUT
              message: Invalid request parameters
              request_id: 550e8400-e29b-41d4-a716-446655440000
    TooManyRequests:
      description: >
        Límite de velocidad excedido. El presupuesto es una ventana fija contada
        por punto final y por llamador (el principal autenticado cuando la
        solicitud lleva credenciales, la IP del cliente de lo contrario), de
        modo que un punto final con restricción nunca gasta el presupuesto de
        otro, y un inquilino nunca gasta el de otro.


        Espere `Retry-After` segundos, luego vuelva a intentarlo. Los
        encabezados `X-RateLimit-*` también se basan en las respuestas exitosas
        de un punto final con límite de velocidad, por lo que un cliente puede
        acelerarse en lugar de descubrir el límite al alcanzarlo.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: RATE_LIMITED
              message: Too many requests, please try again later
              request_id: 550e8400-e29b-41d4-a716-446655440000
      headers:
        Retry-After:
          description: Segundos para esperar antes de volver a intentarlo. Nunca a cero.
          required: true
          schema:
            type: integer
            minimum: 1
          example: 42
        X-RateLimit-Limit:
          description: Solicitudes permitidas por ventana en este punto final.
          required: true
          schema:
            type: integer
            minimum: 1
          example: 5
        X-RateLimit-Remaining:
          description: Solicitudes que quedan en la ventana actual. Siempre 0 en un 429.
          required: true
          schema:
            type: integer
            minimum: 0
          example: 0
        X-RateLimit-Reset:
          description: >-
            Segundos hasta que la ventana se reinicia: una duración, no una
            marca de tiempo, por lo que no necesita ningún acuerdo de reloj
            entre el cliente y el servidor.
          required: true
          schema:
            type: integer
            minimum: 1
          example: 42
    InternalServerError:
      description: Error interno del servidor
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INTERNAL_ERROR
              message: An internal error occurred
              request_id: 550e8400-e29b-41d4-a716-446655440000
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >+
        Un token bearer de OAuth 2.0, enviado como `Authorization: Bearer
        <token>`. Esta es la forma recomendada de autenticación.


        Obtén el token intercambiando el par de claves de acceso de una cuenta
        de servicio en `POST /v1/oauth/token` con
        `grant_type=client_credentials`. Es el flujo estándar de credenciales de
        cliente; las bibliotecas compatibles con OAuth pueden obtener y renovar
        el token por ti.


        ```

        curl -s -u "$KEY_ID:$SECRET" -d grant_type=client_credentials \
          https://iam.basaltic.sh/v1/oauth/token
        ```


        Los tokens duran una hora por defecto. El mismo par de claves de acceso
        también sirve como credencial AWS SigV4 para el endpoint de objetos
        compatible con S3, que solo acepta ese método de autenticación.


````

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