---
schema_version: "1"
id: 5abe3e341697efc91992129962031084a0e9d20b3f03e94213f998a1f86cfe1b
title: Object Store v2 Rate Limiting and Billing
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/object-store/osv2-usage.md
canonical_url: https://docs.mulesoft.com/object-store/osv2-usage
source_site: docs.mulesoft.com
content_type: documentation
content_hash: f710a56bb30abce1d423153e3405a1832753c9116ba3b34aab10087a43a6f8a2
description: MuleSoft Documentation Site
latest: true
---
---
product: Object Store
---

# Object Store v2 Rate Limiting and Billing

> For the full documentation index, see: https://docs.mulesoft.com/llms.txt

Monitor your Object Store v2 billing by understanding how API requests and effective API requests
impact rate limiting and billing. Track usage metrics through Anypoint Usage Reports or the Anypoint
Usage API to optimize application performance and avoid exceeding your subscription limits.

Object Store v2 uses two metrics to determine rate-limiting and billing: API requests and effective
API requests. To access usage data, use [Anypoint Usage Reports](#access-os-usage-reports) or the
[Anypoint Usage API](#anypoint-usage-api).

> [!NOTE] If you enable **Use Object Store v2**, any connector, module, or policy that relies on
> Object Store uses Object Store v2, even if your application doesn’t explicitly interact with
> Object Store. This usage counts toward rate limiting and billing.
>
> These are some examples of connectors, modules, and policies use Object Store internally:
>
> - API Gateway policies, such as Rate Limiting, SLA-based Rate Limiting, Spike Control, and HTTP
>   Caching
>
> - B2B Solution Runtime Engine components, such as endpoint services, document processing, and API
>   replication
>
> - Salesforce connectors
>
> - Google connectors (primarily for OAuth flows)
>
> - Microsoft connectors
>
> - SAP S/4HANA Cloud
>
> - SAP SuccessFactors
>
> - AS2
>
> - RosettaNet
>
> - Redis
>
> - Power BI
>
> - MCP
>
> - A2A
>
> - OAuth provider templates and OAuth introspection services

API Requests

API requests are HTTP transactions, such as GET, PUT, and POST.

Every API request to Object Store v2 counts toward the transactions per second (TPS) limit,
including requests that return `OS:KEY_NOT_FOUND`.

See [Rate Limiting](#rate-limiting).

Effective API Requests

Effective API requests are the units that Object Store uses to calculate billing.

One successful API request could generate many effective API requests.

See [How Billing is Calculated](#how-billing-is-calculated).

> [!NOTE] The Object Store UI shows effective API request data for two months: the current and
> previous month.

## Rate Limiting

Every API request (via the connector or API) to Object Store v2 counts toward the TPS limit,
including requests that return `OS:KEY_NOT_FOUND`.

\+ TPS and billing are calculated separately. Only successful (2xx) effective API requests count
toward monthly billing.

The TPS limit is based on your subscription type:

<table><colgroup><col> <col></colgroup><thead><tr><th>Subscription Type</th><th>TPS Limit</th></tr></thead><tbody><tr><td><p>Base subscription</p></td><td><p>10 TPS per store</p></td></tr><tr><td><p>Premium add-on subscription</p></td><td><p>100 TPS per store</p></td></tr></tbody></table>

Rate limiting is applied per application. Each application has a single Object Store allocation, so
multiple uses of Object Store within the same application share the same TPS limit.

For example, if your app includes both `case-obj-store` and `ticket-obj-store`, Object Store v2
calculates the 100 TPS limit across all stores used within the application combined.

If an app retrieves 1500 keys from an object store with a page size of 25:

- With the base subscription, the response is throttled over 6 seconds.

- With the premium subscription, the response isn’t throttled.

If the store exceeds the number of TPS allotted based on the subscription type, Object Store v2
returns a `429 HTTP Error` response, indicating that it reached the rate limit.

If the store reaches the TPS limit, you can either upgrade to a premium subscription or redesign the
app to send API requests more slowly.

> [!NOTE] Requests that return a 429 response (due to rate limiting) don’t count toward your monthly
> billing usage and quota.

## How Billing is Calculated

All effective API requests that return a 2xx (success) response count toward your monthly billing
usage and quota.

An effective API request counts as **one or more units** against the quota, depending on the size of
the payload and the number of keys returned.

- Each API request up to 100 KB of object-payload data (if applicable) counts as one unit against
  the quota.

  For example, if an app retrieves one key from an object store with a total payload size of 500KB,
  the request counts as five units against the quota.

- Each 100 KB of payload data above 100 KB counts as an additional unit.

  For example, if an app inserts, updates, or retrieves an item with a total payload size of 101KB
  from an object store, the operation counts as two units against the quota.

- For the Retrieve All and Retrieve All Keys operations, the size of all key-value pairs in the
  object store partition counts toward billable units.

  For example, if an app runs the Retrieve All Keys operation to retrieve only the keys in the
  object store, the billable unit is based on the size of the key-value pairs, not just the keys.

- For each Store operation, the size of the item being inserted or updated counts toward billable
  units.

  For example, if an app inserts or updates one key in an object store with a total payload size of
  300KB, the request counts as three units against the quota.

- Each DELETE API call counts as a single billable unit. Additional units apply to deleted
  partitions.

  <table><colgroup><col> <col> <col></colgroup><tbody><tr><td><p>API Call</p></td><td><p>Description</p></td><td><p>Billable Units</p></td></tr><tr><td><p>Delete store</p></td><td><p>Deletes the store, all partitions in the store, and all key-value pairs in each partition</p></td><td><div><div><ul><li><p>One billable unit for the DELETE API call</p></li><li><p>One billable unit for each deleted partition in the store</p></li></ul></div></div></td></tr><tr><td><p>Delete partitions in store</p></td><td><p>Deletes all partitions in the store, including the key-value pairs in each partition</p></td><td><div><div><ul><li><p>One billable unit for the DELETE API call</p></li><li><p>One billable unit for each deleted partition in the store</p></li></ul></div></div></td></tr><tr><td><p>Delete partition</p></td><td><p>Deletes all key-value pairs and then deletes the partition</p></td><td><p>One billable unit</p></td></tr><tr><td><p>Delete all keys and values in the partition</p></td><td><p>Deletes every key and its associated value from the specified partition</p></td><td><p>One billable unit</p></td></tr><tr><td><p>Delete key</p></td><td><p>Deletes a single key and its associated value</p></td><td><p>One billable unit</p></td></tr></tbody></table>

  For example, a call to delete a store with two partitions counts as three billable units against
  the quota:

  - DELETE API call: one billable unit

  - Two partitions: two billable units

## Maximum Number of API Requests Per Month

This table lists the maximum number of API requests per month, based on your subscription type:

<table><colgroup><col> <col></colgroup><tbody><tr><td><p>Subscription Type</p></td><td><p>Maximum API Requests Per Month</p></td></tr><tr><td><p>Base subscription</p></td><td><p>26 million</p></td></tr><tr><td><p>Premium add-on subscription</p></td><td><p>100 million per add-on subscription</p></td></tr></tbody></table>

If your usage exceeds your license limit, Object Store v2 continues to work. MuleSoft notifies your
account administrator and team of any billing-related information.

## Access Effective API Request Usage Reports

To view Object Store usage reports in Usage:

1.  In Anypoint Platform, go to **Usage**.

2.  Select **Object Store** in the **Product** section:

    ![Object Store on the Usage Reports page](/mulesoft/current/en-us/object-store/_images/os-usage-report.png)

3.  Select a month from the **Monthly Usage Report** tab or day from the **Daily Usage Report** tab.

    The report shows:

    - Total effective API requests for the selected period

    - Effective API requests by store

4.  Click **Export as CSV** to download the usage date for the selected period.

For more information, see [Usage Reports](https://docs.mulesoft.com/general/usage-reports).

## Retrieve Usage Metrics with the Anypoint Usage API

To retrieve Object Store v2 usage metrics programmatically, use the Anypoint Usage API.

The Anypoint Usage API uses AMQL (Anypoint Metric Query Language), a SQL-like query language, to
query usage meters.

### Before You Begin

- Get a bearer token for an Anypoint Platform user with the **Usage Viewer** permission at the root
  organization level.

  See [Get a Bearer Token](https://docs.mulesoft.com/object-store/osv2-apis#get-bearer-token).

### Discover Available Meters

To view all available Object Store meters and their column names:

```bash
curl -X GET 'https://anypoint.mulesoft.com/metering/usage/api/v1/meters:describe' \
  -H 'Authorization: Bearer <BEARER_TOKEN>'
```

### Query Object Store Usage

To retrieve effective API request counts, submit a POST request using AMQL:

```bash
curl -X POST 'https://anypoint.mulesoft.com/metering/usage/api/v1/meters:search' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <BEARER_TOKEN>' \
  -d '{
    "query": "SELECT effective_api_requests FROM object_store_effective_api_requests_count WHERE timestamp between <START_EPOCH_MS> and <END_EPOCH_MS> TIMESERIES P1D"
  }'
```

Replace `START_EPOCH_MS` and `END_EPOCH_MS` with epoch milliseconds for your date range.

> [!NOTE] The Usage API uses epoch milliseconds, not ISO 8601 strings. For example,
> `2024-01-01T00:00:00.000Z` = `1704067200000`.

### AMQL Query Reference

```sql
SELECT <columns>
FROM <meter>
WHERE timestamp between <start_epoch_ms> and <end_epoch_ms>
  [AND org_id = '<ORG_ID>']
  [AND env_id = '<ENV_ID>']
TIMESERIES <P1M|P1D>
```

<table><colgroup><col> <col> <col></colgroup><thead><tr><th>Parameter</th><th>Description</th><th>Values</th></tr></thead><tbody><tr><td><p><code>TIMESERIES</code></p></td><td><p>Granularity of results</p></td><td><p><code>P1D</code> (daily) or <code>P1M</code> (monthly)</p></td></tr><tr><td><p>Daily range (<code>P1D</code>)</p></td><td><p>Maximum query interval</p></td><td><p>30 days</p></td></tr><tr><td><p>Monthly range (<code>P1M</code>)</p></td><td><p>Maximum query interval</p></td><td><p>60 days</p></td></tr><tr><td><p>Data recency</p></td><td><p>Delay for data consolidation</p></td><td><p>3-day delay</p></td></tr></tbody></table>

> [!IMPORTANT] `SELECT *` is not supported. Always specify column names explicitly. Use the
> `:describe` endpoint to get the current column names for each meter.

## See Also

- [Object Store FAQ](https://docs.mulesoft.com/object-store/osv2-faq)

- [Usage Reports](https://docs.mulesoft.com/general/usage-reports)
