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: Tray.ai providerId: tray-ai created: '2026-05-04' # Provenance stamped 2026-08-11: this artifact was written by the API Evangelist # bulk sweep dated 2026-05-04, not harvested from the provider. See roadmap#35. method: searched modified: '2026-09-02' tags: - Automation - Integration - iPaaS - Rate Limiting - Quotas - Throttling sourceUrls: - https://tray.ai/documentation/developer/getting-started/troubleshooting/rate-limiting-tray - https://tray.ai/documentation/developer/getting-started/troubleshooting/rate-limiting-3rd-party description: >- Machine-readable rate limit definitions for Tray.ai's Platform API and Embedded API. Values reflect the limits documented in Tray's developer portal. Verbatim from the Platform API docs: "all endpoints are rate limited at 30 requests per second or 1800 requests per minute." The Embedded API docs match: "All endpoints are rate limited to 30 requests per second." The Call Connector endpoint is additionally capped at 1,000 concurrent requests. Trigger API event delivery is not rate limited. # CORRECTION 2026-09-02: the previous version of this file listed X-RateLimit-Limit, # X-RateLimit-Remaining, X-RateLimit-Reset, Retry-After and RateLimit-Policy as though Tray # returned them. Tray documents none of these anywhere, and a live unauthenticated request to # https://api.tray.io/core/v1/connectors (probed 2026-09-02, HTTP 401) returned no rate-limit # header of any kind. The claim was a template default, not an observation, and it is removed. headersPublished: false headers: {} headersNote: >- Tray publishes the NUMBERS but not the SIGNAL. There are no RateLimit-* / X-RateLimit-* headers and no Retry-After, so a client cannot read its remaining budget at runtime — it must model the published 30 rps / 1800 rpm ceiling and back off on its own schedule. Verified against the documentation and against a live response on 2026-09-02. responseCodes: throttled: 429 quotaExceeded: 429 evidence: - url: https://tray.ai/documentation/developer/getting-started/troubleshooting/rate-limiting-tray status: 200 finding: >- "all endpoints (Embedded APIs/Connectivity APIs) are rate limited at 30 requests per second or 1800 requests per minute"; "limited burst capacity ... (up to 50 requests per second)"; Call Connector "limits the concurrent calls to 1000"; "the delivery of events to your endpoint is not rate limited ... Tray will retry the delivery of those events with exponential backoff." - url: https://api.tray.io/core/v1/connectors status: 401 finding: 'No RateLimit-* / X-RateLimit-* / Retry-After response header present.' limits: - name: Platform API Steady-State description: All Tray Platform API (Connectivity API) endpoints are rate limited at 30 requests per second, equivalent to 1,800 requests per minute. api: Tray.ai Platform API scope: account metric: requests_per_second limit: 30 timeFrame: second applies: - https://api.tray.io/core/v1 - https://api.eu1.tray.io/core/v1 - https://api.ap1.tray.io/core/v1 - name: Platform API Burst description: Short bursts up to 50 requests per second are tolerated before throttling engages. api: Tray.ai Platform API scope: account metric: requests_per_second limit: 50 timeFrame: second burst: true - name: Platform API Per-Minute Equivalent description: 30 RPS expressed as a per-minute ceiling per the published documentation. api: Tray.ai Platform API scope: account metric: requests_per_minute limit: 1800 timeFrame: minute - name: Call Connector Concurrency description: The Call Connector endpoint has a 1,000 concurrent-requests ceiling in addition to the per-second rate limit. api: Tray.ai Platform API scope: account metric: concurrent_requests limit: 1000 timeFrame: instant applies: - POST /connectors/{connector-name}/versions/{connector-version}/call - name: Trigger Event Delivery description: Trigger API event delivery is not rate limited; events are delivered as quickly as possible. api: Tray.ai Platform API scope: account metric: events limit: -1 timeFrame: instant - name: Embedded API Steady-State description: All Tray Embedded GraphQL API endpoints are rate limited to 30 requests per second. api: Tray.ai Embedded API scope: account metric: requests_per_second limit: 30 timeFrame: second applies: - https://tray.io/graphql - https://eu1.tray.io/graphql - https://ap1.tray.io/graphql - name: Embedded API Burst description: Short bursts up to 50 requests per second are tolerated on the Embedded API before throttling engages. api: Tray.ai Embedded API scope: account metric: requests_per_second limit: 50 timeFrame: second burst: true policies: - name: Backoff Strategy description: Clients should implement exponential backoff with jitter and honor the Retry-After header when present in a 429 response. - name: Burst Handling description: Short bursts up to 50 RPS are tolerated before steady-state throttling engages on both the Platform and Embedded APIs. - name: Concurrency description: The Call Connector endpoint enforces a 1,000-concurrent-request ceiling; long-running connector calls should be parallelized within that ceiling. - name: Event Delivery description: Trigger event delivery is not rate limited and is best-effort real-time. Consumers must size webhook receivers accordingly. - name: Fair Use description: Even though Trigger event delivery is uncapped, sustained patterns that materially impact shared infrastructure may be subject to fair-use review by Tray. maintainers: - FN: Kin Lane email: kin@apievangelist.com