The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

R-CMD-check test-coverage

togglr

An R client for the Toggl Track API: start and stop timers from R or RStudio, read and write time entries, projects and clients, and download reports.

Reads never return silently truncated or empty results: HTTP errors are raised, the hourly quota and rate limits of the API are respected, and paginated reports are checked for completeness.

Documentation site: https://thinkr-open.github.io/togglr/

Installation

From CRAN:

install.packages("togglr")

The development version, from GitHub:

if (!requireNamespace("remotes")) install.packages("remotes")
remotes::install_github("ThinkR-open/togglr")

Set your Toggl API token

Your token is at the bottom of your Toggl profile page:

togglr::open_toggl_website_profile()

Store it once in your keyring:

library(togglr)
set_toggl_api_token("your_token_api")

Every function also accepts an api_token argument, and a workspace_id (the default workspace of your account otherwise, see get_workspaces()).

Track your time

toggl_start()   # a new entry, in a project named after your RStudio project
toggl_start(client = "my client", description = "what I'm doing",
            project_name = "my project", tags = c("dev", "R"))
toggl_stop()

get_current_duration()             # the running entry
get_current_project_task_detail()  # the tasks of the current project

RStudio addins ‘start toggl’ and ‘stop toggl’ are provided: bind them to keyboard shortcuts.

Reports

Reports come from the Toggl Reports API v3.

# every time entry of a period, one row per entry
get_detailled_report(since = "2026-01-01", until = "2026-03-31")
# only some users
get_detailled_report(since = "2026-01-01", until = "2026-03-31", user_ids = 123456)

get_summary_report(since = "2026-09-01", until = "2026-09-30")  # per user
get_weekly_report(since = "2026-09-07", until = "2026-09-13")   # per project and day
get_dashboard(since = "2026-09-01", until = "2026-09-30")       # per project

get_time_entries() reads your own entries of the last 3 months (a limit of the API); for older periods, use get_detailled_report(user_ids = ).

Long extractions, several processes

A few options, documented in ?togglr, tune the requests: for example options(togglr.min_interval = 16) spreads a long extraction to spare the hourly quota of the API, and options(togglr.state_file = "...") shares the pacing and the known quota between R processes (callr, future, targets workers).

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.