Skip to main content
The Trellis API is organized around REST principles. It accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes to indicate success or failure.

Base URL

All API requests should be made to:
https://api.trellistech.com/v1

Authentication

Every request must include an API key in the Authorization header:
curl -H "Authorization: Bearer trls_live_abc123..." \
  https://api.trellistech.com/v1/properties
See the Authentication page for details on obtaining and managing API keys.

Versioning

The current API version is v1. The version is included in the base URL path. When we introduce breaking changes, we will release a new version and provide a migration guide. Non-breaking additions (new fields, new endpoints) may be added to the current version without notice.

Rate Limits

The API enforces rate limits to ensure fair usage across all integrations:
  • 100 requests per minute per API key
Rate limit information is included in every response via headers:
HeaderDescription
X-RateLimit-LimitMaximum requests allowed per window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets
When you exceed the rate limit, the API returns a 429 Too Many Requests response. Implement exponential backoff in your integration to handle this gracefully.

Pagination

List endpoints support offset-based pagination using limit and offset parameters:
curl -H "Authorization: Bearer trls_live_abc123..." \
  "https://api.trellistech.com/v1/tasks?limit=50&offset=100"
ParameterTypeDefaultDescription
limitinteger50Number of records to return (max 100)
offsetinteger0Number of records to skip
List responses include pagination metadata:
{
  "data": [...],
  "total": 243,
  "limit": 50,
  "offset": 100
}

Error Format

When an error occurs, the API returns a JSON object with an error field containing a human-readable message and a code for programmatic handling:
{
  "error": {
    "code": "invalid_parameter",
    "message": "The 'status' parameter must be one of: ACTIVE, INACTIVE, ONBOARDING, LEAD, PAUSED, CHURNED."
  }
}

HTTP Status Codes

StatusMeaning
200OK — Request succeeded
201Created — Resource successfully created
400Bad Request — Invalid parameters or request body
401Unauthorized — Invalid or missing API key
403Forbidden — API key lacks permission for this action
404Not Found — Resource does not exist
429Too Many Requests — Rate limit exceeded
500Internal Server Error — Something went wrong on our end

Request IDs

Every API response includes an X-Request-Id header with a unique identifier for that request. Include this ID when contacting support about a specific API call.