Skip to main content
POST
/
billable_metrics
LAGO_URL="https://api.getlago.com"
API_KEY="__YOUR_API_KEY__"

curl --location --request POST "$LAGO_URL/api/v1/billable_metrics" \
--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": "region",
        "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',
recurring=false,
description='GB of storage used in my application',
aggregation_type='sum_agg',
field_name='gb',
weighted_interval= 'seconds',
filters=[filter]
)
try:
    client.billable_metrics.create(billable_metric)
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.create({
  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]
    }
  ]
})
await client.billableMetrics.createBillableMetric({
  billable_metric: {
    name: "Storage",
    code: "storage",
    aggregation_type: "sum_agg",
    recurring: false,
    field_name: "gb",
    weighted_interval: "seconds",
    filters: [
      {
        key: "region",
        values: ["us-east-1", "us-east-2", "eu-west-1"],
      }
    ]
  },
});
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",
    WeightedInterval:"seconds",
    Recurring:       false,
    Filters: [1]map[string]interface{}{
        "key": "region",
        "values": [3]string{"us-east-1", "us-east-2", "eu-west-1"},
    },
  }

  billableMetric, err := lagoClient.BillableMetric().Create(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": 422,
  "error": "Unprocessable entity",
  "code": "validation_errors",
  "error_details": {}
}
LAGO_URL="https://api.getlago.com"
API_KEY="__YOUR_API_KEY__"

curl --location --request POST "$LAGO_URL/api/v1/billable_metrics" \
--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": "region",
        "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',
recurring=false,
description='GB of storage used in my application',
aggregation_type='sum_agg',
field_name='gb',
weighted_interval= 'seconds',
filters=[filter]
)
try:
    client.billable_metrics.create(billable_metric)
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.create({
  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]
    }
  ]
})
await client.billableMetrics.createBillableMetric({
  billable_metric: {
    name: "Storage",
    code: "storage",
    aggregation_type: "sum_agg",
    recurring: false,
    field_name: "gb",
    weighted_interval: "seconds",
    filters: [
      {
        key: "region",
        values: ["us-east-1", "us-east-2", "eu-west-1"],
      }
    ]
  },
});
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",
    WeightedInterval:"seconds",
    Recurring:       false,
    Filters: [1]map[string]interface{}{
        "key": "region",
        "values": [3]string{"us-east-1", "us-east-2", "eu-west-1"},
    },
  }

  billableMetric, err := lagoClient.BillableMetric().Create(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.

Body

application/json

Billable metric payload

billable_metric
object
required

Response

Billable metric created

billable_metric
object
required