{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Rate limiting","description":"REST API for the YOGO fitness platform — bookings, classes, customers, orders, teachers.","llmstxt":{"title":"YOGO API documentation","description":"REST API for the YOGO fitness platform. Customers can list classes, customers, teachers, orders, bookings, and the audit log; assign teachers to classes; and use the same data via an MCP server at mcp.yogobooking.com.","hide":false,"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"rate-limiting","__idx":0},"children":["Rate limiting"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All endpoints share a per-client rate limit."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Setting"},"children":["Setting"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Value"},"children":["Value"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Limit"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["100 requests per minute"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Window"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Fixed 60-second window"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Tracking"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Per client (all API keys for a client share one quota)"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"response-headers","__idx":1},"children":["Response headers"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every response includes:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Header"},"children":["Header"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Rate-Limit-Limit"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Maximum requests allowed (currently ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["100"]},")."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Rate-Limit-Window"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Window length in milliseconds (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["60000"]},")."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you exceed the limit, the response also includes:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Header"},"children":["Header"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Retry-After"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Seconds to wait before the next request will be accepted."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"exceeded-response","__idx":2},"children":["Exceeded response"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"statusCode\": 429,\n  \"message\": \"Rate limit exceeded for this client. Please wait before making more requests.\",\n  \"error\": \"Too Many Requests\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"recommendations","__idx":3},"children":["Recommendations"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Back off on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["429"]}," for at least the number of seconds in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Retry-After"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If you control multiple integrations against the same client, coordinate"," ","their schedules — they share a single quota."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For backfills, prefer ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["limit=1000"]}," and serial paging over many parallel"," ","small requests."]}]}]},"headings":[{"value":"Rate limiting","id":"rate-limiting","depth":1},{"value":"Response headers","id":"response-headers","depth":2},{"value":"Exceeded response","id":"exceeded-response","depth":2},{"value":"Recommendations","id":"recommendations","depth":2}],"frontmatter":{"title":"Rate limiting","seo":{"title":"Rate limiting"}},"lastModified":"2026-05-05T09:31:56.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/rate-limiting","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}