Hubstaff

Hubstaff is a time tracking and workforce analytics platform for remote, hybrid, and field teams. The Hubstaff API v2 provides read and write access to tracked time (10-minute activity blocks and daily aggregates), time entries, timesheets and approvals, time off, attendance schedules and shifts, organizations, members, teams, projects, tasks, clients, invoices, team payments, screenshots, app and URL usage, and webhooks - authenticated with OAuth 2.0 / OpenID Connect or personal access tokens.

9 APIs 0 Features
Time TrackingTimesheetsWorkforce ManagementProductivityEmployee MonitoringProject ManagementPayroll

APIs

Hubstaff Activities and Time Tracking API

Tracked time as 10-minute activity blocks with keyboard and mouse activity percentages, pre-aggregated daily activities, and the most recent activity per member - filterable by ...

Hubstaff Timesheets and Time Entries API

Create time entries for users, list organization timesheets (aggregate approval records), move timesheets through the open, submitted, approved, and denied statuses, and audit m...

Hubstaff Organizations and Teams API

Manage organizations, seats, members and their pay and bill rates, teams and team membership, and invites - the workforce structure that all tracked time hangs off of.

Hubstaff Projects and Tasks API

Create and manage projects (including budgets and project members) and tasks (to-dos) at the project and organization level. Tasks synced from third-party integrations are read-...

Hubstaff Users API

Retrieve the authenticated user (/users/me) and individual user profiles by ID.

Hubstaff Time Off and Attendance API

Time off requests with approval workflow and balance previews, time off policies and balances, attendance schedules (expected shifts, including repeating schedules), actual cloc...

Hubstaff Clients, Invoices, and Payments API

Manage the clients projects are billed to, list client invoices, and list team payments (payroll) generated from tracked time.

Hubstaff Screenshots and App Tracking API

Retrieve screenshots captured while tracking time, application and URL usage (raw and daily aggregates), and read or update the organization's app and URL tracking settings.

Hubstaff Webhooks API

Subscribe to real-time HTTP event notifications at the organization, project, or user level - timer.start, timer.stop, project.create, task.create, task.assign, schedule and shi...

Collections

Pricing Plans

Hubstaff Plans Pricing

6 plans

PLANS

Rate Limits

Hubstaff Rate Limits

4 limits

RATE LIMITS

FinOps

Resources

🔗
VulnerabilityDisclosure
VulnerabilityDisclosure
🔗
DomainSecurity
DomainSecurity
🔑
Authentication
Authentication
👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
💰
Pricing
Pricing
💬
Support
Support
📰
Blog
Blog
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Hubstaff API
  version: '2.0'
request:
  auth:
    type: bearer
    token: '{{accessToken}}'
items:
- info:
    name: Organizations
    type: folder
  items:
  - info:
      name: List organizations
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations
    docs: Returns a collection of organizations the authenticated user is an active member of.
  - info:
      name: Create organization
      type: http
    http:
      method: POST
      url: https://api.hubstaff.com/v2/organizations
      body:
        type: json
        data: '{}'
    docs: 'Creates a new organization.


      Returns the created organization.'
  - info:
      name: Get organization
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id
      params:
      - name: organization_id
        value: ''
        type: path
        description: Organization ID
    docs: Returns the organization with the given ID.
  - info:
      name: Get organization seats
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/seats
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
    docs: "Returns billing seat counters for the specified organization.\n\n- Paid seats are the total number of seats you\
      \ are currently paying for.\n- Occupied is the total number of seats that are currently filled.\n- Open seats will be\
      \ filled automatically when new members are added.\n  Any open seats will be removed automatically when a new billing\
      \ cycle starts,\n  bringing down the number of paid seats to match the number of seats occupied."
- info:
    name: Members
    type: folder
  items:
  - info:
      name: List organization members
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/members
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
    docs: "Returns a collection of members for the given organization.\n\nResults can be filtered by search, user IDs, membership\
      \ role, and date range.\n\n*trackable* - Whether the user can track time.  This is one of 3 values\n- *false* -- meaning\
      \ tracking has been explicitly disabled for this user regardless of their role\n- *true* -- meaning they are allowed\
      \ to track time\n- *viewer* -- meaning they are allowed to track time, however as they are only a project viewer (or\
      \ no\n  memberships) they implicitly can n"
  - info:
      name: Create organization member
      type: http
    http:
      method: POST
      url: https://api.hubstaff.com/v2/organizations/:organization_id/members
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
      body:
        type: json
        data: '{}'
    docs: 'Creates a new user and adds them to the organization as a member.


      Returns the created member.


      Available roles:

      - organization_manager - Organization manager

      - project_manager - Project manager

      - project_user - Project user

      - project_viewer - Project viewer


      Available pay periods:

      - none - Disables automatic payments

      - weekly - Pay users weekly

      - twice_per_month - Pay users twice a month

      - biweekly - Pay users bi-weekly

      - monthly - Pay users monthly'
  - info:
      name: Update organization members
      type: http
    http:
      method: PUT
      url: https://api.hubstaff.com/v2/organizations/:organization_id/update_members
      params:
      - name: organization_id
        value: ''
        type: path
        description: Organization ID
      body:
        type: json
        data: '{}'
    docs: 'Updates organization members.


      Returns {success: true} on success.


      Only pass in the members you want to change.


      Available roles:

      - user - Member role determined by project membership

      - manager - Organization manager

      - owner - Organization owner

      - remove - Removes user from organization (and all projects/teams)


      Limits: Specify full limits config. Missing limits will be removed. Empty "limits" removes all limits.


      Projects: Specify project memberships to change. Available project roles: viewer,'
  - info:
      name: List team members
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/teams/:team_id/members
      params:
      - name: team_id
        value: ''
        type: path
        description: Team ID
    docs: 'Returns a collection of members for the given team.


      Membership roles:

      - manager - Can track time, view all data, change settings, and manage membership

      - user - Can track time and view only their own data

      - viewer - Can view reports but cannot make changes'
  - info:
      name: List project members
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/projects/:project_id/members
      params:
      - name: project_id
        value: ''
        type: path
        description: ''
    docs: 'Returns a collection of members for the given project.


      Results can be filtered by search, user IDs, membership role, and date range.


      *membership_role* - The permission role the member has in this project

      - *manager* - An manager can track time, see data for any member within the project, can change settings, and manage
      membership within the project

      - *user* - A user can track time against the project and see only their own data within the project

      - *viewer* - A viewer can access reports based '
- info:
    name: Invites
    type: folder
  items:
  - info:
      name: List organization invites
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/invites
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
    docs: 'Returns a collection of invites for the given organization.


      Results can be filtered by email and status.'
  - info:
      name: Create invite
      type: http
    http:
      method: POST
      url: https://api.hubstaff.com/v2/organizations/:organization_id/invites
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
      body:
        type: json
        data: '{}'
    docs: 'Creates a new invite.


      Returns the created invite.


      Note: If there is an account for the email in Hubstaff, the invite will be auto accepted.

      Note: There is a rate limit on how many invites you may create.


      Available roles:

      - organization_manager - Invited as an organization manager

      - project_manager - Invited as a project manager

      - project_user - Invited as a project user

      - project_viewer - Invited as a project viewer


      If no project_ids are set, any project_* role will default to project_viewer'
- info:
    name: Teams
    type: folder
  items:
  - info:
      name: List organization teams
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/teams
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
    docs: Returns a collection of teams for the given organization.
  - info:
      name: Create team
      type: http
    http:
      method: POST
      url: https://api.hubstaff.com/v2/organizations/:organization_id/teams
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
      body:
        type: json
        data: '{}'
    docs: 'Creates a new team.


      Returns the created team.


      Only name is required. Members can optionally be added with roles: viewer, user, or manager.


      Note: When a member lead is set to true, the role is forced to manager.'
  - info:
      name: Get team
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/teams/:team_id
      params:
      - name: team_id
        value: ''
        type: path
        description: Team ID
    docs: Returns the team with the given ID.
- info:
    name: Users
    type: folder
  items:
  - info:
      name: Get current user
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/users/me
    docs: Returns the authenticated user.
  - info:
      name: Get user
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/users/:user_id
      params:
      - name: user_id
        value: ''
        type: path
        description: User ID
    docs: Returns the user with the given ID.
- info:
    name: Activities
    type: folder
  items:
  - info:
      name: List organization activities
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/activities
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
      - name: time_slot[start]
        value: ''
        type: query
        description: Start time (ISO 8601)
      - name: time_slot[stop]
        value: ''
        type: query
        description: Stop time (ISO 8601, Exclusive)
    docs: 'Returns a collection of activities (10-minute time blocks) for the given organization.


      Results can be filtered by user, task, project, and time range (time_slot[start], time_slot[stop]).


      For aggregated daily data, use the daily_activities endpoint instead.


      Note: Data may be delayed up to 20 minutes.

      Note: Date range limit is 7 days. Earliest date is 6 months ago.'
  - info:
      name: List organization daily activities
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/activities/daily
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
      - name: date[start]
        value: ''
        type: query
        description: Start date (ISO 8601)
      - name: date[stop]
        value: ''
        type: query
        description: Stop date (ISO 8601, Inclusive)
    docs: 'Returns daily aggregated time tracking data for the given organization.


      Results can be filtered by user_ids[], task_ids[], project_ids[], and date[start]/[stop]. Data is aggregated by organization
      timezone date.


      Note: Date range limit is 31 days. Earliest date is 3 years ago.'
  - info:
      name: List organization last activities
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/last_activities
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
    docs: Returns the most recent activity for each member in the organization.
  - info:
      name: List project activities
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/projects/:project_id/activities
      params:
      - name: project_id
        value: ''
        type: path
        description: ''
      - name: time_slot[start]
        value: ''
        type: query
        description: Start time (ISO 8601)
      - name: time_slot[stop]
        value: ''
        type: query
        description: Stop time (ISO 8601, Exclusive)
    docs: 'Returns a collection of activities (10-minute time blocks) for the given project.


      Results can be filtered by user, task, project, and time range (time_slot[start], time_slot[stop]).


      For aggregated daily data, use the daily_activities endpoint instead.


      Note: Data may be delayed up to 20 minutes.

      Note: Date range limit is 7 days. Earliest date is 6 months ago.'
  - info:
      name: List project daily activities
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/projects/:project_id/activities/daily
      params:
      - name: project_id
        value: ''
        type: path
        description: ''
      - name: date[start]
        value: ''
        type: query
        description: Start date (ISO 8601)
      - name: date[stop]
        value: ''
        type: query
        description: Stop date (ISO 8601, Inclusive)
    docs: 'Returns daily aggregated time tracking data for the given project.


      Results can be filtered by user_ids[], task_ids[], project_ids[], and date[start]/[stop]. Data is aggregated by organization
      timezone date.


      Note: Date range limit is 31 days. Earliest date is 3 years ago.'
- info:
    name: Time Entries
    type: folder
  items:
  - info:
      name: Create time entry
      type: http
    http:
      method: POST
      url: https://api.hubstaff.com/v2/users/:user_id/time_entries
      params:
      - name: user_id
        value: ''
        type: path
        description: ''
      body:
        type: json
        data: '{}'
    docs: 'Creates a new time entry.


      Returns {success: true} on success.


      Note: Manual time entries that require approval cannot be added through the API.'
- info:
    name: Timesheets
    type: folder
  items:
  - info:
      name: List organization timesheets
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/timesheets
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
    docs: 'Returns a collection of timesheets (aggregate approval records) for the given organization.


      Results can be filtered by date[start]/[stop], approved[start], and status.


      Note: Timesheets are aggregate records used by the timesheet approval system, not individual time entries.'
  - info:
      name: Update timesheet status
      type: http
    http:
      method: PUT
      url: https://api.hubstaff.com/v2/timesheets/:timesheet_id
      params:
      - name: timesheet_id
        value: ''
        type: path
        description: Timesheet ID
      body:
        type: json
        data: '{}'
    docs: 'Updates a timesheet status or updates the denial reason on an already denied timesheet.


      Allowed statuses are open, submitted, approved, and denied. A denial_reason is required when transitioning a timesheet
      to denied.


      Approving a timesheet can require explicit confirmation when the period has pending manual time requests or pending
      time off requests.

      If pending manual time requests would be denied, the endpoint returns 422 with error_code 14905; repeat the request
      with confirm_pending_manual_t'
- info:
    name: Time Edit Logs
    type: folder
  items:
  - info:
      name: List organization time edit logs
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/time_edit_logs
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
      - name: created[start]
        value: ''
        type: query
        description: Start time (ISO 8601)
      - name: created[stop]
        value: ''
        type: query
        description: Stop time (ISO 8601, exclusive)
    docs: 'Returns a collection of time edit logs (manual time additions/edits/deletions) for the given organization.


      Results can be filtered by created[start]/[stop], user_ids[], task_ids[], and project_ids[].


      Note: Date range limit is 31 days. Earliest date is 3 years ago.'
- info:
    name: Projects
    type: folder
  items:
  - info:
      name: List organization projects
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/projects
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
    docs: 'Returns a collection of projects for the given organization.


      Results can be filtered by status (active/archived/all) and project_ids[].'
  - info:
      name: Create project
      type: http
    http:
      method: POST
      url: https://api.hubstaff.com/v2/organizations/:organization_id/projects
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
      body:
        type: json
        data: '{}'
    docs: 'Creates a new project.


      Returns the created project.


      Only name is required. Members can optionally be added with roles: viewer, user, or manager.'
  - info:
      name: Get project
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/projects/:project_id
      params:
      - name: project_id
        value: ''
        type: path
        description: Project ID
    docs: Returns the project with the given ID.
  - info:
      name: Update project
      type: http
    http:
      method: PUT
      url: https://api.hubstaff.com/v2/projects/:project_id
      params:
      - name: project_id
        value: ''
        type: path
        description: Project ID
      body:
        type: json
        data: '{}'
    docs: 'Updates a project.


      Returns the updated project.


      Only pass in the fields you want to change. To unset the budget, specify null. To update the budget, you must specify
      the complete budget configuration.


      When restoring an archived project, you can only change the status column.


      Rate handling for pay_rate and bill_rate:

      - To remove a rate, pass null (e.g., pay_rate: null)

      - Custom user rates take precedence over default project rates

      - To apply default project rate to a user, remove their custom'
- info:
    name: Tasks
    type: folder
  items:
  - info:
      name: List organization tasks
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/tasks
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
    docs: 'Returns a collection of tasks (to-dos) for the given organization.


      Results can be filtered by status[] (active/completed/deleted), user_ids[], project_ids[], and global_todo_ids[].'
  - info:
      name: List project tasks
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/projects/:project_id/tasks
      params:
      - name: project_id
        value: ''
        type: path
        description: ''
    docs: 'Returns a collection of tasks (to-dos) for the given project.


      Results can be filtered by status[] (active/completed/deleted), user_ids[], project_ids[], and global_todo_ids[].'
  - info:
      name: Create task
      type: http
    http:
      method: POST
      url: https://api.hubstaff.com/v2/projects/:project_id/tasks
      params:
      - name: project_id
        value: ''
        type: path
        description: ''
      body:
        type: json
        data: '{}'
    docs: 'Creates a new task for this project.


      Returns the created task.


      Note: If this project is integrated with a 3rd party tool, you must create the task in that tool instead.'
  - info:
      name: Get task
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/tasks/:task_id
      params:
      - name: task_id
        value: ''
        type: path
        description: Task ID
    docs: Returns the task with the given ID.
  - info:
      name: Update task
      type: http
    http:
      method: PUT
      url: https://api.hubstaff.com/v2/tasks/:task_id
      params:
      - name: task_id
        value: ''
        type: path
        description: Task ID
      body:
        type: json
        data: '{}'
    docs: 'Updates a task.


      Returns the updated task.


      Only pass in the fields you want to change. Requires passing lock_version from the task fetch.


      Note: Only simple todos can be updated. 3rd party tasks must be updated in their system.'
  - info:
      name: Delete task
      type: http
    http:
      method: DELETE
      url: https://api.hubstaff.com/v2/tasks/:task_id
      params:
      - name: task_id
        value: ''
        type: path
        description: Task ID
    docs: 'Deletes a task.


      Note: Only simple todos can be deleted. 3rd party tasks must be deleted in their system.'
- info:
    name: Clients
    type: folder
  items:
  - info:
      name: List organization clients
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/clients
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
    docs: 'Returns a collection of clients for the given organization.


      Results can be filtered by status.'
  - info:
      name: Create client
      type: http
    http:
      method: POST
      url: https://api.hubstaff.com/v2/organizations/:organization_id/clients
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
      body:
        type: json
        data: '{}'
    docs: 'Creates a new client.


      Returns the created client.'
  - info:
      name: Get client
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/clients/:client_id
      params:
      - name: client_id
        value: ''
        type: path
        description: Client ID
    docs: Returns the client with the given ID.
  - info:
      name: Update client
      type: http
    http:
      method: PUT
      url: https://api.hubstaff.com/v2/clients/:client_id
      params:
      - name: client_id
        value: ''
        type: path
        description: Client ID
      body:
        type: json
        data: '{}'
    docs: 'Updates a client.


      Returns the updated client.


      Only pass in the fields you want to change. To unset the budget, specify null as the value. To update the budget, you
      must specify the complete budget configuration. To clear invoice_notes or net_terms (to use organization defaults),
      specify null as the value.'
- info:
    name: Client Invoices
    type: folder
  items:
  - info:
      name: List organization client invoices
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/client_invoices
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
    docs: 'Returns invoices sent to clients for the given organization.


      Results can be filtered by client_ids[], issue_date[start]/[stop], and status. Use include_line_items=true to include
      invoice line items.'
- info:
    name: Team Payments
    type: folder
  items:
  - info:
      name: List organization team payments
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/team_payments
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
    docs: 'Returns a collection of team payments (payroll disbursements) for the given organization.


      Results can be filtered by created[start]/[stop], user_ids[], and project_ids[].


      Note: If date filters are not provided, defaults to the last 3 years. Earliest date is 3 years ago.'
- info:
    name: Time Off
    type: folder
  items:
  - info:
      name: List organization time off requests
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/time_off_requests
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
    docs: 'Returns a collection of time off requests for the given organization.


      Results can be filtered by created[start]/[stop], starts_at[start]/[stop], approved_at[start]/[stop], and user_ids[].


      Use include[] to sideload related users and time_off_policies.'
  - info:
      name: Create time off request
      type: http
    http:
      method: POST
      url: https://api.hubstaff.com/v2/organizations/:organization_id/time_off_requests
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
      body:
        type: json
        data: '{}'
    docs: 'Creates a new time off request.


      Returns the created time off request with a balance_preview showing the policy balance impact.


      time_off_request_days must include one entry for every date from starts_at to stops_at. Each entry requires a date and
      amount_used in seconds (typically 28800 for an 8-hour day). Set amount_used to 0 for excluded weekend or holiday days.


      Set require_no_shift_overlap to true to reject the request if it overlaps with scheduled attendance shifts.


      remove_shifts deletes o'
  - info:
      name: Get time off request
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/time_off_requests/:time_off_request_id
      params:
      - name: time_off_request_id
        value: ''
        type: path
        description: Time off request ID
    docs: 'Returns the time off request with the given ID.


      Includes time_off_request_days with per-day breakdown of dates, amounts, and holiday/paid status.


      Also includes balance_preview showing the policy balance impact.'
  - info:
      name: Update time off request
      type: http
    http:
      method: PUT
      url: https://api.hubstaff.com/v2/time_off_requests/:time_off_request_id
      params:
      - name: time_off_request_id
        value: ''
        type: path
        description: Time off request ID
      body:
        type: json
        data: '{}'
    docs: 'Updates a time off request''s details (dates, message, days, policy).


      This is a full replacement — all fields must be provided, including time_off_request_days with one entry per date (amount_used
      in seconds, typically 28800 for an 8-hour day).


      Approved, paid, or partially paid requests cannot be edited.


      If the request was denied, updating it automatically resubmits it (status → submitted).


      If the policy does not require approval, the request is auto-approved on update.


      Set require_no_shift_'
  - info:
      name: Delete time off request
      type: http
    http:
      method: DELETE
      url: https://api.hubstaff.com/v2/time_off_requests/:time_off_request_id
      params:
      - name: time_off_request_id
        value: ''
        type: path
        description: Time off request ID
    docs: 'Deletes the time off request.


      Approved or paid time off requests cannot be deleted.'
  - info:
      name: List organization time off policies
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/time_off_policies
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
    docs: Returns a collection of time off policies for the given organization.
  - info:
      name: List organization time off balances
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/time_off_balances
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
    docs: 'Returns time off balances for the given organization.


      Each entry represents one user''s balance for one time off policy in the requested year.


      Use `year` to query balances for a specific year (defaults to current year in the organization''s timezone).


      Use `include[]` to sideload related users and time_off_policies.'
- info:
    name: Attendance
    type: folder
  items:
  - info:
      name: List organization attendance schedules
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/attendance_schedules
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
      - name: date[start]
        value: ''
        type: query
        description: Start date (ISO 8601)
      - name: date[stop]
        value: ''
        type: query
        description: Stop date (ISO 8601, Inclusive)
    docs: 'Returns a collection of attendance schedules (expected work shifts) for the given organization.


      Use date[start] and date[stop] to filter schedules that cover the specified date range. Repeating schedules are included
      if any occurrence falls within the range.'
  - info:
      name: Create attendance schedule
      type: http
    http:
      method: POST
      url: https://api.hubstaff.com/v2/organizations/:organization_id/attendance_schedules
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
      body:
        type: json
        data: '{}'
    docs: 'Creates an expected work shift for a user.


      Returns the created attendance schedule.


      For repeating schedules, specify repeat_schedule (weekly/bi_weekly) and weekdays. Use repeat_until to set an end date.
      Use excluded_dates to skip specific dates.'
  - info:
      name: List organization attendance shifts
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/attendance_shifts
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
      - name: date[start]
        value: ''
        type: query
        description: Start date (ISO 8601)
      - name: date[stop]
        value: ''
        type: query
        description: Stop date (ISO 8601, Inclusive)
    docs: 'Returns actual work shifts (clock-in/clock-out records) for the given organization.


      Use date[start] and date[stop] to filter shifts that fall within the specified date range.


      Note: The maximum allowed difference between date[start] and date[stop] is 31 days.

      Data is only available within organization’s retention period.

      If date[start] falls outside this window, the request will fail.'
  - info:
      name: List organization holidays
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/holidays
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
    docs: 'Returns a collection of holidays for the given organization.


      Results can be filtered by created[start]/[stop] and date[start]/[stop].'
- info:
    name: Screenshots
    type: folder
  items:
  - info:
      name: List organization screenshots
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/screenshots
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
      - name: time_slot[start]
        value: ''
        type: query
        description: Start time (ISO 8601)
      - name: time_slot[stop]
        value: ''
        type: query
        description: Stop time (ISO 8601, Exclusive)
    docs: 'Returns a collection of screenshots for the given organization.


      Results can be filtered by user_ids[], project_ids[], and time_slot[start]/[stop].


      Note: Date range limit is 7 days. Earliest date is 6 months ago.'
  - info:
      name: Get screenshot
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/screenshots/:screenshot_id
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
      - name: screenshot_id
        value: ''
        type: path
        description: Screenshot ID
    docs: Returns the screenshot with the given ID.
- info:
    name: App & URL Tracking
    type: folder
  items:
  - info:
      name: List organization tool usages
      type: http
    http:
      method: GET
      url: https://api.hubstaff.com/v2/organizations/:organization_id/tool_usages
      params:
      - name: organization_id
        value: ''
        type: path
        description: ''
      - name: time_slot[start]
        value: ''
        type: query
        description: Start time (ISO 8601)
      - name: time_slot[stop]
        value: ''
        type: query
        description: Stop time (ISO 8601, Exclusive)
    docs: 'Returns a collection of tool usages (productivity tool usage) for the given organization.


      Results can be filtered by time_slot[start]/[stop], user_ids[], task_ids[], project_ids[], and tool_type.


      The preferred endpo

# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hubstaff/refs/heads/main/apis.yml