# Rhythms REST API 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:** Items per page (default: 20, max: 100) Response includes pagination metadata in the `pagy` object with `next` indicating the next page number (or null if no more pages). Version: v2 ## Servers ``` https://api.rhythms.ai ``` ## Download OpenAPI description [Rhythms REST API](https://apidocs.rhythms.ai/_bundle/rest/v2.yaml) ## Checkins ### List checkins - [GET /rest/v2/checkins](https://apidocs.rhythms.ai/rest/v2/checkins/get_rest_v2_checkins.md): Retrieves all checkins via REST API This endpoint supports filtering and pagination through query parameters. Available ransackable attributes: uuid, checkinable_type, checkinable_uuid, checkin_date, created_at, status, value, source_type. ### Create a new checkin - [POST /rest/v2/checkins](https://apidocs.rhythms.ai/rest/v2/checkins/post_rest_v2_checkins.md): Creates a new checkin for a goal with optional value, status, and note ### Get a specific checkin - [GET /rest/v2/checkins/{id}](https://apidocs.rhythms.ai/rest/v2/checkins/get_rest_v2_checkins_id.md): Retrieves detailed information about a specific checkin by its UUID ### Update a checkin - [PUT /rest/v2/checkins/{id}](https://apidocs.rhythms.ai/rest/v2/checkins/put_rest_v2_checkins_id.md): Updates an existing checkin with the specified attributes ### Delete a checkin - [DELETE /rest/v2/checkins/{id}](https://apidocs.rhythms.ai/rest/v2/checkins/delete_rest_v2_checkins_id.md): Deletes a checkin ## Initiatives ### List initiatives - [GET /rest/v2/initiatives](https://apidocs.rhythms.ai/rest/v2/initiatives/get_rest_v2_initiatives.md): Retrieves all initiatives via REST API This endpoint supports filtering and pagination through query parameters. Available ransackable attributes: uuid, type, current_status, uuid, status, last_checkin_date, time_period_uuid. Available ransackable associations and their attributes: - time_period: time_period_uuid, time_period_name - owners: owners_uuid, owners_display_name, owners_status, owners_manager_uuid, owners_license_type, owners_display_name, owners_status, owners_manager_uuid, owners_license_type - labels: labels_uuid, labels_name, labels_parent_uuid, labels_is_group - ancestors: ancestors_uuid, ancestors_type, ancestors_current_status, ancestors_uuid, ancestors_status, ancestors_last_checkin_date, ancestors_time_period_uuid - teams: teams_uuid, teams_display_name, teams_parent_uuid, teams_status, teams_name, teams_is_org, teams_parent_uuid - links_as_child: links_as_child_uuid, links_as_child_ancestor_uuid ### Create a new initiative - [POST /rest/v2/initiatives](https://apidocs.rhythms.ai/rest/v2/initiatives/post_rest_v2_initiatives.md): Creates a new initiative with the provided attributes ### Get a specific initiative - [GET /rest/v2/initiatives/{id}](https://apidocs.rhythms.ai/rest/v2/initiatives/get_rest_v2_initiatives_id.md): Retrieves detailed information about a specific initiative by its UUID ### Update an initiative - [PUT /rest/v2/initiatives/{id}](https://apidocs.rhythms.ai/rest/v2/initiatives/put_rest_v2_initiatives_id.md): Updates an existing initiative with the specified attributes ### Delete an initiative - [DELETE /rest/v2/initiatives/{id}](https://apidocs.rhythms.ai/rest/v2/initiatives/delete_rest_v2_initiatives_id.md): Deletes an initiative and optionally its hierarchy ## Key Results ### List key results - [GET /rest/v2/key_results](https://apidocs.rhythms.ai/rest/v2/key-results/get_rest_v2_key_results.md): Retrieves all key results via REST API This endpoint supports filtering and pagination through query parameters. Available ransackable attributes: uuid, type, current_status, uuid, status, last_checkin_date, time_period_uuid. Available ransackable associations and their attributes: - time_period: time_period_uuid, time_period_name - owners: owners_uuid, owners_display_name, owners_status, owners_manager_uuid, owners_license_type, owners_display_name, owners_status, owners_manager_uuid, owners_license_type - labels: labels_uuid, labels_name, labels_parent_uuid, labels_is_group - ancestors: ancestors_uuid, ancestors_type, ancestors_current_status, ancestors_uuid, ancestors_status, ancestors_last_checkin_date, ancestors_time_period_uuid - teams: teams_uuid, teams_display_name, teams_parent_uuid, teams_status, teams_name, teams_is_org, teams_parent_uuid - links_as_child: links_as_child_uuid, links_as_child_ancestor_uuid ### Create a new key result - [POST /rest/v2/key_results](https://apidocs.rhythms.ai/rest/v2/key-results/post_rest_v2_key_results.md): Creates a new key result with the provided attributes ### Get a specific key result - [GET /rest/v2/key_results/{id}](https://apidocs.rhythms.ai/rest/v2/key-results/get_rest_v2_key_results_id.md): Retrieves detailed information about a specific key result by its UUID ### Update a key result - [PUT /rest/v2/key_results/{id}](https://apidocs.rhythms.ai/rest/v2/key-results/put_rest_v2_key_results_id.md): Updates an existing key result with the specified attributes ### Delete a key result - [DELETE /rest/v2/key_results/{id}](https://apidocs.rhythms.ai/rest/v2/key-results/delete_rest_v2_key_results_id.md): Deletes a key result and optionally its hierarchy ## Labels ### List labels - [GET /rest/v2/labels](https://apidocs.rhythms.ai/rest/v2/labels/get_rest_v2_labels.md): Retrieves all labels and label groups via REST API This endpoint supports filtering and pagination through query parameters. Available ransackable attributes: uuid, name, parent_uuid, is_group. Available ransackable associations and their attributes: - parent: parent_uuid, parent_name, parent_parent_uuid, parent_is_group ### Create a new label - [POST /rest/v2/labels](https://apidocs.rhythms.ai/rest/v2/labels/post_rest_v2_labels.md): Creates a new label with the provided attributes. Labels can be regular labels or groups. ### Get a specific label - [GET /rest/v2/labels/{id}](https://apidocs.rhythms.ai/rest/v2/labels/get_rest_v2_labels_id.md): Retrieves detailed information about a specific label by its UUID ### Update a label - [PUT /rest/v2/labels/{id}](https://apidocs.rhythms.ai/rest/v2/labels/put_rest_v2_labels_id.md): Updates an existing label with the specified attributes ### Delete a label - [DELETE /rest/v2/labels/{id}](https://apidocs.rhythms.ai/rest/v2/labels/delete_rest_v2_labels_id.md): Deletes a label. If the label has child labels, they will also be deleted. ## Objectives ### List objectives - [GET /rest/v2/objectives](https://apidocs.rhythms.ai/rest/v2/objectives/get_rest_v2_objectives.md): Retrieves all objectives via REST API This endpoint supports filtering and pagination through query parameters. Available ransackable attributes: uuid, type, current_status, uuid, status, last_checkin_date, time_period_uuid. Available ransackable associations and their attributes: - time_period: time_period_uuid, time_period_name - owners: owners_uuid, owners_display_name, owners_status, owners_manager_uuid, owners_license_type, owners_display_name, owners_status, owners_manager_uuid, owners_license_type - labels: labels_uuid, labels_name, labels_parent_uuid, labels_is_group - ancestors: ancestors_uuid, ancestors_type, ancestors_current_status, ancestors_uuid, ancestors_status, ancestors_last_checkin_date, ancestors_time_period_uuid - teams: teams_uuid, teams_display_name, teams_parent_uuid, teams_status, teams_name, teams_is_org, teams_parent_uuid - links_as_child: links_as_child_uuid, links_as_child_ancestor_uuid ### Create a new objective - [POST /rest/v2/objectives](https://apidocs.rhythms.ai/rest/v2/objectives/post_rest_v2_objectives.md): Creates a new objective with the provided attributes ### Get a specific objective - [GET /rest/v2/objectives/{id}](https://apidocs.rhythms.ai/rest/v2/objectives/get_rest_v2_objectives_id.md): Retrieves detailed information about a specific objective by its UUID ### Update an objective - [PUT /rest/v2/objectives/{id}](https://apidocs.rhythms.ai/rest/v2/objectives/put_rest_v2_objectives_id.md): Updates an existing objective with the specified attributes ### Delete an objective - [DELETE /rest/v2/objectives/{id}](https://apidocs.rhythms.ai/rest/v2/objectives/delete_rest_v2_objectives_id.md): Deletes an objective and optionally its hierarchy ## Teams ### List teams - [GET /rest/v2/teams](https://apidocs.rhythms.ai/rest/v2/teams/get_rest_v2_teams.md): Retrieves all teams via REST API This endpoint supports filtering and pagination through query parameters. Available ransackable attributes: uuid, display_name, parent_uuid, status, name, is_org, parent_uuid. Available ransackable associations and their attributes: - team_memberships: team_memberships_uuid, team_memberships_user_uuid ### Create a new team - [POST /rest/v2/teams](https://apidocs.rhythms.ai/rest/v2/teams/post_rest_v2_teams.md): Creates a new team with the specified attributes, owners, and members ### Get a specific team - [GET /rest/v2/teams/{id}](https://apidocs.rhythms.ai/rest/v2/teams/get_rest_v2_teams_id.md): Retrieves detailed information about a specific team by its UUID ### Update a team - [PUT /rest/v2/teams/{id}](https://apidocs.rhythms.ai/rest/v2/teams/put_rest_v2_teams_id.md): Updates an existing team with the specified attributes, owners, and members ### Delete a team - [DELETE /rest/v2/teams/{id}](https://apidocs.rhythms.ai/rest/v2/teams/delete_rest_v2_teams_id.md): Deletes a team if it has no active sub-teams or OKR relationships ## Users ### List users - [GET /rest/v2/users](https://apidocs.rhythms.ai/rest/v2/users/get_rest_v2_users.md): Retrieves all users via REST API This endpoint supports filtering and pagination through query parameters. Available ransackable attributes: uuid, display_name, status, manager_uuid, license_type, display_name, status, manager_uuid, license_type. Available ransackable associations and their attributes: - teams: teams_uuid, teams_display_name, teams_parent_uuid, teams_status, teams_name, teams_is_org, teams_parent_uuid - team_memberships: team_memberships_uuid, team_memberships_user_uuid - profile: profile_uuid, profile_first_name, profile_last_name, profile_job_title, profile_employee_type, profile_department_name, profile_division_name, profile_cost_center_name, profile_custom_field_1, profile_custom_field_2, profile_custom_field_3, profile_custom_field_4, profile_custom_field_5 - manager: manager_uuid, manager_display_name, manager_status, manager_manager_uuid, manager_license_type, manager_display_name, manager_status, manager_manager_uuid, manager_license_type ### Create a new user - [POST /rest/v2/users](https://apidocs.rhythms.ai/rest/v2/users/post_rest_v2_users.md): Creates a new user with the provided attributes. Email is required and must be unique within the tenant. ### Get a specific user - [GET /rest/v2/users/{id}](https://apidocs.rhythms.ai/rest/v2/users/get_rest_v2_users_id.md): Retrieves detailed information about a specific user by their UUID ### Update a user - [PUT /rest/v2/users/{id}](https://apidocs.rhythms.ai/rest/v2/users/put_rest_v2_users_id.md): Updates an existing user with the specified attributes.