Rhythms REST API (v2)
The official REST API for Rhythms - designed for third-party integrations, mobile apps, and external tooling. This API follows REST conventions and provides clean, predictable endpoints for managing OKRs (Objectives, Key Results, and Initiatives).
Base URL
https://api.rhythms.ai
All REST API v2 endpoints are prefixed with /rest/v2/
Response Format
All responses use JSON format with consistent error handling and pagination. Successful responses include requested data, while error responses provide detailed troubleshooting information.
Error Handling
The API uses standard HTTP status codes with detailed JSON error messages.
Perfect for building integrations, mobile apps, reporting dashboards, and automation workflows.
All API endpoints require authentication using Bearer token authorization. Include this header with every request:
- Authorization: Bearer token for your account access
Getting API Credentials: Contact support at support@rhythms.ai to obtain your access token.
Standard rate limits apply to all endpoints to ensure fair usage and optimal performance for all users.
If you need higher limits for your integration, please contact our support team at support@rhythms.ai with details about your use case.
List endpoints support pagination using query parameters:
- page: Page number (default: 1)
- limit: Number of records per page (default: 20, max: 100 unless
limit_maxis also sent) - offset: Number of records to skip
Responses return the records in data.records and pagination metadata in data.pagy, where next is the next page number (or null if no more pages).
Two pagination patterns are supported:
- Page-based clients use
pageandlimit. Requestpage=1, then request the page number indata.pagy.nextuntildata.pagy.nextis null. - BI/ETL connectors (such as Tableau's REST API Connector) use
offsetandlimit. Keeplimitfixed and increaseoffsetby the same amount on each request:offset=0&limit=100, thenoffset=100&limit=100, thenoffset=200&limit=100, and so on.
An offset past the end of the data returns an empty data.records array, which is the end-of-data signal: stop requesting when you receive it. Offset clients should keep limit at or below the ceiling (100, or the limit_max you send). A larger limit is capped to the ceiling, so stepping offset by it would skip records.
Example: Objectives
curl -H "Authorization: Bearer YOUR_API_TOKEN" "https://api.rhythms.ai/rest/v2/objectives?offset=0&limit=100"{
"data": {
"records": [
{ "uuid": "7b0c7a4e-3f7d-4c55-9d7e-2a9c1f6e8b10", "title": "Grow enterprise revenue" }
],
"pagy": { "next": 2 }
}
}Request offset=100&limit=100 next, and continue until data.records is empty.