Skip to main content
The Public REST API gives trusted server-side integrations CRUD access to Trellis tasks and properties. It uses the same workspace API keys created in Settings > Developer.
This REST surface is intentionally narrow. Use documented MCP tools for broader Trellis workflows, or contact Trellis support before building against objects that are not listed here.

Base URL

Interactive reference:
OpenAPI document:

Authentication

Send the workspace API key as a Bearer token:
The {workspaceId} path segment must be the same workspace that issued the key. Workspace IDs are text values, such as acme-vacations. Public REST calls do not require a Trellis web login session or browser cookie. Store API keys only in trusted server-side environments, and rotate a key from Settings > Developer if it is exposed. You can also authenticate with an access token obtained from POST /api/v1/auth/token. See Authentication for details.
The linked OpenAPI spec (openapi.public.json) documents workspace API key authentication only. Session access tokens work at runtime but are not reflected in the generated spec.

Contract versions

Breaking changes require a new object contract version or a new REST API version.

Endpoints

Properties

Tasks

Pagination

List endpoints accept limit and offset. Responses include:

Properties

List properties

Supported filters: Property statuses: PROSPECT, ONBOARDING, ACTIVE, AT_RISK, INACTIVE.

Get a property

Create a property

Update a property

Delete a property

Property object

Additional room count fields (kitchens, livingRooms, hallways, terraces, balconies, gardens), stay limits (minNights, maxNights, minGuests), and deal tracking (dealValue) are also available. See the interactive reference or OpenAPI document for the full schema.

Tasks

List tasks

Supported filters: Task statuses: OPEN, CREATED, DRAFT, DRAFTED, SCHEDULED, IN_PROGRESS, FINISHED, CLOSED, PENDING_APPROVAL, REQUEST_APPROVED, REQUEST_REJECTED, COMPLETED. Task priorities: WATCH, LOWEST, LOW, NORMAL, HIGH, URGENT. Task sources: MANUAL, AUTOMATION, SCHEDULE_RULE, INTEGRATION, AI, REVIEW, MESSAGE, CALL, MEETING_BOT. Use the include query parameter to embed cost items and assignees in the task response:
When included, each task will contain:
  • costItems: Array of cost line items with amount, currency, description, billToType, categoryName, and notes.
  • assignees: Array of task assignees with role (PRIMARY or SECONDARY), type (USER or VENDOR), userId, vendorOrgId, and name.

Get a task

Create a task

Task creation uses the same Trellis mutation path as the app: assignees, tags, visit links, activity, notifications, automations, enrichment, and connected operational sync are handled by the normal task side-effect pipeline. Create request fields:

Update a task

Additional update-only fields: status, summary, completedAt, startedAt, sortOrder, projectId, billableToOwner, cost, costCurrency, isNoCharge, customFields, completionFields, replacePrimaryUser.

Delete a task

Task object

Additional fields for integrations, scheduling, vendor workflows, and AI provenance are also returned. See the interactive reference or OpenAPI document for the full schema.

Daily work orders

The daily work orders endpoint returns tasks with status SCHEDULED in field-ops departments for a single calendar date, formatted as costed work orders with assignee details. Use it for daily operations reports and workforce cost summaries. Tasks in other statuses or non-field-ops departments are excluded.
Response:
When tasks use multiple currencies, totalCost is null, totalCostCurrency is "MIXED", and costTotalsByCurrency contains per-currency totals.

Errors