{"_id":"556dfab7d0f4740d00380e7a","version":{"_id":"556dd000d0f4740d00380e00","project":"556dd000d0f4740d00380dfd","__v":14,"createdAt":"2015-06-02T15:47:12.583Z","releaseDate":"2015-06-02T15:47:12.583Z","categories":["556dd001d0f4740d00380e01","556e17023f11b01900a36978","556eff53fc3aa80d00e1aa67","557078cf910c090d00c43414","557078dc9ea7860d008b24ed","5571a533dbb3632100974aed","5571c4ed6d8908230061f39e","5575b9b10b81dc230069c981","5580706cbe698419008f2ca7","55a4117d53611017004387d4","58502492f744712700462b20","588279ccd63d450f00e1aa58","59e76819193831002803721e","5a6899886b88e400403c3ce5"],"is_deprecated":false,"is_hidden":false,"is_beta":true,"is_stable":true,"codename":"","version_clean":"2.0.0","version":"2"},"__v":3,"project":"556dd000d0f4740d00380dfd","category":{"_id":"556dd001d0f4740d00380e01","project":"556dd000d0f4740d00380dfd","__v":5,"pages":["556dd001d0f4740d00380e03","556df7a4d0f4740d00380e6e","556df857d02e0b190042f111","556df8893f11b01900a36927","556dfab7d0f4740d00380e7a"],"version":"556dd000d0f4740d00380e00","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-06-02T15:47:13.092Z","from_sync":false,"order":0,"slug":"overview","title":"Overview"},"githubsync":"","parentDoc":null,"user":"550e28af11e8d00d00b803f2","metadata":{"title":"","description":"","image":[]},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-06-02T18:49:27.192Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":4,"body":"We implement rate limiting to make sure the API is responsive for all customers. The rate limits are set in a way to provide substantial functionality while trying to stifle abuse. Most times, a rate limit can be subverted by implementing a different API call or leveraging other API features (i.e. instead of polling for quotes, leverage the streaming API).\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"How rate limits work?\"\n}\n[/block]\nTwo pieces of information to understand as it pertains to our limits:\n\n* **Interval** - we aggregate limits over 1 minute intervals starting with the first request and reset 1 minute later\n* **Limit** - this can vary as outlined below, but we keep ours to 60 - 120 requests\nFor example: With a rate limit of 120 requests per minute, if you make a /quotes request every second for a minute, you would still have 60 requests left in that minute before hitting the limit.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Limits\"\n}\n[/block]\nEach limit is enforced by the minute and on a per-API-key basis. \nCurrent limits are set to **60 requests per minute.** \n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Response Headers\"\n}\n[/block]\nWith each request that has a rate limit applied a series of headers will be sent in the response. These headers should help you to gauge your usage and when to throttle your application. For example:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 200 OK\\nContent-Type: application/json;charset=utf-8\\nX-Ratelimit-Allowed: 60\\nX-Ratelimit-Used: 1\\nX-Ratelimit-Available: 59\\nX-Ratelimit-Expiry: 1369164360001\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"Probably not. Polling for data, while not the best solution, is reasonably supported by our APIs. The limits exist with enough headroom to get up-to-date data and still have room to make other requests. The best way to know if your application will hit the limits is to build it and scale back. \\n\\nIf you feel like your application cannot work within the constraints we’ve set, feel free to reach out to us at [advisorsupport:::at:::tradier.com](mailto:advisorsupport@tradier.com).\",\n  \"title\": \"Should you be concerned about rate limits?\"\n}\n[/block]","excerpt":"Information about the rate limits imposed by Tradier Brokerage API","slug":"rate-limits","type":"basic","title":"Rate Limits"}

Rate Limits

Information about the rate limits imposed by Tradier Brokerage API

We implement rate limiting to make sure the API is responsive for all customers. The rate limits are set in a way to provide substantial functionality while trying to stifle abuse. Most times, a rate limit can be subverted by implementing a different API call or leveraging other API features (i.e. instead of polling for quotes, leverage the streaming API). [block:api-header] { "type": "basic", "title": "How rate limits work?" } [/block] Two pieces of information to understand as it pertains to our limits: * **Interval** - we aggregate limits over 1 minute intervals starting with the first request and reset 1 minute later * **Limit** - this can vary as outlined below, but we keep ours to 60 - 120 requests For example: With a rate limit of 120 requests per minute, if you make a /quotes request every second for a minute, you would still have 60 requests left in that minute before hitting the limit. [block:api-header] { "type": "basic", "title": "Limits" } [/block] Each limit is enforced by the minute and on a per-API-key basis. Current limits are set to **60 requests per minute.** [block:api-header] { "type": "basic", "title": "Response Headers" } [/block] With each request that has a rate limit applied a series of headers will be sent in the response. These headers should help you to gauge your usage and when to throttle your application. For example: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nContent-Type: application/json;charset=utf-8\nX-Ratelimit-Allowed: 60\nX-Ratelimit-Used: 1\nX-Ratelimit-Available: 59\nX-Ratelimit-Expiry: 1369164360001", "language": "http" } ] } [/block] [block:callout] { "type": "info", "body": "Probably not. Polling for data, while not the best solution, is reasonably supported by our APIs. The limits exist with enough headroom to get up-to-date data and still have room to make other requests. The best way to know if your application will hit the limits is to build it and scale back. \n\nIf you feel like your application cannot work within the constraints we’ve set, feel free to reach out to us at [advisorsupport@tradier.com](mailto:advisorsupport@tradier.com).", "title": "Should you be concerned about rate limits?" } [/block]