Skip to main content
Mutations are the GraphQL write operations of the Beebole API. They create, update, archive, or delete data in your Beebole account — logging time and expenses, running the timesheet approval workflow, and managing people, projects, tasks, and organization settings. Send every mutation as a POST request to https://app.beebole.com/graphql with your key in the apikey HTTP header (see Introduction). Each mutation returns the affected object so you can read back fields in the same request. Object IDs are exposed as id (not _id). For read-only operations, see Queries.
Time durations in Beebole are expressed in milliseconds. To log 2 hours, pass 7200000 (2 × 60 × 60 × 1000), not 120.

Time records

A time record is one logged entry for a person on a given day, linked to projects, a task, or an absence type. Durations are in milliseconds. startTime and endTime are Unix timestamps in milliseconds. duration is an integer count of milliseconds.

Log a time entry

This logs 2 hours (7200000 milliseconds) for a person against a task:

Clone a week of time records

cloneTimeRecords copies a person’s entries from a source period to a target period. Set replaceExisting: true to clear the target period first.

Expense records

An expense record is an actual expense logged against a person and/or a project. The amount is sent as value with an optional currency; if you omit the currency, Beebole uses the person’s or organization’s default.
At least one of personId or projectId is required on addExpenseRecord — both are otherwise optional.

Log an expense


Timesheets and approvals

The approval workflow runs through three mutations. There is no single “add approval event” call — submitting, approving, and rejecting are distinct operations that return a BeeboleApprovalEvent. Beebole determines the current approval stage automatically. submitTimesheet returns the submit event whose id you pass to approveTimesheet or rejectTimesheet.

Submit a timesheet for a period

Approve or reject


People

deletePerson accepts check: true to validate references without deleting.

Create a person


Projects

To create a subproject, pass the parent project’s parentId. The subproject inherits the parent’s category unless you set a different categoryId.

Create a project


Tasks

Tasks are independent planning entities you create, schedule, and track time against. Categories organize tasks into workflow statuses. Task categories and their workflow statuses are managed with the category mutations: To move a task between categories or statuses, use editTaskStatus (single task) or moveTasksToStatus (one or more tasks). editCategoryTaskMove sets a category’s task-move behavior.

Create a task


Organization

Organization settings are edited on the single current organization, so these mutations take no id. The GraphQL field names keep the British spelling Organisation.

Rename the organization


Mutations that delete data cannot be undone through the API. Where a check argument is available (deletePerson, deleteProject, deleteTask), pass check: true first to validate references without deleting anything.
When creating records, store the returned id values so you can reference or update them in follow-up mutations. Batch mutations such as archivePersons, deleteProjects, and deleteTimeRecords accept arrays — prefer them over looping single-item calls.

API Introduction

Authenticate with your API key and send your first request.

Queries

Read time records, people, projects, and tasks over GraphQL.

Schema explorer

Browse the full GraphQL schema interactively.