Skip to main content
POST
/
subscriptions
/
{external_id}
/
charges
/
{charge_code}
/
filters
Create a charge filter
curl --request POST \
  --url https://api.getlago.com/api/v1/subscriptions/{external_id}/charges/{charge_code}/filters \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "filter": {
    "properties": {
      "grouped_by": [
        "agent_name"
      ],
      "pricing_group_keys": [
        "agent_name"
      ],
      "graduated_ranges": [
        {
          "from_value": 0,
          "to_value": 10,
          "flat_amount": "10",
          "per_unit_amount": "0.5"
        }
      ],
      "graduated_percentage_ranges": [
        {
          "from_value": 0,
          "to_value": 10,
          "rate": "1",
          "flat_amount": "10"
        }
      ],
      "amount": "30",
      "free_units": 100,
      "package_size": 1000,
      "rate": "1",
      "fixed_amount": "0.5",
      "free_units_per_events": 5,
      "free_units_per_total_aggregation": "500",
      "per_transaction_max_amount": "3.75",
      "per_transaction_min_amount": "1.75",
      "volume_ranges": [
        {
          "from_value": 0,
          "to_value": 10,
          "flat_amount": "10",
          "per_unit_amount": "0.5"
        }
      ]
    },
    "values": {
      "region": [
        "us-east-1"
      ]
    },
    "cascade_updates": true,
    "invoice_display_name": "AWS"
  }
}
'
import requests

url = "https://api.getlago.com/api/v1/subscriptions/{external_id}/charges/{charge_code}/filters"

payload = { "filter": {
"properties": {
"grouped_by": ["agent_name"],
"pricing_group_keys": ["agent_name"],
"graduated_ranges": [
{
"from_value": 0,
"to_value": 10,
"flat_amount": "10",
"per_unit_amount": "0.5"
}
],
"graduated_percentage_ranges": [
{
"from_value": 0,
"to_value": 10,
"rate": "1",
"flat_amount": "10"
}
],
"amount": "30",
"free_units": 100,
"package_size": 1000,
"rate": "1",
"fixed_amount": "0.5",
"free_units_per_events": 5,
"free_units_per_total_aggregation": "500",
"per_transaction_max_amount": "3.75",
"per_transaction_min_amount": "1.75",
"volume_ranges": [
{
"from_value": 0,
"to_value": 10,
"flat_amount": "10",
"per_unit_amount": "0.5"
}
]
},
"values": { "region": ["us-east-1"] },
"cascade_updates": True,
"invoice_display_name": "AWS"
} }
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({
filter: {
properties: {
grouped_by: ['agent_name'],
pricing_group_keys: ['agent_name'],
graduated_ranges: [{from_value: 0, to_value: 10, flat_amount: '10', per_unit_amount: '0.5'}],
graduated_percentage_ranges: [{from_value: 0, to_value: 10, rate: '1', flat_amount: '10'}],
amount: '30',
free_units: 100,
package_size: 1000,
rate: '1',
fixed_amount: '0.5',
free_units_per_events: 5,
free_units_per_total_aggregation: '500',
per_transaction_max_amount: '3.75',
per_transaction_min_amount: '1.75',
volume_ranges: [{from_value: 0, to_value: 10, flat_amount: '10', per_unit_amount: '0.5'}]
},
values: {region: ['us-east-1']},
cascade_updates: true,
invoice_display_name: 'AWS'
}
})
};

fetch('https://api.getlago.com/api/v1/subscriptions/{external_id}/charges/{charge_code}/filters', 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}/charges/{charge_code}/filters",
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([
'filter' => [
'properties' => [
'grouped_by' => [
'agent_name'
],
'pricing_group_keys' => [
'agent_name'
],
'graduated_ranges' => [
[
'from_value' => 0,
'to_value' => 10,
'flat_amount' => '10',
'per_unit_amount' => '0.5'
]
],
'graduated_percentage_ranges' => [
[
'from_value' => 0,
'to_value' => 10,
'rate' => '1',
'flat_amount' => '10'
]
],
'amount' => '30',
'free_units' => 100,
'package_size' => 1000,
'rate' => '1',
'fixed_amount' => '0.5',
'free_units_per_events' => 5,
'free_units_per_total_aggregation' => '500',
'per_transaction_max_amount' => '3.75',
'per_transaction_min_amount' => '1.75',
'volume_ranges' => [
[
'from_value' => 0,
'to_value' => 10,
'flat_amount' => '10',
'per_unit_amount' => '0.5'
]
]
],
'values' => [
'region' => [
'us-east-1'
]
],
'cascade_updates' => true,
'invoice_display_name' => 'AWS'
]
]),
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}/charges/{charge_code}/filters"

payload := strings.NewReader("{\n \"filter\": {\n \"properties\": {\n \"grouped_by\": [\n \"agent_name\"\n ],\n \"pricing_group_keys\": [\n \"agent_name\"\n ],\n \"graduated_ranges\": [\n {\n \"from_value\": 0,\n \"to_value\": 10,\n \"flat_amount\": \"10\",\n \"per_unit_amount\": \"0.5\"\n }\n ],\n \"graduated_percentage_ranges\": [\n {\n \"from_value\": 0,\n \"to_value\": 10,\n \"rate\": \"1\",\n \"flat_amount\": \"10\"\n }\n ],\n \"amount\": \"30\",\n \"free_units\": 100,\n \"package_size\": 1000,\n \"rate\": \"1\",\n \"fixed_amount\": \"0.5\",\n \"free_units_per_events\": 5,\n \"free_units_per_total_aggregation\": \"500\",\n \"per_transaction_max_amount\": \"3.75\",\n \"per_transaction_min_amount\": \"1.75\",\n \"volume_ranges\": [\n {\n \"from_value\": 0,\n \"to_value\": 10,\n \"flat_amount\": \"10\",\n \"per_unit_amount\": \"0.5\"\n }\n ]\n },\n \"values\": {\n \"region\": [\n \"us-east-1\"\n ]\n },\n \"cascade_updates\": true,\n \"invoice_display_name\": \"AWS\"\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}/charges/{charge_code}/filters")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"filter\": {\n \"properties\": {\n \"grouped_by\": [\n \"agent_name\"\n ],\n \"pricing_group_keys\": [\n \"agent_name\"\n ],\n \"graduated_ranges\": [\n {\n \"from_value\": 0,\n \"to_value\": 10,\n \"flat_amount\": \"10\",\n \"per_unit_amount\": \"0.5\"\n }\n ],\n \"graduated_percentage_ranges\": [\n {\n \"from_value\": 0,\n \"to_value\": 10,\n \"rate\": \"1\",\n \"flat_amount\": \"10\"\n }\n ],\n \"amount\": \"30\",\n \"free_units\": 100,\n \"package_size\": 1000,\n \"rate\": \"1\",\n \"fixed_amount\": \"0.5\",\n \"free_units_per_events\": 5,\n \"free_units_per_total_aggregation\": \"500\",\n \"per_transaction_max_amount\": \"3.75\",\n \"per_transaction_min_amount\": \"1.75\",\n \"volume_ranges\": [\n {\n \"from_value\": 0,\n \"to_value\": 10,\n \"flat_amount\": \"10\",\n \"per_unit_amount\": \"0.5\"\n }\n ]\n },\n \"values\": {\n \"region\": [\n \"us-east-1\"\n ]\n },\n \"cascade_updates\": true,\n \"invoice_display_name\": \"AWS\"\n }\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.getlago.com/api/v1/subscriptions/{external_id}/charges/{charge_code}/filters")

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 \"filter\": {\n \"properties\": {\n \"grouped_by\": [\n \"agent_name\"\n ],\n \"pricing_group_keys\": [\n \"agent_name\"\n ],\n \"graduated_ranges\": [\n {\n \"from_value\": 0,\n \"to_value\": 10,\n \"flat_amount\": \"10\",\n \"per_unit_amount\": \"0.5\"\n }\n ],\n \"graduated_percentage_ranges\": [\n {\n \"from_value\": 0,\n \"to_value\": 10,\n \"rate\": \"1\",\n \"flat_amount\": \"10\"\n }\n ],\n \"amount\": \"30\",\n \"free_units\": 100,\n \"package_size\": 1000,\n \"rate\": \"1\",\n \"fixed_amount\": \"0.5\",\n \"free_units_per_events\": 5,\n \"free_units_per_total_aggregation\": \"500\",\n \"per_transaction_max_amount\": \"3.75\",\n \"per_transaction_min_amount\": \"1.75\",\n \"volume_ranges\": [\n {\n \"from_value\": 0,\n \"to_value\": 10,\n \"flat_amount\": \"10\",\n \"per_unit_amount\": \"0.5\"\n }\n ]\n },\n \"values\": {\n \"region\": [\n \"us-east-1\"\n ]\n },\n \"cascade_updates\": true,\n \"invoice_display_name\": \"AWS\"\n }\n}"

response = http.request(request)
puts response.read_body
{
  "filter": {
    "lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
    "charge_code": "api_requests_charge",
    "invoice_display_name": "AWS",
    "properties": {
      "grouped_by": [
        "agent_name"
      ],
      "pricing_group_keys": [
        "agent_name"
      ],
      "graduated_ranges": [
        {
          "from_value": 0,
          "to_value": 10,
          "flat_amount": "10",
          "per_unit_amount": "0.5"
        }
      ],
      "graduated_percentage_ranges": [
        {
          "from_value": 0,
          "to_value": 10,
          "rate": "1",
          "flat_amount": "10"
        }
      ],
      "amount": "30",
      "free_units": 100,
      "package_size": 1000,
      "rate": "1",
      "fixed_amount": "0.5",
      "free_units_per_events": 5,
      "free_units_per_total_aggregation": "500",
      "per_transaction_max_amount": "3.75",
      "per_transaction_min_amount": "1.75",
      "volume_ranges": [
        {
          "from_value": 0,
          "to_value": 10,
          "flat_amount": "10",
          "per_unit_amount": "0.5"
        }
      ]
    },
    "values": {
      "region": [
        "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": {}
}

Authorizations

Authorization
string
header
required

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

Path Parameters

external_id
string
required

External ID of the existing subscription.

Example:

"sub_1234567890"

charge_code
string
required

Code of the existing charge.

Example:

"api_requests_charge"

Query Parameters

subscription_status
enum<string>
default:active

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

Charge filter payload

filter
object
required

Response

Charge filter created

filter
object
required

Charge filter values used to apply differentiated pricing based on additional event properties.