Create subscription alert(s)
curl --request POST \
--url https://api.getlago.com/api/v1/subscriptions/{external_id}/alerts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"alert": {
"code": "storage_threshold_alert",
"thresholds": [
{
"value": 99,
"code": "warn",
"recurring": false
}
],
"alert_type": "billable_metric_current_usage_amount",
"name": "Storage Usage Alert",
"billable_metric_code": "storage_usage"
}
}
'import requests
url = "https://api.getlago.com/api/v1/subscriptions/{external_id}/alerts"
payload = { "alert": {
"code": "storage_threshold_alert",
"thresholds": [
{
"value": 99,
"code": "warn",
"recurring": False
}
],
"alert_type": "billable_metric_current_usage_amount",
"name": "Storage Usage Alert",
"billable_metric_code": "storage_usage"
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
alert: {
code: 'storage_threshold_alert',
thresholds: [{value: 99, code: 'warn', recurring: false}],
alert_type: 'billable_metric_current_usage_amount',
name: 'Storage Usage Alert',
billable_metric_code: 'storage_usage'
}
})
};
fetch('https://api.getlago.com/api/v1/subscriptions/{external_id}/alerts', 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/subscriptions/{external_id}/alerts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'alert' => [
'code' => 'storage_threshold_alert',
'thresholds' => [
[
'value' => 99,
'code' => 'warn',
'recurring' => false
]
],
'alert_type' => 'billable_metric_current_usage_amount',
'name' => 'Storage Usage Alert',
'billable_metric_code' => 'storage_usage'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.getlago.com/api/v1/subscriptions/{external_id}/alerts"
payload := strings.NewReader("{\n \"alert\": {\n \"code\": \"storage_threshold_alert\",\n \"thresholds\": [\n {\n \"value\": 99,\n \"code\": \"warn\",\n \"recurring\": false\n }\n ],\n \"alert_type\": \"billable_metric_current_usage_amount\",\n \"name\": \"Storage Usage Alert\",\n \"billable_metric_code\": \"storage_usage\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.getlago.com/api/v1/subscriptions/{external_id}/alerts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"alert\": {\n \"code\": \"storage_threshold_alert\",\n \"thresholds\": [\n {\n \"value\": 99,\n \"code\": \"warn\",\n \"recurring\": false\n }\n ],\n \"alert_type\": \"billable_metric_current_usage_amount\",\n \"name\": \"Storage Usage Alert\",\n \"billable_metric_code\": \"storage_usage\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getlago.com/api/v1/subscriptions/{external_id}/alerts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"alert\": {\n \"code\": \"storage_threshold_alert\",\n \"thresholds\": [\n {\n \"value\": 99,\n \"code\": \"warn\",\n \"recurring\": false\n }\n ],\n \"alert_type\": \"billable_metric_current_usage_amount\",\n \"name\": \"Storage Usage Alert\",\n \"billable_metric_code\": \"storage_usage\"\n }\n}"
response = http.request(request)
puts response.read_body{
"alert": {
"lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
"lago_organization_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
"external_subscription_id": "sub_1234567890",
"billable_metric": {
"lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
"name": "Storage",
"code": "storage",
"recurring": false,
"created_at": "2022-09-14T16:35:31Z",
"aggregation_type": "sum_agg",
"description": "GB of storage used in my application",
"rounding_function": "round",
"rounding_precision": 2,
"expression": "round((ended_at - started_at) * units)",
"field_name": "gb",
"weighted_interval": "seconds",
"filters": [
{
"key": "region",
"values": [
"us-east-1"
]
}
]
},
"alert_type": "billable_metric_current_usage_amount",
"code": "storage_threshold_alert",
"name": "Storage Usage Alert",
"previous_value": 1000,
"last_processed_at": "2025-05-19T10:04:21Z",
"thresholds": [
{
"code": "warn",
"recurring": false,
"value": "99.0"
}
],
"created_at": "2025-03-20T10:00:00Z",
"lago_wallet_id": null,
"wallet_code": null,
"direction": "increasing"
}
}{
"status": 400,
"error": "Bad request"
}{
"status": 401,
"error": "Unauthorized"
}{
"status": 404,
"error": "Not Found",
"code": "object_not_found"
}{
"status": 422,
"error": "Unprocessable entity",
"code": "validation_errors",
"error_details": {}
}Alerts
Create an alert
This endpoint allows you to create a new alert for a subscription.
POST
/
subscriptions
/
{external_id}
/
alerts
Create subscription alert(s)
curl --request POST \
--url https://api.getlago.com/api/v1/subscriptions/{external_id}/alerts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"alert": {
"code": "storage_threshold_alert",
"thresholds": [
{
"value": 99,
"code": "warn",
"recurring": false
}
],
"alert_type": "billable_metric_current_usage_amount",
"name": "Storage Usage Alert",
"billable_metric_code": "storage_usage"
}
}
'import requests
url = "https://api.getlago.com/api/v1/subscriptions/{external_id}/alerts"
payload = { "alert": {
"code": "storage_threshold_alert",
"thresholds": [
{
"value": 99,
"code": "warn",
"recurring": False
}
],
"alert_type": "billable_metric_current_usage_amount",
"name": "Storage Usage Alert",
"billable_metric_code": "storage_usage"
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
alert: {
code: 'storage_threshold_alert',
thresholds: [{value: 99, code: 'warn', recurring: false}],
alert_type: 'billable_metric_current_usage_amount',
name: 'Storage Usage Alert',
billable_metric_code: 'storage_usage'
}
})
};
fetch('https://api.getlago.com/api/v1/subscriptions/{external_id}/alerts', 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/subscriptions/{external_id}/alerts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'alert' => [
'code' => 'storage_threshold_alert',
'thresholds' => [
[
'value' => 99,
'code' => 'warn',
'recurring' => false
]
],
'alert_type' => 'billable_metric_current_usage_amount',
'name' => 'Storage Usage Alert',
'billable_metric_code' => 'storage_usage'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.getlago.com/api/v1/subscriptions/{external_id}/alerts"
payload := strings.NewReader("{\n \"alert\": {\n \"code\": \"storage_threshold_alert\",\n \"thresholds\": [\n {\n \"value\": 99,\n \"code\": \"warn\",\n \"recurring\": false\n }\n ],\n \"alert_type\": \"billable_metric_current_usage_amount\",\n \"name\": \"Storage Usage Alert\",\n \"billable_metric_code\": \"storage_usage\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.getlago.com/api/v1/subscriptions/{external_id}/alerts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"alert\": {\n \"code\": \"storage_threshold_alert\",\n \"thresholds\": [\n {\n \"value\": 99,\n \"code\": \"warn\",\n \"recurring\": false\n }\n ],\n \"alert_type\": \"billable_metric_current_usage_amount\",\n \"name\": \"Storage Usage Alert\",\n \"billable_metric_code\": \"storage_usage\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getlago.com/api/v1/subscriptions/{external_id}/alerts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"alert\": {\n \"code\": \"storage_threshold_alert\",\n \"thresholds\": [\n {\n \"value\": 99,\n \"code\": \"warn\",\n \"recurring\": false\n }\n ],\n \"alert_type\": \"billable_metric_current_usage_amount\",\n \"name\": \"Storage Usage Alert\",\n \"billable_metric_code\": \"storage_usage\"\n }\n}"
response = http.request(request)
puts response.read_body{
"alert": {
"lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
"lago_organization_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
"external_subscription_id": "sub_1234567890",
"billable_metric": {
"lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
"name": "Storage",
"code": "storage",
"recurring": false,
"created_at": "2022-09-14T16:35:31Z",
"aggregation_type": "sum_agg",
"description": "GB of storage used in my application",
"rounding_function": "round",
"rounding_precision": 2,
"expression": "round((ended_at - started_at) * units)",
"field_name": "gb",
"weighted_interval": "seconds",
"filters": [
{
"key": "region",
"values": [
"us-east-1"
]
}
]
},
"alert_type": "billable_metric_current_usage_amount",
"code": "storage_threshold_alert",
"name": "Storage Usage Alert",
"previous_value": 1000,
"last_processed_at": "2025-05-19T10:04:21Z",
"thresholds": [
{
"code": "warn",
"recurring": false,
"value": "99.0"
}
],
"created_at": "2025-03-20T10:00:00Z",
"lago_wallet_id": null,
"wallet_code": null,
"direction": "increasing"
}
}{
"status": 400,
"error": "Bad request"
}{
"status": 401,
"error": "Unauthorized"
}{
"status": 404,
"error": "Not Found",
"code": "object_not_found"
}{
"status": 422,
"error": "Unprocessable entity",
"code": "validation_errors",
"error_details": {}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
External ID of the existing subscription
Example:
"5eb02857-a71e-4ea2-bcf9-57d3a41bc6ba"
Query Parameters
Filter by subscription status. When provided, the subscription is looked up with this status instead of the default active status. Possible values are pending, active, terminated, or canceled.
Available options:
pending, active, terminated, canceled Example:
"active"
Body
application/json
Create one or more alerts for a subscription
- Option 1
- Option 2
Show child attributes
Show child attributes
Response
Subscription alert(s) created
- Option 1
- Option 2
Show child attributes
Show child attributes
⌘I