curl --request GET \
--url https://api.getlago.com/api/v1/api_logs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getlago.com/api/v1/api_logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getlago.com/api/v1/api_logs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.getlago.com/api/v1/api_logs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.getlago.com/api/v1/api_logs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.getlago.com/api/v1/api_logs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getlago.com/api/v1/api_logs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"api_logs": [
{
"api_version": "v1",
"client": "Lago Ruby v1.26.0",
"http_method": "post",
"http_status": 200,
"logged_at": "2025-03-31T12:31:44Z",
"request_body": {
"billable_metric": "{\"name\":\"Storage\",\"code\":\"storage\"}"
},
"request_origin": "https://api.getlago.com",
"request_path": "/api/v1/billable_metrics",
"created_at": "2022-04-29T08:59:51Z",
"request_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
"request_response": {
"billable_metric": "{\"lago_id\":\"b9155544-e261-4e92-b54e-f65d7609294c\"}"
}
}
],
"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"
}List all API logs
This endpoint retrieves all existing API logs, which represent the requests made to Lago’s API. Logs older than the retention period of your organization are left out. The retention period is 30 days unless another one was set for your organization.
curl --request GET \
--url https://api.getlago.com/api/v1/api_logs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getlago.com/api/v1/api_logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getlago.com/api/v1/api_logs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.getlago.com/api/v1/api_logs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.getlago.com/api/v1/api_logs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.getlago.com/api/v1/api_logs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getlago.com/api/v1/api_logs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"api_logs": [
{
"api_version": "v1",
"client": "Lago Ruby v1.26.0",
"http_method": "post",
"http_status": 200,
"logged_at": "2025-03-31T12:31:44Z",
"request_body": {
"billable_metric": "{\"name\":\"Storage\",\"code\":\"storage\"}"
},
"request_origin": "https://api.getlago.com",
"request_path": "/api/v1/billable_metrics",
"created_at": "2022-04-29T08:59:51Z",
"request_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
"request_response": {
"billable_metric": "{\"lago_id\":\"b9155544-e261-4e92-b54e-f65d7609294c\"}"
}
}
],
"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"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Page number. Defaults to 1. A value that is not a positive integer, such as 0, returns the first page.
1
Number of records per page. Defaults to 100. The maximum is 200, unless another maximum is configured for your organization. A value above the maximum returns a 422 error with value_is_out_of_range on per_page. A value that is not a positive integer, such as 0, returns the default number of records.
20
Filter API logs logged at or after this date.
"2022-08-09"
Filter API logs logged at or before this date.
"2022-08-09"
Filter results by HTTP methods.
post, put, patch, delete ["post", "put"]
Filter results by HTTP status or by generic request status. When succeeded or failed is passed, the numeric values of the filter are ignored.
succeeded, failed ["failed", "succeeded", 404]
Filter results by API version.
"v1"
Filter results by the path of the request. A value containing * is matched as a wildcard, otherwise the path must match exactly.
[
"/api/v1/billable_metrics",
"*billable_metrics*"
]
Filter results by the client that issued the request, as reported by its user agent.
["Lago Ruby v1.26.0"]