Home Integration API reference

Integration API reference

REST API for integrations and external apps

Productivity tools

These endpoints map to the Essentials Productivity tools area (dashboard widget counts, todos, documents and memos, reminders, internal messages, and knowledge base). Every route is prefixed with /api/v1/integration.

All of them call ensureEssentialsModule first: the Essentials package must be installed, the business subscription must include essentials_module, and Essentials must be enabled for the business. Otherwise the API returns 403 with an explanatory message. Demo mode blocks mutating calls with 403 and disabled_in_demo where applicable.

Essentials — productivity dashboard (counts)

Returns the same style of productivity counts shown on the web Essentials dashboard: todos (scoped to the user unless they are a business admin), documents and memos owned by the user, reminders for the user, visible knowledge-base roots, and a message count when the user may view or create messages.

Endpoint summary

PropertyValue
MethodGET
Path/api/v1/integration/essentials/dashboard
AuthenticationBearer token or API key + secret required.
Extra permissionNone beyond Essentials module gate.
Success response200 with data.counts (todos, documents, memos, reminders, knowledge_bases, messages) and meta.business_id, meta.is_admin.

Status codes

StatusWhen it happens
200Counts were computed successfully.
403Essentials not installed, not in subscription, or not enabled for the business.

List Essentials todos

Lists todos for the current business. Non-admin users only see todos they created or are assigned to. Admins may optionally filter by assignee using user_id.

Endpoint summary

PropertyValue
MethodGET
Path/api/v1/integration/essentials/todos
Permission (list/show)Superadmin, or the business subscription includes essentials_module.
Success response200 with paginated list rows (list shape: id, task_id, task, dates, status, priority, assignees, etc.).

Query parameters

ParameterTypeDescription
per_page, pageintegerPagination; per_page 1–100, default 20.
prioritystringlow, medium, high, urgent.
statusstringnew, in_progress, on_hold, completed.
user_idintegerRestrict to todos assigned to this user (via pivot).
start_date, end_datedateBoth required together; filters by todo date.
qstringSearch; minimum 2 characters when sent.
sortstringdate, end_date, created_at, updated_at, status, priority, task_id.
directionstringasc or desc.

Create Essentials todo

Creates a todo. date (and optional end_date) are parsed using the business date/time format. Assignees require essentials.assign_todos; otherwise the creator is the only assignee. A task_id reference is generated from business Essentials settings.

Endpoint summary

PropertyValue
MethodPOST
Path/api/v1/integration/essentials/todos
PermissionSuperadmin, subscription essentials_module, or essentials.add_todos.
Success response201 with detail payload (includes description, comments, media when loaded).

JSON body

FieldRequiredDescription
taskYesTask title.
dateYesStart datetime string (business format).
description, estimated_hours, priority, status, end_dateNoOptional fields; default status new.
assigned_user_idsNoArray of user ids (business staff); honored only with essentials.assign_todos.

Get Essentials todo

Returns one todo if it exists in the caller’s scoped query (same visibility rules as the list).

Endpoint summary

PropertyValue
MethodGET
Path/api/v1/integration/essentials/todos/{id}
PermissionSame list/show gate as List Essentials todos.
Success response200 with data detail object.

Update Essentials todo

Updates a todo. Send only_status: true with status to change status only; otherwise task, date, and status are required in the full update path. assigned_user_ids syncs assignees when the user has essentials.assign_todos and only_status is not set.

Endpoint summary

PropertyValue
MethodPUT / PATCH
Path/api/v1/integration/essentials/todos/{id}
PermissionSuperadmin, subscription, or essentials.edit_todos.
Success response200 with updated detail object.

Delete Essentials todo

Deletes a todo. Non-admin users may only delete todos they created.

Endpoint summary

PropertyValue
MethodDELETE
Path/api/v1/integration/essentials/todos/{id}
PermissionSuperadmin, subscription, or essentials.delete_todos.
Success response200 with { "message": "OK" }.

List Essentials documents & memos

Lists uploaded files (type=document) or text memos (type=memos) visible to the user: owned by the user or shared with their user id or business role.

Endpoint summary

PropertyValue
MethodGET
Path/api/v1/integration/essentials/documents
PermissionSuperadmin or subscription essentials_module.
Success response200 with paginated document rows (name is a friendly display name for files; storage_name holds the internal filename when type is document).

Query parameters

ParameterRequiredDescription
typeYesdocument or memos.
per_page, pageNoPagination.
start_date, end_dateNoBoth required together; filter by created_at date.
qNoSearch name/description; min 2 characters when sent.
sortNocreated_at or name.
directionNoasc or desc.

Create Essentials document or memo

multipart/form-data: for type=document upload file; for type=memos send name (required) and optional description.

Endpoint summary

PropertyValue
MethodPOST
Path/api/v1/integration/essentials/documents
PermissionSuperadmin or subscription essentials_module.
Success response201 with detail payload including share id arrays when expanded.

Get Essentials document or memo

Returns one document or memo if the user can see it (owner or share).

Endpoint summary

PropertyValue
MethodGET
Path/api/v1/integration/essentials/documents/{id}
Success response200 with data including shared_user_ids and shared_role_ids.

Download Essentials document file

Streams the binary file for a document row when the user is the owner or has a user/role share. Memos are not downloadable through this route.

Endpoint summary

PropertyValue
MethodGET
Path/api/v1/integration/essentials/documents/{id}/download
Success responseFile download response (not JSON).

Update Essentials document shares

Replaces share lists for a document: only the owner may call this. Empty arrays clear shares of that type. New user shares can notify the target users.

Endpoint summary

PropertyValue
MethodPUT / PATCH
Path/api/v1/integration/essentials/documents/{id}/shares
JSON bodyOptional shared_user_ids and shared_role_ids arrays of integers (business users / business roles).
Success response200 with data.document_id and the effective id lists.

Delete Essentials document or memo

Deletes a document or memo. Only the owner may delete. File rows also remove the stored file and all share rows.

Endpoint summary

PropertyValue
MethodDELETE
Path/api/v1/integration/essentials/documents/{id}
Success response200 with { "message": "OK" }.

List Essentials reminders

Either returns a calendar payload when both calendar_start and calendar_end are sent (Y-m-d), or a paginated list of the current user’s reminders.

Query parameters

ParameterDescription
calendar_start, calendar_endBoth required together; switches response to calendar mode via Reminder::getReminders.
start_date, end_dateBoth required together; filters list mode by reminder date.
per_page, page, q, sort, directionList mode only; sort one of date, time, name, created_at, updated_at, repeat.

Endpoint summary

PropertyValue
MethodGET
Path/api/v1/integration/essentials/reminders
PermissionSuperadmin or subscription essentials_module.

Create Essentials reminder

date uses the business date_format; time / end_time use 12h or 24h based on business time_format. repeat is one of one_time, every_day, every_week, every_month.

Endpoint summary

PropertyValue
MethodPOST
Path/api/v1/integration/essentials/reminders
Success response201 with serialized reminder.

Get Essentials reminder

Endpoint summary

PropertyValue
MethodGET
Path/api/v1/integration/essentials/reminders/{id}
ScopeCurrent user’s reminders only.

Update Essentials reminder

Partial update; at least one field required or 422 with No fields to update.

Endpoint summary

PropertyValue
MethodPUT / PATCH
Path/api/v1/integration/essentials/reminders/{id}

Delete Essentials reminder

Endpoint summary

PropertyValue
MethodDELETE
Path/api/v1/integration/essentials/reminders/{id}
Success response200 with { "message": "OK" }.

List Essentials internal messages

Lists internal Essentials messages for the business, scoped by the user’s permitted locations (or all locations for unrestricted users). Optional since filters by created_at; others_only excludes the caller’s own messages.

Endpoint summary

PropertyValue
MethodGET
Path/api/v1/integration/essentials/messages
Permissionessentials.view_message or essentials.create_message.
Success response200 with paginated rows (message is HTML with line breaks converted).

Query parameters

ParameterDescription
per_pageDefault 50, max 100.
sinceParseable date; returns messages with created_at greater than this instant.
others_onlyBoolean; when true, excludes rows where user_id is the caller.
sort, directionSort field currently created_at only.

Create Essentials internal message

Posts a message; body is trimmed and converted with nl2br. Optional location_id must belong to the business and be permitted for the user. Notifications go to other users (all business users for global messages, or users with the location permission when scoped).

Endpoint summary

PropertyValue
MethodPOST
Path/api/v1/integration/essentials/messages
Permissionessentials.create_message.
JSON bodymessage (required string), location_id (optional integer).
Success response201 with serialized message.

Delete Essentials internal message

Deletes a message the user posted. Requires essentials.create_message (same check as create).

Endpoint summary

PropertyValue
MethodDELETE
Path/api/v1/integration/essentials/messages/{id}
Success response200 with { "message": "OK" }.

List Essentials knowledge base (roots)

Paginates knowledge-base root nodes (kb_type=knowledge_base, no parent) the user may see: explicit shares, creator, or share_with=public. Each root includes nested children (sections and articles) the viewer can access.

Endpoint summary

PropertyValue
MethodGET
Path/api/v1/integration/essentials/knowledge-base
PermissionSuperadmin or subscription essentials_module.
Queryq (min 2 chars), per_page, page.

Create Essentials knowledge base item

Creates a root, section, or article. Hierarchy rules: roots have no parent_id; sections attach to a knowledge_base parent; articles attach to a section. For new roots, share_with may be public, private, or only_with (with shared_user_ids synced when only_with).

Endpoint summary

PropertyValue
MethodPOST
Path/api/v1/integration/essentials/knowledge-base
JSON bodytitle required; optional content, kb_type, parent_id, share_with, shared_user_ids.
Success response201 with nested node tree.

Get Essentials knowledge base item

Returns one node by id when visible to the user (inherits visibility from parents for nested content).

Endpoint summary

PropertyValue
MethodGET
Path/api/v1/integration/essentials/knowledge-base/{id}
Not found404 when missing or not visible (same message shape as other routes).

Update Essentials knowledge base item

Partial update on visible nodes. For roots, changing share_with away from only_with clears attached users; when setting only_with, supply shared_user_ids to sync.

Endpoint summary

PropertyValue
MethodPUT / PATCH
Path/api/v1/integration/essentials/knowledge-base/{id}

Delete Essentials knowledge base item

Deletes a node the user can see; detaches direct user shares first.

Endpoint summary

PropertyValue
MethodDELETE
Path/api/v1/integration/essentials/knowledge-base/{id}
Success response200 with { "message": "OK" }.

Common error responses

StatusMeaning
403Unauthorized when a feature-specific permission or ownership check fails; or Essentials gate messages for module/subscription/disable.
404Not found for missing ids or invisible rows.
422Validation errors, date range pairing rules, empty KB update, or invalid share/user payloads.