Everhour
PROJECT MANAGEMENT · TASKS
Projects, tasks, time records, timers, and invoices in the account they connected.
Acts as the person, not as itself
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Credentials never touch the agent
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Every call on the record
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
everhour_delete_allocations_by_allocation_idWRITEDelete Allocation. DELETE /allocations/{allocation_id}. Delete a time-off allocation.
everhour_delete_attachments_by_attachment_idWRITEDelete Attachment. DELETE /attachments/{attachment_id}. Delete an attachment and its underlying file.
everhour_delete_clients_by_client_idWRITEDelete Client. DELETE /clients/{client_id}. Delete a client.
everhour_delete_clients_by_client_id_budgetWRITEDelete Client Budget. DELETE /clients/{client_id}/budget. Remove the budget attached to a client. The client itself is kept.
everhour_delete_expenses_by_expense_idWRITEDelete Expense. DELETE /expenses/{expense_id}. Delete an expense entry. Attached files are also removed.
everhour_delete_expenses_categories_by_category_idWRITEDelete Category. DELETE /expenses/categories/{category_id}. Delete an expense category. Expenses already assigned to it are kept but become uncategorized.
everhour_delete_fields_by_field_idWRITEDelete Field. DELETE /fields/{field_id}. Delete a custom field. Existing task values for that field are discarded.
everhour_delete_hooks_by_hook_idWRITEDelete Webhook. DELETE /hooks/{hook_id}. Delete a webhook subscription. Stops further deliveries; no event is sent for the deletion itself.
everhour_delete_invoices_by_invoice_idWRITEDelete Invoice. DELETE /invoices/{invoice_id}. Delete an invoice. Time records attached to the invoice are released and become billable again.
everhour_delete_projects_by_project_idWRITEDelete Project. DELETE /projects/{project_id}. Delete a project, its tasks, and all associated time records. This is irreversible.
everhour_delete_resource_planner_assignments_by_assignment_idWRITEDelete Assignment. DELETE /resource-planner/assignments/{assignment_id}. Delete a schedule assignment. You can include an optional `reason` (max 1000 characters) in the request body.
everhour_delete_resource_planner_time_off_types_by_type_idWRITEDelete Time Off Type. DELETE /resource-planner/time-off-types/{type_id}. Delete a time-off type. Existing time-off entries that reference it are kept.
everhour_delete_sections_by_section_idWRITEDelete Section. DELETE /sections/{section_id}. Delete a section. Tasks in the section are kept but become section-less.
everhour_delete_tasks_by_task_idWRITEDelete Task. DELETE /tasks/{task_id}. Delete a task and all of its time records.
everhour_delete_tasks_by_task_id_estimateWRITEDelete Task Estimate. DELETE /tasks/{task_id}/estimate. Remove a task's estimate.
everhour_delete_time_by_time_idWRITEDelete Time Record. DELETE /time/{time_id}. Remove a time record by setting its duration to zero. The history trail is preserved; the row no longer appears in time listings, which filter for `time > 0`.
everhour_delete_timers_currentWRITEStop Timer. DELETE /timers/current. Stop the authenticated user's currently running timer. The accumulated duration is committed to a time record on the timer's task for the current date and returned in the response.
everhour_delete_users_by_user_id_timecards_by_dateWRITEDelete Timecard. DELETE /users/{user_id}/timecards/{date}. Delete a user's timecard entry for a specific date.
everhour_get_allocationsREADGet All Allocations. GET /allocations. List per-user time-off allocations (e.g. annual vacation balances).
everhour_get_attachments_by_attachment_token_downloadREADDownload Attachment. GET /attachments/{attachment_token}/download. Download the binary contents of an attachment by its token. The response is the raw file, not JSON. Returned as JSON: content_type, content_length and the bytes as content_base64 when the file is at most 4 MB; a larger file is described in `detail` and not carried.
everhour_get_clientsREADGet All Clients. GET /clients. Search Clients by Name using the query parameter.
everhour_get_clients_by_client_idREADGet Client. GET /clients/{client_id}. Retrieve a single client by ID.
everhour_get_dashboards_clientsREADClients Report. GET /dashboards/clients. Aggregated client report. Same filters and units as `GET /dashboards/projects` — see Concepts.
everhour_get_dashboards_projectsREADProjects Report. GET /dashboards/projects. Aggregated project report. Returns time, billing, and budget figures grouped by project. Filter the result with `date.gte`, `date.lte`, `projectId`, `clientId`, and `memberId` query parameters — see Dates for parameter formats. Time columns are in seconds, amounts in cents (see Concepts).
everhour_get_dashboards_usersREADUsers Report. GET /dashboards/users. Aggregated member report. Same filters and units as `GET /dashboards/projects` — see Concepts.
everhour_get_expensesREADGet All Expenses. GET /expenses. List expenses logged by the authenticated user.
everhour_get_expenses_categoriesREADGet All Categories. GET /expenses/categories. List expense categories available in the team.
everhour_get_hooksREADGet All Webhooks. GET /hooks. List all webhook subscriptions created with your API key.
everhour_get_hooks_by_hook_idREADGet Webhook. GET /hooks/{hook_id}. Retrieve a single webhook subscription.
everhour_get_invoicesREADGet All Invoices. GET /invoices. List invoices in the team. Supports filtering by date and client.
everhour_get_invoices_by_invoice_idREADGet Invoice. GET /invoices/{invoice_id}. Retrieve a single invoice with its full line-item breakdown.
everhour_get_projectsREADGet All Projects. GET /projects. List projects the caller has access to. Use the `query` parameter to search by name and `limit`/`page` for pagination — see Pagination.
everhour_get_projects_by_project_idREADGet Project. GET /projects/{project_id}. Retrieve a single project. See Concepts for the project model.
everhour_get_projects_by_project_id_fieldsREADGet Project Fields Configuration. GET /projects/{project_id}/fields. List the custom fields configured on a project, in display order.
everhour_get_projects_by_project_id_sectionsREADGet Project Sections. GET /projects/{project_id}/sections. List sections (groupings of tasks) within a project.
everhour_get_projects_by_project_id_tasksREADGet Project Tasks. GET /projects/{project_id}/tasks. List tasks in a project. By default all tasks are returned; set `exclude-closed=true` to hide closed/completed tasks. See Pagination for `limit`/`page` rules.
everhour_get_projects_by_project_id_tasks_searchREADSearch Project Tasks. GET /projects/{project_id}/tasks/search. Search tasks within a single project. Same query semantics as `GET /tasks/search`; `limit` must be between 1 and 100.
everhour_get_projects_by_project_id_timeREADGet Project Time Records. GET /projects/{project_id}/time. List time records logged against a single project, across all users and tasks.
everhour_get_resource_planner_assignmentsREADGet All Assignments. GET /resource-planner/assignments. List schedule assignments across the team. Supports filtering by date range, project, and member.
everhour_get_resource_planner_time_off_typesREADGet Time Off Types. GET /resource-planner/time-off-types. List the time-off types defined for the team (e.g. Vacation, Sick Leave).
everhour_get_sections_by_section_idREADGet Section. GET /sections/{section_id}. Retrieve a single section by ID.
everhour_get_tasks_by_task_idREADGet Task. GET /tasks/{task_id}. Retrieve a single task with its time totals, estimate, and custom fields.
everhour_get_tasks_by_task_id_timeREADGet Task Time Records. GET /tasks/{task_id}/time. List time records logged against a single task, across all users.
everhour_get_tasks_searchREADSearch Tasks. GET /tasks/search. Search tasks across all projects by name. The `limit` parameter must be between 1 and 100.
everhour_get_team_estimate_exportREADEstimates Report (deprecated). GET /team/estimate/export. Legacy export of team estimates, returned as JSON. Requires admin access. Kept for backward compatibility; new integrations should use the dashboard reports.
everhour_get_team_timeREADGet All Time Records. GET /team/time. List time records across the entire team for a date range. When `from`/`to` are omitted, only the current day is returned. See Dates.
everhour_get_team_time_exportREADTime Report (deprecated). GET /team/time/export. Legacy export of team time records, returned as JSON. Kept for backward compatibility; new integrations should use `GET /team/time` or the dashboard reports.
everhour_get_team_timersREADGet All Team Timers. GET /team/timers. List the timers currently running across the team — one entry per active user.
everhour_get_team_usersREADGet All Users. GET /team/users. List all members of the team. Supports `query` for name search and `limit` for pagination — see Pagination.
everhour_get_timecardsREADGet All Timecards. GET /timecards. List timecards across the team. Defaults to the last two weeks when no date range is provided — see Dates.
everhour_get_timers_currentREADGet Running Timer. GET /timers/current. Retrieve the authenticated user's currently running timer, or an empty timer payload if none is running.
everhour_get_timesheetsREADGet Team Timesheets. GET /timesheets. List timesheet weeks across the team, grouped by user.
everhour_get_users_by_user_id_timeREADGet User Time Records. GET /users/{user_id}/time. List time records for a single user. Supports the same filters as `GET /team/time`.
everhour_get_users_by_user_id_timecardsREADGet User Timecards. GET /users/{user_id}/timecards. List timecards for a single user. Defaults to the last two weeks when no date range is provided.
everhour_get_users_by_user_id_timecards_by_dateREADGet Timecard. GET /users/{user_id}/timecards/{date}. Retrieve a user's timecard for a specific date.
everhour_get_users_by_user_id_timesheetsREADGet User Timesheets. GET /users/{user_id}/timesheets. List timesheet weeks for a single user. The week id is the Monday date of the week (see Dates).
everhour_get_users_meREADGet Current User. GET /users/me. Retrieve the user that owns the API key, including personal settings (timezone, formats, API key).
everhour_patch_projects_by_project_id_archiveWRITEArchive/Unarchive Project. PATCH /projects/{project_id}/archive. Archive or unarchive a project. Archived projects are hidden from default listings but their data is preserved.
everhour_post_allocationsWRITECreate Allocation. POST /allocations. Create a time-off allocation for a user and time-off type.
everhour_post_attachmentsWRITECreate Attachment. POST /attachments. Upload a file and receive a one-time attachment token. The token can then be attached to an expense via `POST /expenses/{expense_id}/attachments` or included in `POST /expenses`.
everhour_post_clientsWRITECreate Client. POST /clients. Create a new client. Names are not deduplicated — posting the same name creates another client.
everhour_post_clients_by_client_id_invoicesWRITECreate Invoice. POST /clients/{client_id}/invoices. Create an invoice for a client. The invoice is generated from the client's tracked time over the requested date range — see Dates.
everhour_post_expensesWRITECreate Expense. POST /expenses. Log a new expense. Amounts are in cents (see Concepts); attach files first via `POST /attachments` and reference their IDs in the request body.
everhour_post_expenses_by_expense_id_attachmentsWRITEAdd Attachment To Expense. POST /expenses/{expense_id}/attachments. Attach a previously uploaded file (by its token from `POST /attachments`) to an existing expense.
everhour_post_expenses_categoriesWRITECreate Category. POST /expenses/categories. Create a new expense category.
everhour_post_hooksWRITECreate Webhook. POST /hooks. Register a new webhook subscription. Handshake: on create, Everhour sends a POST to the supplied `targetUrl` with an `X-Hook-Secret` header (HMAC-SHA512) and an empty body. The receiver must respond with a 2xx status to complete verification. Send `X-Skip-Handshake: 1` to skip verification when the receiver cannot participate. Scope: a webhook can listen across the whole team or be scoped to a single project. See Webhooks for event types, payload structure, and delivery semantics.
everhour_post_invoices_by_invoice_id_exportWRITEExport Invoice to Xero/QB/FB. POST /invoices/{invoice_id}/export. Export an invoice to a connected external accounting system. Supports Xero, QuickBooks, and FreshBooks integrations — the destination must be linked to the team beforehand. An invoice can only be exported once; subsequent calls return an error.
everhour_post_invoices_by_invoice_id_reset_timeWRITERefresh Invoice Line Items. POST /invoices/{invoice_id}/reset-time. Refresh an invoice's line items from current time records. The invoice's billable items are rebuilt from the underlying time tracked against the invoice's client over its date range. Useful when time records have been added, edited, or deleted after the invoice was first generated.
everhour_post_projectsWRITECreate Project. POST /projects. Create a new project. To copy from an existing template use the `template` or `publicTemplate` body field. To sync a project from a connected integration use `POST /projects/{project_id}/sync` instead.
everhour_post_projects_by_project_id_fieldsWRITECreate Field in Project. POST /projects/{project_id}/fields. Create a new custom field on a project.
everhour_post_projects_by_project_id_sectionsWRITECreate Section. POST /projects/{project_id}/sections. Create a new section in a project.
everhour_post_projects_by_project_id_syncWRITESync Integration Project. POST /projects/{project_id}/sync. Sync new integration projects to Everhour. Traditionally, project sync relied on background jobs which could delay access to Everhour functionality. This endpoint allows instant synchronization of a project from a connected integration (like Trello, Asana, ClickUp, etc.) into Everhour. Useful for automation flows where you want to start working with a project immediately after creating it in your external tool. Safe to call multiple times — if the project already exists in Everhour, it simply returns it without creating duplicates. Workflow Create a project in your external tool (Asana, Trello, etc.) and retrieve its ID. Sync it to Everhour using this endpoint in Everhour API. Proceed with other Everhour API actions — assign a budget, link a client, or set task estimates. Supported platform codes: as, b2, b3, bb, cl, gh, gl, in, li, mo, no, td, tw, tr, wr.
everhour_post_projects_by_project_id_tasksWRITECreate Task. POST /projects/{project_id}/tasks. Create a task in a project. For tasks coming from connected integrations, sync them via `POST /projects/{project_id}/sync` instead.
everhour_post_resource_planner_assignmentsWRITECreate Assignment. POST /resource-planner/assignments. Create a schedule assignment. To create time-off use `POST /resource-planner/assignments/time-off` instead.
everhour_post_resource_planner_time_off_typesWRITECreate Time Off Type. POST /resource-planner/time-off-types. Create a new time-off type.
everhour_post_timeWRITEAdd Time. POST /time. Add a time record (in seconds) for a user on a given task and date. Upsert: at most one time record exists per `(user, date, task)`. Posting again with the same combination updates the existing record's duration instead of creating a duplicate. To update a specific record by ID, use `PUT /time/{time_id}`. See Dates for accepted date and duration formats.
everhour_post_timersWRITEStart Timer. POST /timers. Start a timer for the authenticated user on a given task. Only one timer can run per user at a time. If the user already has a timer running on another task, that timer is stopped automatically before the new one starts; the stopped run is committed to a time record on its own date (the date the timer was started, which may not be today for cross-midnight runs). See Concepts for timer semantics.
everhour_post_timesheets_by_timesheet_id_approvalWRITEApprove Week/Request for Approval. POST /timesheets/{timesheet_id}/approval. Submit a timesheet week for approval. The week's owner uses this endpoint to request review; an approver acts on the request via `PUT /timesheets/{timesheet_id}/approval`. The `timesheet_id` is the concatenation of `user_id` and a 4-digit `week_id` in `YYWW` format (no separator). Example: user `14856` for week `2535` (week 35 of 2025) → `timesheet_id = 148562535`. See the Timesheets overview for the full Week ID definition.
everhour_post_users_by_user_id_timecards_clock_inWRITEClock In. POST /users/{user_id}/timecards/clock-in. Clock a user in. Starts a new timecard segment at the current time.
everhour_post_users_by_user_id_timecards_clock_outWRITEClock Out. POST /users/{user_id}/timecards/clock-out. Clock a user out. Closes the current timecard segment.
everhour_put_allocations_by_allocation_idWRITEUpdate Allocation. PUT /allocations/{allocation_id}. Update a time-off allocation's amount or period.
everhour_put_clients_by_client_idWRITEUpdate Client. PUT /clients/{client_id}. Update an existing client. Only the fields supplied in the body are modified.
everhour_put_clients_by_client_id_budgetWRITEUpdate Client Budget. PUT /clients/{client_id}/budget. Create or replace the budget attached to a client. Send a complete budget object; partial updates are not supported.
everhour_put_expenses_by_expense_idWRITEUpdate Expense. PUT /expenses/{expense_id}. Update an existing expense entry.
everhour_put_expenses_categories_by_category_idWRITEUpdate Category. PUT /expenses/categories/{category_id}. Update an expense category.
everhour_put_fields_by_field_idWRITEUpdate Field. PUT /fields/{field_id}. Update a custom field's name, type-specific options, or visibility.
everhour_put_hooks_by_hook_idWRITEUpdate Webhook. PUT /hooks/{hook_id}. Update a webhook's events or scope. The `targetUrl` cannot be changed and is ignored if sent; the handshake is repeated against the existing URL to confirm it is still reachable. Send `X-Skip-Handshake: 1` to skip it.
everhour_put_invoices_by_invoice_idWRITEUpdate Invoice. PUT /invoices/{invoice_id}. Update invoice metadata (notes, dates, custom totals). To change the lifecycle state, set `manualStatus` to `draft`, `sent`, or `paid`.
everhour_put_projects_by_project_idWRITEUpdate Project. PUT /projects/{project_id}. Update project settings. To change budget or billable rate, use `PUT /projects/{project_id}/billing` instead.
everhour_put_projects_by_project_id_billingWRITEUpdate Project Billing/Budget. PUT /projects/{project_id}/billing. Set or update the project's budget, billable rate, and billing type in a single call. Amounts are in cents (see Concepts).
everhour_put_projects_by_project_id_fields_orderWRITEReorder Fields. PUT /projects/{project_id}/fields-order. Reorder a project's custom fields. Send the full list of field IDs in the desired order.
everhour_put_resource_planner_assignments_by_assignment_idWRITEUpdate Assignment. PUT /resource-planner/assignments/{assignment_id}. Update an existing schedule assignment.
everhour_put_resource_planner_time_off_types_by_type_idWRITEUpdate Time Off Type. PUT /resource-planner/time-off-types/{type_id}. Update a time-off type's name, color, or settings.
everhour_put_sections_by_section_idWRITEUpdate Section. PUT /sections/{section_id}. Update a section's name or position.
everhour_put_tasks_by_task_idWRITEUpdate Task. PUT /tasks/{task_id}. Update task fields (name, status, due date, section, labels).
everhour_put_tasks_by_task_id_billingWRITEUpdate Task Billing. PUT /tasks/{task_id}/billing. Set a task's billing rate or mark it non-billable. Requires admin access. The same values are returned on task responses when you pass `opts_include_billing=1`.
everhour_put_tasks_by_task_id_estimateWRITEUpdate Task Estimate. PUT /tasks/{task_id}/estimate. Set or replace a task's estimate (in seconds). Send a complete estimate object; partial updates are not supported.
everhour_put_time_by_time_idWRITEUpdate Time Record. PUT /time/{time_id}. Update a specific time record by ID. To add or upsert time, use `POST /time` instead.
everhour_put_timesheets_by_timesheet_id_approvalWRITEApprove or Reject Approval Request. PUT /timesheets/{timesheet_id}/approval. Approve or reject an existing timesheet approval request. Use this endpoint to act on a request previously created with `POST /timesheets/{timesheet_id}/approval`. The response reflects the resulting approval state.
everhour_put_timesheets_by_timesheet_id_discard_approvalWRITEDiscard Your Approval Request. PUT /timesheets/{timesheet_id}/discard-approval. Retract the caller's previously submitted approval request for a week. The week returns to draft state.
everhour_put_users_by_user_id_timecards_by_dateWRITEUpdate Timecard. PUT /users/{user_id}/timecards/{date}. Update (or create, if missing) a user's timecard for a specific date. Suitable for manual edits — clock-in and clock-out have dedicated endpoints.
Often connected alongside
Put Everhour behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.