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

# List all versions of a quote

> This endpoint is used to list all the versions of a specific quote, from the most recent to the oldest.
The `content` and `billing_items` of each version are omitted; retrieve a version to get them.
This is a premium feature.

<RequestExample>
  ```bash cURL theme={"dark"}
  LAGO_URL="https://api.getlago.com"
  QUOTE_ID="__QUOTE_ID__"
  API_KEY="__YOUR_API_KEY__"

  curl --location --request GET "$LAGO_URL/api/v1/quotes/$QUOTE_ID/versions?per_page=20&page=1" \
    --header "Authorization: Bearer $API_KEY"
  ```

  ```python Python theme={"dark"}
  from lago_python_client.client import Client
  from lago_python_client.exceptions import LagoApiError

  client = Client(api_key='__YOUR_API_KEY__')

  try:
      client.quotes.versions('__QUOTE_ID__', {'per_page': 20, 'page': 1})
  except LagoApiError as e:
      repair_broken_state(e)  # do something on error or raise your own exception
  ```

  ```ruby Ruby theme={"dark"}
  require 'lago-ruby-client'

  client = Lago::Api::Client.new(api_key: '__YOUR_API_KEY__')

  client.quotes.versions('__QUOTE_ID__', { per_page: 20, page: 1 })
  ```

  ```js Javascript theme={"dark"}
  await client.quotes.findAllQuoteVersions("__QUOTE_ID__", { per_page: 20, page: 1 });
  ```

  ```go Go theme={"dark"}
  import (
  	"context"
  	"fmt"

  	lago "github.com/getlago/lago-go-client"
  )

  func main() {
  	lagoClient := lago.New().SetApiKey("__YOUR_API_KEY__")
  	ctx := context.Background()

  	page, perPage := 1, 20
  	quoteVersionResult, err := lagoClient.Quote().GetVersionList(ctx, "__QUOTE_ID__", &lago.QuoteVersionListInput{
  		Page:    &page,
  		PerPage: &perPage,
  	})
  	if err != nil {
  		// Error is *lago.Error
  		panic(err)
  	}

  	// quoteVersionResult is *lago.QuoteVersionResult
  	fmt.Println(quoteVersionResult)
  }
  ```
</RequestExample>


## OpenAPI

````yaml GET /quotes/{lago_id}/versions
openapi: 3.1.0
info:
  title: Lago API documentation
  description: >-
    Lago API allows your application to push customer information and metrics
    (events) from your application to the billing application.
  version: 1.52.0
  license:
    name: AGPLv3
    url: https://github.com/getlago/lago-openapi/blob/main/LICENSE
  contact:
    email: tech@getlago.com
servers:
  - url: https://api.getlago.com/api/v1
    description: US Lago cluster
  - url: https://api.eu.getlago.com/api/v1
    description: EU Lago cluster
security:
  - bearerAuth: []
tags:
  - name: activity_logs
    description: Everything about Activity logs
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/audit-logs/activity-logs-object
  - name: analytics
    description: Everything about Analytics
  - name: api_logs
    description: Everything about API logs
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/audit-logs/api-logs-object
  - name: billable_metrics
    description: Everything about Billable metric collection
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/billable-metrics/object
  - name: features
    description: Everything about Feature collection
    externalDocs:
      description: Find out more
      url: >-
        https://getlago.com/docs/api-reference/entitlements/features/feature-object
  - name: entitlements
    description: Everything about Entitlement collection
    externalDocs:
      description: Find out more
      url: >-
        https://getlago.com/docs/api-reference/entitlements/plan-entitlements/plan-entitlement-object
  - name: billing_entities
    description: Everything about Billing Entities
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/billing-entities/object
  - name: customers
    description: Everything about Customer collection
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/customers/object
  - name: plans
    description: Everything about Plan collection
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/plans/object
  - name: subscriptions
    description: Everything about Subscription collection
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/subscriptions/subscription-object
  - name: events
    description: Everything about Event collection
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/events/event-object
  - name: organizations
    description: Everything about Organization collection
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/organizations/organization-object
  - name: taxes
    description: Everything about Tax collection
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/taxes/tax-object
  - name: coupons
    description: Everything about Coupon collection
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/coupons/coupon-object
  - name: add_ons
    description: Everything about Add-on collection
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/add-ons/add-on-object
  - name: fees
    description: Everything about Fees
    externalDocs:
      description: Find out more
      url: >-
        https://getlago.com/docs/api-reference/invoices/invoice-object#fee-object
  - name: invoices
    description: Everything about Invoice collection
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/invoices/invoice-object
  - name: wallets
    description: Everything about Wallet collection
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/wallets/wallet-object
  - name: credit_notes
    description: Everything about Credit notes collection
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/credit-notes/credit-note-object
  - name: webhooks
    description: Everything about Webhooks
    externalDocs:
      description: Find out more
      url: >-
        https://getlago.com/docs/api-reference/webhooks/format---signature#1-retrieve-the-public-key
  - name: webhook_endpoints
    description: Everything about Webhook Endpoints
    externalDocs:
      description: Find out more
      url: >-
        https://getlago.com/docs/api-reference/webhook-endpoints/webhook-endpoint-object
  - name: payment_receipts
    description: Everything about Payment receipts
    externalDocs:
      description: Find out more
      url: >-
        https://getlago.com/docs/api-reference/payment-receipts/payment-receipt-object
  - name: payment_requests
    description: Everything about PaymentRequests
    externalDocs:
      description: Find out more
      url: >-
        https://getlago.com/docs/api-reference/payment-requests/payment-request-object
  - name: payments
    description: Everything about Payments
    externalDocs:
      description: Find out more
      url: https://getlago.com/docs/api-reference/payments/payment-object
  - name: payment_methods
    description: Everything about Payment Methods
    externalDocs:
      description: Find out more
      url: >-
        https://getlago.com/docs/api-reference/payment-methods/payment-method-object
  - name: quotes
    description: Everything about Quote collection
  - name: order_forms
    description: Everything about Order form collection
  - name: orders
    description: Everything about Order collection
externalDocs:
  description: Lago Github
  url: https://github.com/getlago
paths:
  /quotes/{lago_id}/versions:
    parameters:
      - $ref: '#/components/parameters/lago_quote_id'
    get:
      tags:
        - quotes
      summary: List all versions of a quote
      description: >-
        This endpoint is used to list all the versions of a specific quote, from
        the most recent to the oldest.

        The `content` and `billing_items` of each version are omitted; retrieve
        a version to get them.

        This is a premium feature.
      operationId: findAllQuoteVersions
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/per_page'
      responses:
        '200':
          description: Quote versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteVersionsPaginated'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    lago_quote_id:
      name: lago_id
      in: path
      description: >-
        Unique identifier assigned to the quote within the Lago application.
        This ID is exclusively created by Lago and serves as a unique identifier
        for the quote's record within the Lago system.
      required: true
      schema:
        type: string
        format: uuid
        example: 1a901a90-1a90-1a90-1a90-1a901a901a90
    page:
      name: page
      in: query
      description: Page number.
      required: false
      explode: true
      schema:
        type: integer
        example: 1
    per_page:
      name: per_page
      in: query
      description: Number of records per page.
      required: false
      explode: true
      schema:
        type: integer
        example: 20
  schemas:
    QuoteVersionsPaginated:
      type: object
      required:
        - quote_versions
        - meta
      properties:
        quote_versions:
          type: array
          items:
            $ref: '#/components/schemas/QuoteVersionObject'
        meta:
          $ref: '#/components/schemas/PaginationMeta'
    QuoteVersionObject:
      type: object
      required:
        - lago_id
        - lago_quote_id
        - lago_organization_id
        - version
        - status
        - currency
        - billing_entity_code
        - void_reason
        - approved_at
        - voided_at
        - created_at
        - updated_at
      properties:
        lago_id:
          type: string
          format: uuid
          description: Unique identifier of the quote version, created by Lago.
          example: 1a901a90-1a90-1a90-1a90-1a901a901a90
        lago_quote_id:
          type: string
          format: uuid
          description: >-
            Unique identifier of the quote the version belongs to, created by
            Lago.
          example: 1a901a90-1a90-1a90-1a90-1a901a901a90
        lago_organization_id:
          type: string
          format: uuid
          description: Unique identifier of the organization, created by Lago.
          example: 1a901a90-1a90-1a90-1a90-1a901a901a90
        version:
          type: integer
          description: >-
            The number of the version within the quote. It starts at 1 and
            increases by 1 for every new version created by cloning.
          example: 1
        status:
          $ref: '#/components/schemas/QuoteVersionStatusEnum'
        currency:
          $ref: '#/components/schemas/CurrencyOrNull'
          description: The currency the version is quoted in.
        billing_entity_code:
          type:
            - string
            - 'null'
          description: >-
            Unique code identifying the billing entity that issues the deal. It
            is resolved rather than stored: the version's own entity when it
            names one, then the entity of the subscription being amended for a
            `subscription_amendment` quote, then the customer's own. It is
            `null` when none of them resolves. An amendment cannot name an
            entity itself, since the subscription it restates is already bound
            to one, and naming one on an amendment is rejected.
          example: acme_corp
        void_reason:
          $ref: '#/components/schemas/QuoteVersionVoidReasonEnum'
        approved_at:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            The date and time in UTC (ISO 8601) when the version was approved.
            It is `null` unless the `status` is `approved`.
          example: '2026-04-29T08:59:51Z'
        voided_at:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            The date and time in UTC (ISO 8601) when the version was voided. It
            is `null` unless the `status` is `voided`.
          example: '2026-04-29T08:59:51Z'
        created_at:
          type: string
          format: date-time
          description: The date and time in UTC (ISO 8601) when the version was created.
          example: '2026-04-29T08:59:51Z'
        updated_at:
          type: string
          format: date-time
          description: >-
            The date and time in UTC (ISO 8601) when the version was last
            updated.
          example: '2026-04-29T08:59:51Z'
    PaginationMeta:
      type: object
      required:
        - current_page
        - total_pages
        - total_count
      properties:
        current_page:
          type: integer
          description: Current page.
          example: 2
        next_page:
          type:
            - integer
            - 'null'
          description: Next page.
          example: 3
        prev_page:
          type:
            - integer
            - 'null'
          description: Previous page.
          example: 1
        total_pages:
          type: integer
          description: Total number of pages.
          example: 4
        total_count:
          type: integer
          description: Total number of records.
          example: 70
    ApiErrorUnauthorized:
      type: object
      required:
        - status
        - error
      properties:
        status:
          type: integer
          format: int32
          example: 401
        error:
          type: string
          example: Unauthorized
    ApiErrorForbidden:
      type: object
      required:
        - status
        - error
        - code
      properties:
        status:
          type: integer
          format: int32
          example: 403
        error:
          type: string
          example: Forbidden
        code:
          type: string
          example: feature_unavailable
    ApiErrorNotFound:
      type: object
      required:
        - status
        - error
        - code
      properties:
        status:
          type: integer
          format: int32
          example: 404
        error:
          type: string
          example: Not Found
        code:
          type: string
          example: object_not_found
    QuoteVersionStatusEnum:
      type: string
      description: >
        The status of the quote version. It can be any of the following values:
          - `draft`: the version is still editable.
          - `approved`: the version has been approved and an order form has been generated from it.
          - `voided`: the version is no longer actionable.

        A quote has at most one version in `draft` or `approved` status at any
        time; all the other versions are `voided`.
      enum:
        - draft
        - approved
        - voided
      example: draft
    CurrencyOrNull:
      type:
        - string
        - 'null'
      example: USD
      enum:
        - null
        - AED
        - AFN
        - ALL
        - AMD
        - ANG
        - AOA
        - ARS
        - AUD
        - AWG
        - AZN
        - BAM
        - BBD
        - BDT
        - BGN
        - BIF
        - BMD
        - BND
        - BOB
        - BRL
        - BSD
        - BWP
        - BYN
        - BZD
        - CAD
        - CDF
        - CHF
        - CLF
        - CLP
        - CNY
        - COP
        - CRC
        - CVE
        - CZK
        - DJF
        - DKK
        - DOP
        - DZD
        - EGP
        - ETB
        - EUR
        - FJD
        - FKP
        - GBP
        - GEL
        - GIP
        - GMD
        - GNF
        - GTQ
        - GYD
        - HKD
        - HNL
        - HRK
        - HTG
        - HUF
        - IDR
        - ILS
        - INR
        - ISK
        - JMD
        - JPY
        - KES
        - KGS
        - KHR
        - KMF
        - KRW
        - KYD
        - KZT
        - LAK
        - LBP
        - LKR
        - LRD
        - LSL
        - MAD
        - MDL
        - MGA
        - MKD
        - MMK
        - MNT
        - MOP
        - MRO
        - MUR
        - MVR
        - MWK
        - MXN
        - MYR
        - MZN
        - NAD
        - NGN
        - NIO
        - NOK
        - NPR
        - NZD
        - PAB
        - PEN
        - PGK
        - PHP
        - PKR
        - PLN
        - PYG
        - QAR
        - RON
        - RSD
        - RUB
        - RWF
        - SAR
        - SBD
        - SCR
        - SEK
        - SGD
        - SHP
        - SLL
        - SOS
        - SRD
        - STD
        - SZL
        - THB
        - TJS
        - TOP
        - TRY
        - TTD
        - TWD
        - TZS
        - UAH
        - UGX
        - USD
        - UYU
        - UZS
        - VND
        - VUV
        - WST
        - XAF
        - XCD
        - XOF
        - XPF
        - YER
        - ZAR
        - ZMW
    QuoteVersionVoidReasonEnum:
      type:
        - string
        - 'null'
      description: >
        The reason why the quote version was voided. It is `null` unless the
        `status` is `voided`. It can be any of the following values:
          - `manual`: voided explicitly, through the API or the Lago user interface.
          - `superseded`: voided because the version was cloned into a new draft.
          - `cascade_of_expired`: voided because the order form generated from the version expired.
          - `cascade_of_voided`: voided because the order form generated from the version was voided.
      enum:
        - null
        - manual
        - superseded
        - cascade_of_expired
        - cascade_of_voided
      example: manual
  responses:
    Unauthorized:
      description: Unauthorized error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorUnauthorized'
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorForbidden'
    NotFound:
      description: Not Found error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorNotFound'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````