WorkestraDocs
ModulesProjectsIntegrations

REST API

Manage projects and tasks programmatically via the Workestra REST API.

Every project and task action you can do in the UI, you can also do via HTTP. The API uses the same permissions model as the web app — authenticate with a workspace API key, get back JSON.

REST API example

Screenshot needed — add an annotated image showing this UI

Authentication

All requests require an API key in the Authorization header:

curl https://<your-workspace>.workestra.app/api/v1/projects \
  -H "Authorization: Bearer wsk_live_…"

Generate keys at Settings → API Keys. See the general API Authentication page for setup.

Project Endpoints

Base path: /api/v1/projects

MethodPathPurpose
GET/api/v1/projectsList all projects you have access to
GET/api/v1/projects/:idGet a single project
POST/api/v1/projectsCreate a project
PATCH/api/v1/projects/:idUpdate a project
DELETE/api/v1/projects/:idSoft-delete a project (goes to Trash)

Example: Create a Project

curl -X POST https://<your-workspace>.workestra.app/api/v1/projects \
  -H "Authorization: Bearer wsk_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Website Redesign",
    "description": "Marketing site overhaul",
    "status": "active",
    "priority": "high",
    "target_date": "2026-09-30"
  }'

Task (Issue) Endpoints

Base path: /api/v1/issues

MethodPathPurpose
GET/api/v1/issuesList tasks (filter by project, status, assignee)
GET/api/v1/issues/:idGet a single task
POST/api/v1/issuesCreate a task
PATCH/api/v1/issues/:idUpdate a task
DELETE/api/v1/issues/:idSoft-delete a task

Example: Create a Task

curl -X POST https://<your-workspace>.workestra.app/api/v1/issues \
  -H "Authorization: Bearer wsk_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "project_id": "proj_abc123",
    "title": "Fix login timeout",
    "description": "Users are getting logged out after 5 minutes",
    "priority": "high",
    "assignee_id": "user_def456",
    "labels": ["bug", "auth"]
  }'

Example: List Overdue Tasks

curl "https://<your-workspace>.workestra.app/api/v1/issues?status=open&overdue=true" \
  -H "Authorization: Bearer wsk_live_…"

Common Query Parameters

ParameterTypeDescription
pageintegerPage number (default 1)
per_pageintegerItems per page (default 25, max 100)
sortstringField to sort by (default created_at)
orderstringasc or desc
project_iduuidFilter to a project
statusstringFilter by status
assignee_iduuidFilter by assignee

Response Shape

All list endpoints return:

{
  "data": [  ],
  "count": 42,
  "error": null
}

Single-object endpoints return the object directly.

Rate Limits

API requests are rate-limited. See Rate Limits for the current tiers.

Custom Fields in Responses

Task responses include a custom_fields object keyed by field key:

{
  "id": "task_abc",
  "title": "…",
  "custom_fields": {
    "client_name": "Acme Corp",
    "risk_score": 3
  }
}

To update, send custom_fields in the PATCH body.


Next Steps