Skip to content

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.

Authentication

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.

Rate Limiting

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.

Pagination

List endpoints support pagination using query parameters:

  • page: Page number (default: 1)
  • limit: Number of records per page (default: 20, max: 100 unless limit_max is 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 page and limit. Request page=1, then request the page number in data.pagy.next until data.pagy.next is null.
  • BI/ETL connectors (such as Tableau's REST API Connector) use offset and limit. Keep limit fixed and increase offset by the same amount on each request: offset=0&limit=100, then offset=100&limit=100, then offset=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.

Servers
https://api.rhythms.ai