Early Access — Beta
The Elean Public API is currently in beta. Endpoint paths, request/response shapes, and scopes may change before the stable 1.0 release. We will always communicate breaking changes before they go live.
Overview
The Elean Public API lets external clients — automation scripts, AI agents, CLI tools, and third-party integrations — read and write tasks without going through the browser UI. Authentication is handled via API keys tied to a specific workspace.Base URL
Authentication
Every request must include a valid API key. Authorization header (recommended):- Scopes — which operations it may perform (
task:read,task:create,task:update) - Project scope — access to all projects in the workspace, or restricted to a specific project
- Expiry — an optional date after which the key stops working
API keys are displayed once at creation time. Copy and store yours securely — it cannot be retrieved again.
Rate Limits
Rate limits are enforced per API key at 60 requests per minute. Exceeding the limit returns429 Too Many Requests. Per-plan limits will be introduced in a future release.
Scopes
Endpoints
List statuses
GET /{projectSlug}/statuses
Returns all custom task statuses for the project. Use the returned id values as statusId when creating or filtering tasks. Requires task:read.
Example request
List labels
GET /{projectSlug}/labels
Returns all labels available in the project — workspace-wide labels and project-scoped labels. Use the returned id values as entries in labelIds when creating or updating tasks. Requires task:read.
Example request
List members
GET /{projectSlug}/members
Returns all members of the project. Use the returned id values as entries in assigneeIds when creating or updating tasks. Requires task:read.
Example request
List tasks
GET /{projectSlug}/tasks
Returns a paginated list of top-level tasks in the given project. Subtasks are excluded. Requires task:read.
Query parameters
Example request
Get task
GET /{projectSlug}/tasks/{taskId}
Returns a single task. Accepts either a UUID or an external ID (e.g. PROJ-42). Requires task:read.
Example request
Create task
POST /{projectSlug}/tasks
Creates a new task in the given project. Requires task:create.
Request body
Example request
Update task
PATCH /{projectSlug}/tasks/{taskId}
Updates one or more fields on an existing task. Only the fields you include are changed. Accepts either a UUID or an external ID. Requires task:update.
Request body
Example request
Delete task
DELETE /{projectSlug}/tasks/{taskId}
Permanently deletes a task. This action cannot be undone. Accepts either a UUID or an external ID. Requires task:update.
Example request
List comments
GET /{projectSlug}/tasks/{taskId}/comments
Returns all comments on a task, ordered oldest first. Accepts either a UUID or an external ID. Requires task:read.
Example request
Add comment
POST /{projectSlug}/tasks/{taskId}/comments
Adds a comment to a task. The comment is attributed to the API key name. Accepts either a UUID or an external ID. Requires task:update.
Request body
Example request
Get attachment
GET /{projectSlug}/tasks/{taskId}/attachments/{attachmentId}
Returns attachment details including a presigned download URL valid for 1 hour. Requires task:read.
Upload attachment
POST /{projectSlug}/tasks/{taskId}/attachments
Uploads a file and attaches it to a task. Max file size is 10 MB. Send as multipart/form-data with a file field. Requires task:create.