Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/m3ter-pricing-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: m3ter Pricing API
description: 'If you are using Postman, you can:
- Use the **Download** button above to download the m3ter Open API spec JSON file and then import this file as the **m3ter API Collection** into your Workspace.'
version: '1.0'
x-logo:
url: https://console.m3ter.com/m3ter-logo-black.svg
servers:
- url: https://api.m3ter.com
security:
- OAuth2: []
tags:
- name: Pricing
description: 'Endpoints for listing, creating, updating, retrieving, or deleting Pricing.
Create the Pricing for a Plan/PlanTemplate with usage data Aggregations, and define a usage-based pricing structure for charging end customer Accounts put on the Plan.
See Reviewing Pricing Options for Plans and Plan Templates for more information.'
paths:
/organizations/{orgId}/pricings/{id}:
get:
tags:
- Pricing
summary: Retrieve Pricing
description: Retrieve the Pricing with the given UUID.
operationId: GetPricing
parameters:
- name: orgId
in: path
description: UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.
required: true
style: simple
explode: false
schema:
type: string
deprecated: true
x-stainless-deprecation-message: the org id should be set at the client level instead
- name: id
in: path
description: The UUID of the Pricing to retrieve.
required: true
style: simple
explode: false
schema:
type: string
responses:
'200':
description: Returns the requested Pricing
content:
application/json:
schema:
$ref: '#/components/schemas/PricingResponse'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
put:
tags:
- Pricing
summary: Update Pricing
description: 'Update Pricing for the given UUID.
**Notes:**
* Exactly one of `planId` or `planTemplateId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error.
* Exactly one of `aggregationId` or `compoundAggregationId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error.'
operationId: PutPricing
parameters:
- name: orgId
in: path
description: UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.
required: true
style: simple
explode: false
schema:
type: string
deprecated: true
x-stainless-deprecation-message: the org id should be set at the client level instead
- name: id
in: path
description: The UUID of the Pricing to update.
required: true
style: simple
explode: false
schema:
maximum: 36
minimum: 36
type: string
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PricingRequest'
required: true
responses:
'200':
description: Returns the updated Pricing
content:
application/json:
schema:
$ref: '#/components/schemas/PricingResponse'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
delete:
tags:
- Pricing
summary: Delete Pricing
description: Delete the Pricing with the given UUID.
operationId: DeletePricing
parameters:
- name: orgId
in: path
description: UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.
required: true
style: simple
explode: false
schema:
type: string
deprecated: true
x-stainless-deprecation-message: the org id should be set at the client level instead
- name: id
in: path
description: The UUID of the Pricing to delete.
required: true
style: simple
explode: false
schema:
maximum: 36
minimum: 36
type: string
responses:
'200':
description: Return the deleted Pricing
content:
application/json:
schema:
$ref: '#/components/schemas/PricingResponse'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
/organizations/{orgId}/pricings:
get:
tags:
- Pricing
summary: List Pricings
description: Retrieve a list of Pricings filtered by date, Plan ID, PlanTemplate ID, or Pricing ID.
operationId: ListPricings
parameters:
- name: orgId
in: path
description: UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.
required: true
style: simple
explode: false
schema:
type: string
deprecated: true
x-stainless-deprecation-message: the org id should be set at the client level instead
- name: pageSize
in: query
description: Number of Pricings to retrieve per page.
required: false
allowEmptyValue: true
style: form
explode: true
schema:
maximum: 100
minimum: 1
type: integer
format: int32
- name: nextToken
in: query
description: '`nextToken` for multi-page retrievals.'
required: false
allowEmptyValue: true
style: form
explode: true
schema:
type: string
- name: date
in: query
description: Date on which to retrieve active Pricings.
required: false
allowEmptyValue: true
style: form
explode: true
schema:
type: string
- name: planId
in: query
description: UUID of the Plan to retrieve Pricings for.
required: false
allowEmptyValue: true
style: form
explode: true
schema:
maximum: 36
minimum: 36
type: string
- name: planTemplateId
in: query
description: UUID of the PlanTemplate to retrieve Pricings for.
required: false
allowEmptyValue: true
style: form
explode: true
schema:
maximum: 36
minimum: 36
type: string
- name: aggregationId
in: query
description: UUID of the Aggregation to retrieve pricings for
required: false
allowEmptyValue: true
style: form
explode: true
schema:
maximum: 36
minimum: 36
type: string
- name: ids
in: query
description: 'List of Pricing IDs to retrieve. '
required: false
allowEmptyValue: true
style: form
explode: true
schema:
type: array
items:
type: string
responses:
'200':
description: Returns the list of requested Pricings
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedPricingResponseData'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
post:
tags:
- Pricing
summary: Create Pricing
description: 'Create a new Pricing.
**Notes:**
* Exactly one of `planId` or `planTemplateId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error.
* Exactly one of `aggregationId` or `compoundAggregationId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error.'
operationId: PostPricing
parameters:
- name: orgId
in: path
description: UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.
required: true
style: simple
explode: false
schema:
type: string
deprecated: true
x-stainless-deprecation-message: the org id should be set at the client level instead
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PricingRequest'
required: true
responses:
'200':
description: Returns the created Pricing
content:
application/json:
schema:
$ref: '#/components/schemas/PricingResponse'
4XX:
$ref: '#/components/responses/Error'
5XX:
$ref: '#/components/responses/Error'
components:
schemas:
AbstractResponseWithAuditFields:
type: object
description: ''
allOf:
- $ref: '#/components/schemas/AbstractResponse'
- properties:
dtCreated:
type: string
description: The DateTime when this item was created *(in ISO-8601 format)*.
format: date-time
x-stainless-skip:
- terraform
dtLastModified:
type: string
description: The DateTime when this item was last modified *(in ISO-8601 format)*.
format: date-time
x-stainless-skip:
- terraform
createdBy:
type: string
description: The ID of the user who created this item.
x-stainless-skip:
- terraform
lastModifiedBy:
type: string
description: The ID of the user who last modified this item.
x-stainless-skip:
- terraform
PaginatedPricingResponseData:
type: object
properties:
data:
type: array
description: ''
items:
$ref: '#/components/schemas/PricingResponse'
nextToken:
type: string
description: ''
description: ''
AbstractRequest:
type: object
properties:
version:
type: integer
description: 'The version number of the entity:
- **Create entity:** Not valid for initial insertion of new entity - *do not use for Create*. On initial Create, version is set at 1 and listed in the response.
- **Update Entity:** On Update, version is required and must match the existing version because a check is performed to ensure sequential versioning is preserved. Version is incremented by 1 and listed in the response.'
format: int64
x-stainless-terraform-configurability: computed
x-stainless-terraform-always-send: true
description: ''
PricingResponse:
type: object
description: ''
allOf:
- $ref: '#/components/schemas/BasePricingResponseWithPricingBands'
- $ref: '#/components/schemas/BasePricingResponse'
- $ref: '#/components/schemas/AbstractResponseWithAuditFields'
- $ref: '#/components/schemas/AbstractResponse'
- properties:
aggregationId:
type: string
description: UUID of the Aggregation used to create the Pricing. Use this when creating a Pricing for a segmented aggregation.
compoundAggregationId:
type: string
description: UUID of the Compound Aggregation used to create the Pricing.
type:
description: '* **DEBIT**. Default setting. The amount calculated using the Pricing is added to the bill as a debit.
* **PRODUCT_CREDIT**. The amount calculated using the Pricing is added to the bill as a credit *(negative amount)*. To prevent negative billing, the bill will be capped at the total of other line items for the *same* Product.
* **GLOBAL_CREDIT**. The amount calculated using the Pricing is added to the bill as a credit *(negative amount)*. To prevent negative billing, the bill will be capped at the total of other line items for the entire bill, which might include other Products the Account consumes.'
$ref: '#/components/schemas/PricingType'
segment:
type: object
additionalProperties:
type: string
description: 'Name of the segment for which you are defining a Pricing.
For each segment in a segmented aggregation, make a separate call using `aggregationId` parameter to update a Pricing.'
tiersSpanPlan:
type: boolean
description: 'The default value is **FALSE**.
* If TRUE, usage accumulates over the entire period the priced Plan is active for the account, and is not reset for pricing band rates at the start of each billing period.
* If FALSE, usage does not accumulate, and is reset for pricing bands at the start of each billing period.'
minimumSpend:
type: number
description: The minimum spend amount per billing cycle for end customer Accounts on a Plan to which the Pricing is applied.
format: double
minimumSpendDescription:
type: string
description: Minimum spend description *(displayed on the bill line item)*.
minimumSpendBillInAdvance:
type: boolean
description: 'The default value is **FALSE**.
* When TRUE, minimum spend is billed at the start of each billing period.
* When FALSE, minimum spend is billed at the end of each billing period.
*(Optional)*. Overrides the setting at Organization level for minimum spend billing in arrears/in advance.'
aggregationType:
description: ''
$ref: '#/components/schemas/AggregationType'
segmentString:
type: string
description: ''
overagePricingBands:
type: array
description: 'The Prepayment/Balance overage pricing in pricing bands for the case of a **Tiered** pricing structure. '
items:
$ref: '#/components/schemas/PricingBand'
accountingProductId:
type: string
description: ''
PricingType:
type: string
description: '* **DEBIT**. Default setting. The amount calculated using the Pricing is added to the bill as a debit.
* **PRODUCT_CREDIT**. The amount calculated using the Pricing is added to the bill as a credit *(negative amount)*. To prevent negative billing, the bill will be capped at the total of other line items for the *same* Product.
* **GLOBAL_CREDIT**. The amount calculated using the Pricing is added to the bill as a credit *(negative amount)*. To prevent negative billing, the bill will be capped at the total of other line items for the entire bill, which might include other Products the Account consumes.'
enum:
- DEBIT
- PRODUCT_CREDIT
- GLOBAL_CREDIT
BasePricingResponse:
type: object
description: ''
allOf:
- $ref: '#/components/schemas/AbstractResponseWithAuditFields'
- $ref: '#/components/schemas/AbstractResponse'
- properties:
planId:
type: string
description: UUID of the Plan the Pricing is created for.
planTemplateId:
type: string
description: UUID of the Plan Template the Pricing was created for.
cumulative:
type: boolean
description: 'Controls whether or not charge rates under a set of pricing bands configured for a Pricing are applied according to each separate band or at the highest band reached.
The default value is **TRUE**.
* When TRUE, at billing charge rates are applied according to each separate band.
* When FALSE, at billing charge rates are applied according to highest band reached.'
startDate:
type: string
description: The start date *(in ISO-8601 format)* for when the Pricing starts to be active for the Plan of Plan Template.
format: date-time
endDate:
type: string
description: 'The end date *(in ISO-8601 format)* for when the Pricing ceases to be active for the Plan or Plan Template.
If not specified, the Pricing remains active indefinitely.'
format: date-time
code:
type: string
description: Unique short code for the Pricing.
description:
type: string
description: Displayed on Bill line items.
accountingProductId:
type: string
description: Optional Product ID this Pricing should be attributed to for accounting purposes.
BasePricingResponseWithPricingBands:
type: object
description: ''
allOf:
- $ref: '#/components/schemas/BasePricingResponse'
- $ref: '#/components/schemas/AbstractResponseWithAuditFields'
- $ref: '#/components/schemas/AbstractResponse'
- properties:
pricingBands:
type: array
description: ''
items:
$ref: '#/components/schemas/PricingBand'
BasePricingRequest:
type: object
description: ''
allOf:
- $ref: '#/components/schemas/AbstractRequest'
- required:
- startDate
properties:
code:
maxLength: 80
pattern: ^([^[\p{Cntrl}\s]])|([^[\p{Cntrl}\s]][[^[\p{Cntrl}\s]] ]*[^[\p{Cntrl}\s]])$
type: string
description: Unique short code for the Pricing.
planId:
type: string
description: UUID of the Plan the Pricing is created for.
planTemplateId:
type: string
description: UUID of the Plan Template the Pricing is created for.
cumulative:
type: boolean
description: 'Controls whether or not charge rates under a set of pricing bands configured for a Pricing are applied according to each separate band or at the highest band reached.
*(Optional)*. The default value is **FALSE**.
* When TRUE, at billing charge rates are applied according to each separate band.
* When FALSE, at billing charge rates are applied according to highest band reached.
**NOTE:** Use the `cumulative` parameter to create the type of Pricing you require. For example, for Tiered Pricing set to **TRUE**; for Volume Pricing, set to **FALSE**.'
startDate:
type: string
description: The start date *(in ISO-8601 format)* for when the Pricing starts to be active for the Plan of Plan Template.*(Required)*
format: date-time
endDate:
type: string
description: 'The end date *(in ISO-8601 format)* for when the Pricing ceases to be active for the Plan or Plan Template.
*(Optional)* If not specified, the Pricing remains active indefinitely.'
format: date-time
description:
maxLength: 200
type: string
description: Displayed on Bill line items.
accountingProductId:
maxLength: 36
minLength: 36
type: string
description: Optional Product ID this Pricing should be attributed to for accounting purposes
AggregationType:
type: string
description: ''
enum:
- SIMPLE
- COMPOUND
AbstractResponse:
required:
- id
type: object
properties:
id:
type: string
description: 'The UUID of the entity. '
version:
type: integer
description: 'The version number:
- **Create:** On initial Create to insert a new entity, the version is set at 1 in the response.
- **Update:** On successful Update, the version is incremented by 1 in the response.'
format: int64
x-stainless-terraform-configurability: computed
x-stainless-terraform-always-send: true
description: ''
BasePricingRequestWithPricingBands:
type: object
description: ''
allOf:
- $ref: '#/components/schemas/BasePricingRequest'
- $ref: '#/components/schemas/AbstractRequest'
- required:
- pricingBands
properties:
pricingBands:
minItems: 1
type: array
description: ''
items:
$ref: '#/components/schemas/PricingBand'
PricingRequest:
type: object
properties:
aggregationId:
maxLength: 36
type: string
description: UUID of the Aggregation used to create the Pricing. Use this when creating a Pricing for a segmented aggregation.
compoundAggregationId:
maxLength: 36
type: string
description: UUID of the Compound Aggregation used to create the Pricing.
type:
description: '* **DEBIT**. Default setting. The amount calculated using the Pricing is added to the bill as a debit.
* **PRODUCT_CREDIT**. The amount calculated using the Pricing is added to the bill as a credit *(negative amount)*. To prevent negative billing, the bill will be capped at the total of other line items for the same Product.
* **GLOBAL_CREDIT**. The amount calculated using the Pricing is added to the bill as a credit *(negative amount)*. To prevent negative billing, the bill will be capped at the total of other line items for the entire bill, which might include other Products the Account consumes.'
$ref: '#/components/schemas/PricingType'
segment:
type: object
additionalProperties:
type: string
description: 'Specifies the segment value which you are defining a Pricing for using this call:
- For each segment value defined on a Segmented Aggregation you must create a separate Pricing and use the appropriate `aggregationId` parameter for the call.
- If you specify a segment value that has not been defined for the Aggregation, you''ll receive an error.
- If you''ve defined segment values for the Aggregation using a single wildcard or multiple wildcards, you can create Pricing for these wildcard segment values also.
For more details on creating Pricings for segment values on a Segmented Aggregation using this call, together with some examples, see the [Using API Call to Create Segmented Pricings](https://www.m3ter.com/docs/guides/plans-and-pricing/pricing-plans/pricing-plans-using-segmented-aggregations#using-api-call-to-create-a-segmented-pricing) in our User Documentation.'
tiersSpanPlan:
type: boolean
description: 'The default value is **FALSE**.
* If **TRUE**, usage accumulates over the entire period the priced Plan is active for the account, and is not reset for pricing band rates at the start of each billing period.
* If **FALSE**, usage does not accumulate, and is reset for pricing bands at the start of each billing period.'
minimumSpend:
minimum: 0
type: number
description: The minimum spend amount per billing cycle for end customer Accounts on a Plan to which the Pricing is applied.
format: double
minimumSpendDescription:
maxLength: 200
type: string
description: Minimum spend description *(displayed on the bill line item)*.
minimumSpendBillInAdvance:
type: boolean
description: 'The default value is **FALSE**.
* When **TRUE**, minimum spend is billed at the start of each billing period.
* When **FALSE**, minimum spend is billed at the end of each billing period.
*(Optional)*. Overrides the setting at Organization level for minimum spend billing in arrears/in advance.'
overagePricingBands:
type: array
description: 'Specify Prepayment/Balance overage pricing in pricing bands for the case of a **Tiered** pricing structure. The overage pricing rates will be used to charge for usage if the Account has a Commitment/Prepayment or Balance applied to it and the entire Commitment/Prepayment or Balance amount has been consumed.
**Constraints:**
* Can only be used for a **Tiered** pricing structure. If cumulative is **FALSE** and you defined `overagePricingBands`, then you''ll receive an error.
* If `tiersSpanPlan` is set to **TRUE** for usage accumulates over entire contract period, then cannot be used.
* If the Commitment/Prepayement or Balance has an `overageSurchargePercent` defined, then this will override any `overagePricingBands` you''ve defined for the pricing.'
items:
$ref: '#/components/schemas/PricingBand'
description: ''
allOf:
- $ref: '#/components/schemas/BasePricingRequestWithPricingBands'
- $ref: '#/components/schemas/BasePricingRequest'
- $ref: '#/components/schemas/AbstractRequest'
PricingBand:
required:
- fixedPrice
- lowerLimit
- unitPrice
type: object
properties:
id:
type: string
description: The ID for the Pricing band.
lowerLimit:
minimum: 0
type: number
description: Lower limit for the Pricing band.
format: double
fixedPrice:
type: number
description: Fixed price charged for the Pricing band.
format: double
unitPrice:
type: number
description: Unit price charged for the Pricing band.
format: double
creditTypeId:
type: string
description: '**OBSOLETE - this is deprecated and no longer used.** '
description: ''
responses:
Error:
description: Error message
content:
application/json:
schema:
type: object
properties:
message:
type: string
securitySchemes:
OAuth2:
type: oauth2
description: "m3ter supports machine to machine authentication using the `clientCredentials` OAuth2 flow.\n\nThe `authorizationCode` flow controls access for human users via the m3ter Console application. \n"
flows:
clientCredentials:
tokenUrl: /oauth/token
scopes:
m3ter-resources/m3ter-scope: m3ter resources
measurements:upload: Upload measurements
measurements:fileUpload: Upload file
measurements:retrieve: Retrieve measurements
authorizationCode:
authorizationUrl: https://m3ter.auth.us-east-1.amazoncognito.com/oauth2/authorize
tokenUrl: https://m3ter.auth.us-east-1.amazoncognito.com/oauth2/token
scopes:
m3ter-resources/m3ter-scope: m3ter resources
openid: OpenID
email: email
measurements:upload: Upload measurements
measurements:fileUpload: Upload file
measurements:retrieve: Retrieve measurements