client_id (for OAuth2 endpoints) or to the authenticated userId (for resource endpoints). When you exceed a limit, the API returns a 429 Too Many Requests response. Understanding these limits upfront helps you design integrations that stay within bounds and degrade gracefully when they don’t.
OAuth2 Endpoint Limits
These limits apply to the OAuth2 authentication endpoints. They are keyed byclient_id unless noted otherwise.
API Endpoint Limits
These limits apply to resource and action endpoints. They are keyed by the authenticateduserId.
Rate Limit Response
When you exceed a rate limit, the API responds with429 Too Many Requests and the following JSON body:
error field to detect rate limiting programmatically and distinguish it from other 4xx errors.
Best Practices
Following these practices will keep your integration well within rate limits for the vast majority of use cases.
GET /bookmarks to check for new items, subscribe to webhook events. Bkmark will push a notification to your endpoint the moment a relevant change occurs, eliminating polling overhead entirely.
Batch operations with /bookmarks/bulk. If you need to create, update, or delete multiple bookmarks, use the POST /bookmarks/bulk endpoint rather than making individual requests in a loop. A single bulk call counts as one request against your rate limit regardless of how many bookmarks it touches.
Implement exponential backoff on 429 responses. When you receive a 429, wait before retrying. Start with a short delay (for example, 1 second), then double the delay on each successive 429 up to a maximum (for example, 60 seconds). Adding a small random jitter helps prevent multiple clients from retrying in lockstep.