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: Oracle Cloud Infrastructure providerId: oracle-cloud created: '2026-05-04' modified: '2026-08-29' generated: '2026-08-29' method: searched source: https://docs.oracle.com/en-us/iaas/Content/API/Concepts/usingapi.htm sources: - {url: 'https://docs.oracle.com/en-us/iaas/Content/API/Concepts/usingapi.htm', http_status: 200, probed: '2026-08-29'} - {url: 'https://docs.oracle.com/en-us/iaas/Content/API/References/apierrors.htm', http_status: 200, probed: '2026-08-29'} - {url: 'https://docs.oracle.com/en-us/iaas/Content/General/Concepts/servicelimits.htm', http_status: 200, probed: '2026-08-29'} reconciled: true tags: - Cloud Computing - Rate Limiting - Oracle description: >- Oracle throttles the OCI APIs but publishes no numeric rate. The only documented runtime signal is HTTP 429 with the body {"code":"TooManyRequests","message":"User-rate limit exceeded."}, and the only published remediation is client-side exponential back-off. Resource quotas — how many instances, VCNs, buckets or databases a tenancy may hold — are documented separately and in detail, but they are limits on what you can create, not on how fast you may call. limit_count: 0 limit_count_note: >- Zero is the honest number. Oracle publishes no requests-per-second, per-minute or per-hour figure for any OCI API, in the API concepts pages, the error reference or the service-limits table. The 429 exists; the budget is undocumented. limits: [] response_signaling: status_on_exhaustion: 429 error_code: TooManyRequests body: '{"code": "TooManyRequests", "message": "User-rate limit exceeded."}' headers: ratelimit_standard: false x_ratelimit: false retry_after: false headers_note: >- No RateLimit-Limit / RateLimit-Remaining / RateLimit-Reset, no X-RateLimit-*, and no Retry-After header is documented or declared anywhere in the nine first-party contracts in openapi/_original/. A client cannot see remaining budget and cannot be told when to come back. This is the largest runtime-semantics gap in an otherwise precisely specified API. correlation_header: opc-request-id guidance: strategy: exponential back-off verbatim: >- "Oracle recommends implementing exponential back-off, starting from a few seconds to a maximum of 60 seconds." source: https://docs.oracle.com/en-us/iaas/Content/API/Concepts/usingapi.htm scope: documented: per-user / per-tenancy, per-service, per-region note: >- Throttling is applied at the service endpoint. Oracle describes the 429 message as a "User-rate limit exceeded", i.e. scoped to the calling principal, but publishes no per-scope numbers. resource_quotas: documented: true url: https://docs.oracle.com/en-us/iaas/Content/General/Concepts/servicelimits.htm distinction: >- These are capacity limits, not rate limits — e.g. 50 API Gateways per region on Universal Credits vs 5 on Pay As You Go; 100 TB aggregate block storage vs 30 TB; 50 load balancers vs 3. They vary by subscription type (Universal Credits / Pay As You Go / Trial / Always Free), by region and by availability domain. errors_when_exceeded: - {status: 400, code: LimitExceeded, meaning: Oracle-defined tenancy limit for the resource type.} - {status: 400, code: QuotaExceeded, meaning: Administrator-defined compartment quota.} increase_process: >- Service-limit increase request from the OCI Console, or via Oracle Support. See https://docs.oracle.com/en-us/iaas/Content/General/service-limits/create-request.htm notes: >- Upgraded from method:generated to method:searched on 2026-08-29. The previous revision asserted "clients receive HTTP 429 with Retry-After" — the 429 is correct and documented, the Retry-After is not: no such header is published. Corrected here.