Everhour

Everhour is a time tracking and budgeting platform for teams that embeds timers and timesheets directly inside the project management tools teams already use - Asana, Trello, ClickUp, Jira, GitHub, Basecamp, Notion, Monday, Linear, and more. The Everhour REST API (api.everhour.com, X-Api-Key auth) gives programmatic access to time records, running timers, weekly timesheets and approvals, clock-in/clock-out timecards, projects and tasks, clients, invoices, expenses, resource scheduling, time off, and reporting dashboards, plus webhooks for time, timer, task, and project change events.

11 APIs 0 Features
Time TrackingTimesheetsProductivityProject ManagementBudgetingInvoicing

APIs

Everhour Time Records API

Read and write reported time - list time records across the whole team, per user, per task, or per project with date-range filters and pagination, add time to a task, and update...

Everhour Timers API

Control live time tracking - start a timer on a task with an optional comment, fetch the current user's running timer, list every running timer across the team, and stop the cur...

Everhour Timesheets and Timecards API

Weekly timesheets and attendance timecards - fetch user or team timesheets by week ID, submit a week for approval, approve or reject approval requests (optionally per day), disc...

Everhour Projects API

Manage projects and their sections - create, list, search, update, archive, and delete projects, configure billing (hourly, fixed fee, non-billable) with project or per-user rat...

Everhour Tasks API

Work with tasks - list and search tasks globally or within a project, create tasks in sections with assignees and due dates, update task details and custom field values, and set...

Everhour Schedule and Time Off API

Resource planner and time off management - list, create, update, and delete schedule assignments, create time off requests with approval workflow, and manage time off types and ...

Everhour Clients and Invoices API

Manage clients with money, time, or cost budgets, then bill them - create invoices from uninvoiced time and expenses in a date range, refresh line items, apply tax and discounts...

Everhour Expenses API

Track billable and non-billable expenses against projects and users - create, update, and delete expenses, manage expense categories (including unit-based categories like mileag...

Everhour Reports API

Dashboard reports aggregated by project, client, or team member - time, billable and non-billable time, time off, billable amounts, labor and expense costs, profit, and uninvoic...

Everhour Users API

Identity and team roster - fetch the profile that owns the API key (GET /users/me) and list all team members with their roles (admin, supervisor, member) and statuses.

Everhour Webhooks API

Subscribe to change notifications - create, get, update, and delete webhook subscriptions for project, task, section, client, estimate, timer started/stopped, and time updated e...

Collections

Pricing Plans

Everhour Plans Pricing

3 plans

PLANS

Rate Limits

Everhour Rate Limits

3 limits

RATE LIMITS

FinOps

Resources

🔗
TrustCenter
TrustCenter
🔗
DomainSecurity
DomainSecurity
🔑
Authentication
Authentication
🔗
Website
Website
🔗
Documentation
Documentation
🔗
LinkedIn
LinkedIn
💰
Pricing
Pricing
📰
Blog
Blog
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Everhour API
  version: '1.2'
request:
  auth:
    type: apikey
    apikey:
      key: X-Api-Key
      value: '{{apiKey}}'
      placement: header
items:
- info:
    name: Time Records
    type: folder
  items:
  - info:
      name: Get all time records
      type: http
    http:
      method: GET
      url: https://api.everhour.com/team/time
    docs: Returns time records across the whole team, optionally filtered by date range and paginated. Pass opts_include_billing=1
      to include billing data (admins with billing permissions only).
  - info:
      name: Get user time records
      type: http
    http:
      method: GET
      url: https://api.everhour.com/users/{userId}/time
    docs: Returns time records reported by a specific user.
  - info:
      name: Get task time records
      type: http
    http:
      method: GET
      url: https://api.everhour.com/tasks/{taskId}/time
    docs: Returns time records reported against a specific task.
  - info:
      name: Get project time records
      type: http
    http:
      method: GET
      url: https://api.everhour.com/projects/{projectId}/time
    docs: Returns time records reported against a specific project.
  - info:
      name: Add time
      type: http
    http:
      method: POST
      url: https://api.everhour.com/time
      body:
        type: json
        data: '{}'
    docs: Adds a time record to a task for a user on a given date.
  - info:
      name: Update time record
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/time/{timeId}
      body:
        type: json
        data: '{}'
    docs: Updates an existing time record.
  - info:
      name: Delete time record
      type: http
    http:
      method: DELETE
      url: https://api.everhour.com/time/{timeId}
    docs: Deletes a time record.
- info:
    name: Timers
    type: folder
  items:
  - info:
      name: Start timer
      type: http
    http:
      method: POST
      url: https://api.everhour.com/timers
      body:
        type: json
        data: '{}'
    docs: Starts a timer on a task for the current user.
  - info:
      name: Get running timer
      type: http
    http:
      method: GET
      url: https://api.everhour.com/timers/current
    docs: Returns the currently running timer for the current user.
  - info:
      name: Stop timer
      type: http
    http:
      method: DELETE
      url: https://api.everhour.com/timers/current
    docs: Stops the currently running timer and records the tracked time.
  - info:
      name: Get all team timers
      type: http
    http:
      method: GET
      url: https://api.everhour.com/team/timers
    docs: Returns all currently running timers across the team.
- info:
    name: Timecards
    type: folder
  items:
  - info:
      name: Get all timecards
      type: http
    http:
      method: GET
      url: https://api.everhour.com/timecards
    docs: Returns timecards for the whole team within a date range (last two weeks by default).
  - info:
      name: Get user timecards
      type: http
    http:
      method: GET
      url: https://api.everhour.com/users/{userId}/timecards
    docs: Returns timecards for a user within a date range (last two weeks by default).
  - info:
      name: Get timecard
      type: http
    http:
      method: GET
      url: https://api.everhour.com/users/{userId}/timecards/{date}
    docs: Returns the timecard for a user on a specific date.
  - info:
      name: Update timecard
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/users/{userId}/timecards/{date}
      body:
        type: json
        data: '{}'
    docs: Updates clock-in, clock-out, or break time on a timecard.
  - info:
      name: Delete timecard
      type: http
    http:
      method: DELETE
      url: https://api.everhour.com/users/{userId}/timecards/{date}
    docs: Deletes a user's timecard for a specific date.
  - info:
      name: Clock in
      type: http
    http:
      method: POST
      url: https://api.everhour.com/users/{userId}/timecards/clock-in
      body:
        type: json
        data: '{}'
    docs: Clocks a user in, creating or updating today's timecard.
  - info:
      name: Clock out
      type: http
    http:
      method: POST
      url: https://api.everhour.com/users/{userId}/timecards/clock-out
      body:
        type: json
        data: '{}'
    docs: Clocks a user out on today's timecard.
- info:
    name: Timesheets
    type: folder
  items:
  - info:
      name: Get user timesheets
      type: http
    http:
      method: GET
      url: https://api.everhour.com/users/{userId}/timesheets
    docs: Returns weekly timesheets for a user (most recent weeks first).
  - info:
      name: Get team timesheets
      type: http
    http:
      method: GET
      url: https://api.everhour.com/timesheets
    docs: Returns timesheets for the whole team for a given week. The week ID is the two-digit year plus the week number (for
      example 2535 for week 35 of 2025).
  - info:
      name: Approve week / request approval
      type: http
    http:
      method: POST
      url: https://api.everhour.com/timesheets/{timesheetId}/approval
      body:
        type: json
        data: '{}'
    docs: Submits a weekly timesheet for approval (or approves it directly when called by an admin). The timesheet ID is the
      user ID concatenated with the week ID.
  - info:
      name: Approve or reject approval request
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/timesheets/{timesheetId}/approval
      body:
        type: json
        data: '{}'
    docs: Approves or rejects a pending timesheet approval request, optionally per day of the week.
  - info:
      name: Discard your approval request
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/timesheets/{timesheetId}/discard-approval
      body:
        type: json
        data: '{}'
    docs: Discards a previously submitted timesheet approval request.
- info:
    name: Projects
    type: folder
  items:
  - info:
      name: Get all projects
      type: http
    http:
      method: GET
      url: https://api.everhour.com/projects
    docs: Returns projects, optionally filtered by name query or source integration platform.
  - info:
      name: Create project
      type: http
    http:
      method: POST
      url: https://api.everhour.com/projects
      body:
        type: json
        data: '{}'
    docs: Creates a native Everhour project.
  - info:
      name: Get project
      type: http
    http:
      method: GET
      url: https://api.everhour.com/projects/{projectId}
    docs: Returns a single project by ID.
  - info:
      name: Update project
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/projects/{projectId}
      body:
        type: json
        data: '{}'
    docs: Updates a project.
  - info:
      name: Delete project
      type: http
    http:
      method: DELETE
      url: https://api.everhour.com/projects/{projectId}
    docs: Deletes a project.
  - info:
      name: Archive or unarchive project
      type: http
    http:
      method: PATCH
      url: https://api.everhour.com/projects/{projectId}/archive
      body:
        type: json
        data: '{}'
    docs: Archives or unarchives a project.
  - info:
      name: Update project billing and budget
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/projects/{projectId}/billing
      body:
        type: json
        data: '{}'
    docs: Updates a project's billing type (non_billable, hourly, fixed_fee), rate configuration (project_rate or user_rate
      with per-user overrides), and budget (money, time, or costs; general, monthly, weekly, or daily periods).
  - info:
      name: Sync integration project
      type: http
    http:
      method: POST
      url: https://api.everhour.com/projects/{projectId}/sync
    docs: Instantly synchronizes a project from a connected integration (Asana, Trello, ClickUp, GitHub, and more) into Everhour
      instead of waiting for background sync. Safe to call multiple times; returns the existing project if already synced.
  - info:
      name: Get project sections
      type: http
    http:
      method: GET
      url: https://api.everhour.com/projects/{projectId}/sections
    docs: Returns the sections of a project.
  - info:
      name: Create section
      type: http
    http:
      method: POST
      url: https://api.everhour.com/projects/{projectId}/sections
      body:
        type: json
        data: '{}'
    docs: Creates a section in a project.
  - info:
      name: Get section
      type: http
    http:
      method: GET
      url: https://api.everhour.com/sections/{sectionId}
    docs: Returns a single section by ID.
  - info:
      name: Update section
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/sections/{sectionId}
      body:
        type: json
        data: '{}'
    docs: Updates a section.
  - info:
      name: Delete section
      type: http
    http:
      method: DELETE
      url: https://api.everhour.com/sections/{sectionId}
    docs: Deletes a section.
- info:
    name: Tasks
    type: folder
  items:
  - info:
      name: Get project tasks
      type: http
    http:
      method: GET
      url: https://api.everhour.com/projects/{projectId}/tasks
    docs: Returns the tasks of a project, paginated up to 250 per page.
  - info:
      name: Create task
      type: http
    http:
      method: POST
      url: https://api.everhour.com/projects/{projectId}/tasks
      body:
        type: json
        data: '{}'
    docs: Creates a task in a project section.
  - info:
      name: Search tasks
      type: http
    http:
      method: GET
      url: https://api.everhour.com/tasks/search
    docs: Searches tasks across all projects by name.
  - info:
      name: Search project tasks
      type: http
    http:
      method: GET
      url: https://api.everhour.com/projects/{projectId}/tasks/search
    docs: Searches tasks within a single project by name.
  - info:
      name: Get task
      type: http
    http:
      method: GET
      url: https://api.everhour.com/tasks/{taskId}
    docs: Returns a single task by ID. Pass opts_include_billing=1 to include billing data (admins with billing permissions
      only).
  - info:
      name: Update task
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/tasks/{taskId}
      body:
        type: json
        data: '{}'
    docs: Updates a task, including custom field values.
  - info:
      name: Delete task
      type: http
    http:
      method: DELETE
      url: https://api.everhour.com/tasks/{taskId}
    docs: Deletes a task.
  - info:
      name: Update task estimate
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/tasks/{taskId}/estimate
      body:
        type: json
        data: '{}'
    docs: Sets or updates the time estimate on a task (overall or per user).
  - info:
      name: Delete task estimate
      type: http
    http:
      method: DELETE
      url: https://api.everhour.com/tasks/{taskId}/estimate
    docs: Removes the time estimate from a task.
- info:
    name: Schedule
    type: folder
  items:
  - info:
      name: Get all assignments
      type: http
    http:
      method: GET
      url: https://api.everhour.com/resource-planner/assignments
    docs: Returns resource planner assignments, filterable by type, project, task, client, and date range.
  - info:
      name: Create assignment or time off
      type: http
    http:
      method: POST
      url: https://api.everhour.com/resource-planner/assignments
      body:
        type: json
        data: '{}'
    docs: Creates a resource planner assignment. With type time-off (plus timeOffType, timeOffPeriod, and approval fields)
      this same endpoint creates time off for a user.
  - info:
      name: Update assignment
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/resource-planner/assignments/{assignmentId}
      body:
        type: json
        data: '{}'
    docs: Updates a resource planner assignment.
  - info:
      name: Delete assignment
      type: http
    http:
      method: DELETE
      url: https://api.everhour.com/resource-planner/assignments/{assignmentId}
    docs: Deletes a resource planner assignment.
- info:
    name: Time Off
    type: folder
  items:
  - info:
      name: Get time off types
      type: http
    http:
      method: GET
      url: https://api.everhour.com/resource-planner/time-off-types
    docs: Returns the team's time off types (vacation, sick leave, and so on).
  - info:
      name: Create time off type
      type: http
    http:
      method: POST
      url: https://api.everhour.com/resource-planner/time-off-types
      body:
        type: json
        data: '{}'
    docs: Creates a time off type.
  - info:
      name: Update time off type
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/resource-planner/time-off-types/{typeId}
      body:
        type: json
        data: '{}'
    docs: Updates a time off type.
  - info:
      name: Delete time off type
      type: http
    http:
      method: DELETE
      url: https://api.everhour.com/resource-planner/time-off-types/{typeId}
    docs: Deletes a time off type.
  - info:
      name: Get all allocations
      type: http
    http:
      method: GET
      url: https://api.everhour.com/allocations
    docs: Returns time off allocations (accrual balances) for team members.
  - info:
      name: Create allocation
      type: http
    http:
      method: POST
      url: https://api.everhour.com/allocations
      body:
        type: json
        data: '{}'
    docs: Creates a time off allocation for one or more users.
  - info:
      name: Update allocation
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/allocations/{allocationId}
      body:
        type: json
        data: '{}'
    docs: Updates a time off allocation.
  - info:
      name: Delete allocation
      type: http
    http:
      method: DELETE
      url: https://api.everhour.com/allocations/{allocationId}
    docs: Deletes a time off allocation.
- info:
    name: Clients
    type: folder
  items:
  - info:
      name: Get all clients
      type: http
    http:
      method: GET
      url: https://api.everhour.com/clients
    docs: Returns clients, optionally filtered by name query.
  - info:
      name: Create client
      type: http
    http:
      method: POST
      url: https://api.everhour.com/clients
      body:
        type: json
        data: '{}'
    docs: Creates a client and optionally links projects to it.
  - info:
      name: Get client
      type: http
    http:
      method: GET
      url: https://api.everhour.com/clients/{clientId}
    docs: Returns a single client by ID.
  - info:
      name: Update client
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/clients/{clientId}
      body:
        type: json
        data: '{}'
    docs: Updates a client.
  - info:
      name: Update client budget
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/clients/{clientId}/budget
      body:
        type: json
        data: '{}'
    docs: Sets or updates a client budget - money, time, or costs based, with general, monthly, weekly, or daily periods,
      thresholds, and overbudget protection.
  - info:
      name: Delete client budget
      type: http
    http:
      method: DELETE
      url: https://api.everhour.com/clients/{clientId}/budget
    docs: Removes the budget from a client.
- info:
    name: Invoices
    type: folder
  items:
  - info:
      name: Get all invoices
      type: http
    http:
      method: GET
      url: https://api.everhour.com/invoices
    docs: Returns all invoices.
  - info:
      name: Get invoice
      type: http
    http:
      method: GET
      url: https://api.everhour.com/invoices/{invoiceId}
    docs: Returns a single invoice by ID.
  - info:
      name: Update invoice
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/invoices/{invoiceId}
      body:
        type: json
        data: '{}'
    docs: Updates invoice details, tax, discount, and line items.
  - info:
      name: Delete invoice
      type: http
    http:
      method: DELETE
      url: https://api.everhour.com/invoices/{invoiceId}
    docs: Deletes an invoice.
  - info:
      name: Create invoice
      type: http
    http:
      method: POST
      url: https://api.everhour.com/clients/{clientId}/invoices
      body:
        type: json
        data: '{}'
    docs: Creates an invoice for a client from uninvoiced time and expenses within a date range.
  - info:
      name: Refresh invoice line items
      type: http
    http:
      method: POST
      url: https://api.everhour.com/invoices/{invoiceId}/reset-time
      body:
        type: json
        data: '{}'
    docs: Rebuilds the invoice line items from current time and expense data.
  - info:
      name: Mark invoice as draft, sent, or paid
      type: http
    http:
      method: POST
      url: https://api.everhour.com/invoices/{invoiceId}/{status}
    docs: Transitions an invoice between draft, sent, and paid statuses.
  - info:
      name: Export invoice to Xero, QuickBooks, or FreshBooks
      type: http
    http:
      method: POST
      url: https://api.everhour.com/invoices/{invoiceId}/export
    docs: Exports the invoice to a connected accounting integration.
- info:
    name: Expenses
    type: folder
  items:
  - info:
      name: Get all expenses
      type: http
    http:
      method: GET
      url: https://api.everhour.com/expenses
    docs: Returns all expenses.
  - info:
      name: Create expense
      type: http
    http:
      method: POST
      url: https://api.everhour.com/expenses
      body:
        type: json
        data: '{}'
    docs: Creates an expense in a category, optionally linked to a project and user.
  - info:
      name: Update expense
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/expenses/{expenseId}
      body:
        type: json
        data: '{}'
    docs: Updates an expense.
  - info:
      name: Delete expense
      type: http
    http:
      method: DELETE
      url: https://api.everhour.com/expenses/{expenseId}
    docs: Deletes an expense.
  - info:
      name: Get all expense categories
      type: http
    http:
      method: GET
      url: https://api.everhour.com/expenses/categories
    docs: Returns all expense categories.
  - info:
      name: Create expense category
      type: http
    http:
      method: POST
      url: https://api.everhour.com/expenses/categories
      body:
        type: json
        data: '{}'
    docs: Creates an expense category, optionally unit-based (for example mileage).
  - info:
      name: Update expense category
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/expenses/categories/{categoryId}
      body:
        type: json
        data: '{}'
    docs: Updates an expense category.
  - info:
      name: Delete expense category
      type: http
    http:
      method: DELETE
      url: https://api.everhour.com/expenses/categories/{categoryId}
    docs: Deletes an expense category, optionally moving or removing its expenses.
- info:
    name: Reports
    type: folder
  items:
  - info:
      name: Projects report
      type: http
    http:
      method: GET
      url: https://api.everhour.com/dashboards/projects
    docs: Returns aggregated time, billable amounts, costs, profit, and expense metrics per project. Time columns are in seconds
      and amounts in cents.
  - info:
      name: Clients report
      type: http
    http:
      method: GET
      url: https://api.everhour.com/dashboards/clients
    docs: Returns aggregated time, billable amounts, costs, profit, and expense metrics per client.
  - info:
      name: Users report
      type: http
    http:
      method: GET
      url: https://api.everhour.com/dashboards/users
    docs: Returns aggregated time, time off, billable amounts, costs, and profit metrics per team member.
- info:
    name: Users
    type: folder
  items:
  - info:
      name: Get current user
      type: http
    http:
      method: GET
      url: https://api.everhour.com/users/me
    docs: Returns the user profile that owns the API key.
  - info:
      name: Get all users
      type: http
    http:
      method: GET
      url: https://api.everhour.com/team/users
    docs: Returns all team members with roles and statuses.
- info:
    name: Webhooks
    type: folder
  items:
  - info:
      name: Create webhook
      type: http
    http:
      method: POST
      url: https://api.everhour.com/hooks
      body:
        type: json
        data: '{}'
    docs: Creates a webhook subscription. Everhour sends a verification POST with an X-Hook-Secret header to the target URL;
      the target must echo the header back to complete verification. Supported events cover project, task, timer, time, section,
      client, and estimate changes.
  - info:
      name: Get webhook
      type: http
    http:
      method: GET
      url: https://api.everhour.com/hooks/{hookId}
    docs: Returns a webhook subscription by ID.
  - info:
      name: Update webhook
      type: http
    http:
      method: PUT
      url: https://api.everhour.com/hooks/{hookId}
      body:
        type: json
        data: '{}'
    docs: Updates a webhook subscription (re-triggers target URL verification).
  - info:
      name: Delete webhook
      type: http
    http:
      method: DELETE
      url: https://api.everhour.com/hooks/{hookId}
    docs: Deletes a webhook subscription.