---
title: "Create a new metric"
method: POST
path: "/metrics"
tags: ["Metrics"]
---

# Create a new metric

`POST /metrics`

## Request

- Base URL: `https://api-m.sandbox.paypal.com`
- URL: `https://api-m.sandbox.paypal.com/metrics`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `/api/oauth-proxy` scopes: `read`, `write`
- TypeScript: <https://skmtc.dev/paypal/apis/usage-based-billing-api/docs/metrics/post.ts> (a function with typed inputs; its response is checked against the schema)

## Request body

- MetricRequest
  - `name` string: Descriptive name of the metric that represents a pricing component of your application. This is primarily used for display purposes in the user interface.
  - `code` string: Unique code used to identify the metric within your system. This code is used in API requests to associate events with the correct metric and must be unique across all metrics. Once created, this code cannot be changed.
  - `type` 'METERED' | 'RECURRING': Type of metric, either 'metered' for usage-based or 'recurring' for fixed periodic charges.
  - `description` string: Optional detailed description of the metric that provides additional context about what the metric measures and how it's used. This information is for internal use and helps document the purpose of the metric.
  - `aggregation_type` 'COUNT' | 'SUM' | 'MAX' | 'COUNT_DISTINCT' | 'LATEST', nullable: Aggregation type for the metric
  - `aggregation_field` string: Property name within the event payload that will be used for aggregating usage data. This field specifies which value from the event should be used for calculations. It is required for aggregation types like 'SUM', 'MAX', and other types that operate on values, but not required for 'COUNT' aggregation.
  - `field_filters` object[]
    - `key` string, required: Property name within the event payload that will be used for filtering. This allows you to segment usage data based on specific event properties, such as region, tier, or any other dimension you track.
    - `values` string[], required: Array of specific values that the system should match against the filter key. Only events with matching key-value pairs will be included in the metric calculations. This enables differentiated pricing based on dimensions like region, environment, or other custom properties.

## Response `201`

Metric created successfully

- MetricResponse
  - `name` string, required: Descriptive name of the metric that represents a pricing component of your application. This is primarily used for display purposes in the user interface.
  - `code` string, required: Unique code used to identify the metric within your system. This code is used in API requests to associate events with the correct metric and must be unique across all metrics. Once created, this code cannot be changed.
  - `type` 'METERED' | 'RECURRING': Type of metric, either 'metered' for usage-based or 'recurring' for fixed periodic charges.
  - `description` string: Optional detailed description of the metric that provides additional context about what the metric measures and how it's used. This information is for internal use and helps document the purpose of the metric.
  - `aggregation_type` 'COUNT' | 'SUM' | 'MAX' | 'COUNT_DISTINCT' | 'LATEST', nullable, required: Aggregation type for the metric
  - `aggregation_field` string: Property name within the event payload that will be used for aggregating usage data. This field specifies which value from the event should be used for calculations. It is required for aggregation types like 'SUM', 'MAX', and other types that operate on values, but not required for 'COUNT' aggregation.
  - `field_filters` object[]
    - `key` string, required: Property name within the event payload that will be used for filtering. This allows you to segment usage data based on specific event properties, such as region, tier, or any other dimension you track.
    - `values` string[], required: Array of specific values that the system should match against the filter key. Only events with matching key-value pairs will be included in the metric calculations. This enables differentiated pricing based on dimensions like region, environment, or other custom properties.
  - `id` string, required: Unique identifier of the metric, automatically generated by the system upon creation. This ID is used internally to track the metric and cannot be modified.
  - `created_at` string, date-time, required: Date and time in ISO 8601 format.
  - `updated_at` string, date-time: Date and time in ISO 8601 format.

## Other responses

- `400`: Bad Request - Invalid input data
- `403`: Authorization failed due to insufficient permissions.
- `422`: Bad Request - Invalid input data
- `500`: Internal Server Error - An unexpected error occurred

---

[API](https://skmtc.dev/paypal/apis/usage-based-billing-api.md) - [All operations](https://skmtc.dev/paypal/apis/usage-based-billing-api/llms.txt) - [OpenAPI document](https://skmtc.dev/paypal/apis/usage-based-billing-api/revisions/22fb46514ac4?raw)
