specification: API Commons Rate Limits specificationVersion: '0.1' schema: https://raw.githubusercontent.com/api-evangelist/interface-research/main/schema/api-commons.yml#/$defs/RateLimits provider: Google Vault providerId: google-vault generated: '2026-09-12' method: searched source: https://developers.google.com/workspace/vault/limits created: '2026-05-04' modified: '2026-09-12' tags: - Rate Limiting - Quotas - Throttling description: >- Google publishes the Vault API's quotas in full, as per-minute per-project request budgets split by resource family, plus one organization-wide ceiling and one product limit on concurrent exports. It publishes NO rate-limit response headers, so an agent cannot read its remaining budget at runtime — the only runtime signal is the 429 itself. note: >- Replaces the 2026-05-04 scaffold, which asserted invented free-tier numbers and X-RateLimit-* headers that Google does not send. Every figure below is verbatim from the provider's usage-limits page, read on 2026-09-12. headers: limit: null remaining: null reset: null retryAfter: null policy: null headers_note: >- None published. Google documents no X-RateLimit-*, no RateLimit-* and no Retry-After for Vault. Quota consumption is visible only in the Google Cloud console quota pages, out of band. responseCodes: throttled: 429 quotaExceeded: 429 retry: strategy: truncated exponential backoff formula: min(((2^n)+random_number_milliseconds), maximum_backoff) maximum_backoff_seconds: [32, 64] jitter: random_number_milliseconds, <= 1000 ms, recalculated per retry source: https://developers.google.com/workspace/vault/limits product_limits: - name: Concurrent exports scope: organization limit: 20 unit: exports in progress quote: You can have no more than 20 exports in progress across your organization. limits: - name: Matter reads, organization-wide scope: organization metric: matter_reads limit: 600 timeFrame: minute applies: [Vault API, vault.google.com] note: >- 600 matter reads per minute across all projects and users, and it counts traffic from the Vault web UI as well as the API — an agent shares this ceiling with the humans in the organisation. - name: Export, matter and saved query reads scope: project metric: read_requests limit: 120 timeFrame: minute - name: Hold reads scope: project metric: read_requests limit: 228 timeFrame: minute - name: Long-running operation reads scope: project metric: read_requests limit: 300 timeFrame: minute - name: Export writes scope: project metric: write_requests limit: 20 timeFrame: minute - name: Hold writes scope: project metric: write_requests limit: 60 timeFrame: minute - name: Matter permission writes scope: project metric: write_requests limit: 30 timeFrame: minute - name: Matter writes scope: project metric: write_requests limit: 60 timeFrame: minute - name: Saved query writes scope: project metric: write_requests limit: 45 timeFrame: minute - name: Search counts scope: project metric: count_requests limit: 20 timeFrame: minute quota_cost_by_method: note: >- A single call can spend several budgets at once, and some calls cost more than one unit. matters.list is the trap — one call spends TEN matter reads against a 600/minute organization-wide ceiling, so naive polling of the matter list exhausts the organisation's budget roughly ten times faster than the request count suggests. methods: - methods: [matters.close, matters.create, matters.delete, matters.reopen, matters.update, matters.undelete] costs: [1 matter read, 1 matter write] - methods: [matters.count] costs: [1 count] - methods: [matters.get] costs: [1 matter read] - methods: [matters.list] costs: [10 matter reads] - methods: [matters.addPermissions, matters.removePermissions] costs: [1 matter read, 1 matter write, 1 matter permissions write] - methods: [matters.exports.create] costs: [1 export read, 10 export writes] - methods: [matters.exports.delete] costs: [1 export write] - methods: [matters.exports.get] costs: [1 export read] - methods: [matters.exports.list] costs: [5 export reads] - methods: [matters.holds.addHeldAccounts, matters.holds.create, matters.holds.delete, matters.holds.removeHeldAccounts, matters.holds.update] costs: [1 matter read, 1 matter write, 1 hold read, 1 hold write] - methods: [matters.holds.list] costs: [1 matter read, 3 hold reads] - methods: [matters.holds.accounts.create, matters.holds.accounts.delete, matters.holds.accounts.list] costs: [1 matter read, 1 matter write, 1 hold read, 1 hold write] - methods: [matters.savedQueries.create, matters.savedQueries.delete] costs: [1 matter read, 1 matter write, 1 saved query read, 1 saved query write] - methods: [matters.savedQueries.get] costs: [1 matter read, 1 saved query read] - methods: [matters.savedQueries.list] costs: [1 matter read, 3 saved query reads] - methods: [operations.get] costs: [1 long-running operation read] quota_increase: available: true note: >- Google states a project can request a quota adjustment, that calls by a service account count as a single account, and that approval is not guaranteed. source: https://developers.google.com/workspace/vault/limits limit_count: 10