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"
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
require 'lago-ruby-client'
client = Lago::Api::Client.new(api_key: '__YOUR_API_KEY__')
client.quotes.versions('__QUOTE_ID__', { per_page: 20, page: 1 })
await client.quotes.findAllQuoteVersions("__QUOTE_ID__", { per_page: 20, page: 1 });
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)
}
{
"quote_versions": [
{
"lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
"lago_quote_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
"lago_organization_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
"version": 1,
"status": "draft",
"currency": "USD",
"billing_entity_code": "acme_corp",
"void_reason": "manual",
"approved_at": "2026-04-29T08:59:51Z",
"voided_at": "2026-04-29T08:59:51Z",
"created_at": "2026-04-29T08:59:51Z",
"updated_at": "2026-04-29T08:59:51Z"
}
],
"meta": {
"current_page": 2,
"total_pages": 4,
"total_count": 70,
"next_page": 3,
"prev_page": 1
}
}{
"status": 401,
"error": "Unauthorized"
}{
"status": 403,
"error": "Forbidden",
"code": "feature_unavailable"
}{
"status": 404,
"error": "Not Found",
"code": "object_not_found"
}Quotes
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.
GET
/
quotes
/
{lago_id}
/
versions
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"
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
require 'lago-ruby-client'
client = Lago::Api::Client.new(api_key: '__YOUR_API_KEY__')
client.quotes.versions('__QUOTE_ID__', { per_page: 20, page: 1 })
await client.quotes.findAllQuoteVersions("__QUOTE_ID__", { per_page: 20, page: 1 });
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)
}
{
"quote_versions": [
{
"lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
"lago_quote_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
"lago_organization_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
"version": 1,
"status": "draft",
"currency": "USD",
"billing_entity_code": "acme_corp",
"void_reason": "manual",
"approved_at": "2026-04-29T08:59:51Z",
"voided_at": "2026-04-29T08:59:51Z",
"created_at": "2026-04-29T08:59:51Z",
"updated_at": "2026-04-29T08:59:51Z"
}
],
"meta": {
"current_page": 2,
"total_pages": 4,
"total_count": 70,
"next_page": 3,
"prev_page": 1
}
}{
"status": 401,
"error": "Unauthorized"
}{
"status": 403,
"error": "Forbidden",
"code": "feature_unavailable"
}{
"status": 404,
"error": "Not Found",
"code": "object_not_found"
}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"
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
require 'lago-ruby-client'
client = Lago::Api::Client.new(api_key: '__YOUR_API_KEY__')
client.quotes.versions('__QUOTE_ID__', { per_page: 20, page: 1 })
await client.quotes.findAllQuoteVersions("__QUOTE_ID__", { per_page: 20, page: 1 });
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)
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
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.
Example:
"1a901a90-1a90-1a90-1a90-1a901a901a90"
Query Parameters
Page number.
Example:
1
Number of records per page.
Example:
20
⌘I