Skip to main content
PUT
/
billable_metrics
/
{code}
LAGO_URL="https://api.getlago.com"
API_KEY="__YOUR_API_KEY__"

curl --location --request PUT "$LAGO_URL/api/v1/billable_metrics/:code" \
  --header "Authorization: Bearer $API_KEY" \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "billable_metric": {
      "name": "Storage",
      "code": "storage",
      "description": "GB of storage used in my application",
      "aggregation_type": "sum_agg",
      "recurring": false,
      "field_name": "gb",
      "weighted_interval": "seconds",
      "filters": [
        {
          "key": "provider",
          "values": ["us-east-1", "us-east-2", "eu-west-1"]
        }
      ]
    }
  }'
from lago_python_client.client import Client
from lago_python_client.exceptions import LagoApiError
from lago_python_client.models import BillableMetricFilter, BillableMetric

client = Client(api_key='__YOUR_API_KEY__')

filter = BillableMetricFilter(
  key='region',
  values=['us-east-1', 'us-east-2', 'eu-west-1']
)

billable_metric = BillableMetric(
  name='Storage',
  code='storage',
  description='GB of storage used in my application',
  aggregation_type='sum_agg',
  recurring=false,
  field_name='gb',
  weighted_interval= 'seconds',
  filters=[filter]
)

try:
    client.billable_metrics.update(billable_metric, 'code')
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.billable_metrics.update({
  name: 'Storage',
  code: 'storage',
  description: 'GB of storage used in my application',
  aggregation_type: 'sum_agg',
  recurring: false,
  field_name: 'gb',
  weighted_interval: 'seconds',
  filters: [
    {
      key: 'region',
      values: %w[us-east-1 us-east-2 eu-west-1]
    }
  ]
}, 'code')
const newBillableMetricObject = {
  name: "Storage",
  code: "storage",
  recurring: false,
  aggregation_type: "sum_agg",
  weighted_interval: "seconds",
  field_name: "gb",
};

await client.billableMetrics.updateBillableMetric("code", {
  billableMetric: newBillableMetricObject,
});
import "fmt"
import "github.com/getlago/lago-go-client"

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

  bmInput := &lago.BillableMetricInput{
    Name:            "Storage",
    Code:            "storage",
    Description:     "GB of storage used in my application"
    AggregationType: lago.SumAggregation,
    FieldName:       "gb",
    Recurring:       false,
    WeightedInterval: "seconds",
    Filters: [1]map[string]interface{}{
        "key": "region",
        "values": [3]string{"us-east-1", "us-east-2", "eu-west-1"},
    },
  }

  billableMetric, err := lagoClient.BillableMetric().Update(bmInput)
  if err != nil {
    // Error is *lago.Error
    panic(err)
  }

  // billableMetric is *lago.BillableMetric
  fmt.Println(billableMetric)
}
{
  "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"
        ]
      }
    ]
  }
}
{
"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": {}
}
LAGO_URL="https://api.getlago.com"
API_KEY="__YOUR_API_KEY__"

curl --location --request PUT "$LAGO_URL/api/v1/billable_metrics/:code" \
  --header "Authorization: Bearer $API_KEY" \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "billable_metric": {
      "name": "Storage",
      "code": "storage",
      "description": "GB of storage used in my application",
      "aggregation_type": "sum_agg",
      "recurring": false,
      "field_name": "gb",
      "weighted_interval": "seconds",
      "filters": [
        {
          "key": "provider",
          "values": ["us-east-1", "us-east-2", "eu-west-1"]
        }
      ]
    }
  }'
from lago_python_client.client import Client
from lago_python_client.exceptions import LagoApiError
from lago_python_client.models import BillableMetricFilter, BillableMetric

client = Client(api_key='__YOUR_API_KEY__')

filter = BillableMetricFilter(
  key='region',
  values=['us-east-1', 'us-east-2', 'eu-west-1']
)

billable_metric = BillableMetric(
  name='Storage',
  code='storage',
  description='GB of storage used in my application',
  aggregation_type='sum_agg',
  recurring=false,
  field_name='gb',
  weighted_interval= 'seconds',
  filters=[filter]
)

try:
    client.billable_metrics.update(billable_metric, 'code')
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.billable_metrics.update({
  name: 'Storage',
  code: 'storage',
  description: 'GB of storage used in my application',
  aggregation_type: 'sum_agg',
  recurring: false,
  field_name: 'gb',
  weighted_interval: 'seconds',
  filters: [
    {
      key: 'region',
      values: %w[us-east-1 us-east-2 eu-west-1]
    }
  ]
}, 'code')
const newBillableMetricObject = {
  name: "Storage",
  code: "storage",
  recurring: false,
  aggregation_type: "sum_agg",
  weighted_interval: "seconds",
  field_name: "gb",
};

await client.billableMetrics.updateBillableMetric("code", {
  billableMetric: newBillableMetricObject,
});
import "fmt"
import "github.com/getlago/lago-go-client"

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

  bmInput := &lago.BillableMetricInput{
    Name:            "Storage",
    Code:            "storage",
    Description:     "GB of storage used in my application"
    AggregationType: lago.SumAggregation,
    FieldName:       "gb",
    Recurring:       false,
    WeightedInterval: "seconds",
    Filters: [1]map[string]interface{}{
        "key": "region",
        "values": [3]string{"us-east-1", "us-east-2", "eu-west-1"},
    },
  }

  billableMetric, err := lagoClient.BillableMetric().Update(bmInput)
  if err != nil {
    // Error is *lago.Error
    panic(err)
  }

  // billableMetric is *lago.BillableMetric
  fmt.Println(billableMetric)
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

code
string
required

Code of the existing billable metric.

Example:

"storage"

Body

application/json

Billable metric payload

billable_metric
object
required

Response

Billable metric updated

billable_metric
object
required