Summary
Use GET endpoints to pull workspace data into external tools. Every read request requires a PAT with the matching :read scope (e.g. kpis:read) and the token owner must have read permission on the corresponding workspace page.
Who this is for
Developers and integrators building automations with Elevale API personal access tokens.
Use GET endpoints to pull workspace data into external tools. Every read request requires a PAT with the matching :read scope (e.g. kpis:read) and the token owner must have read permission on the corresponding workspace page.
Recommended workflow
Call a list endpoint with limit (and filters if needed).
Take the public code from the response (taskCode for tasks, kpiId/okrId UUID for KPIs/OKRs, etc.).
Call the detail endpoint for that code (add ?include=… when you need expanded fields).
Common query parameters
limit - page size (default 50, max 100)
offset - skip rows for pagination (default 0)
search - case-insensitive match on title (and description where noted)
include - comma-separated expansions on detail endpoints (resource-specific)
Quick reference examples
# Latest KPI value (field "current" on the KPI object)
GET .../kpis/{kpiId}
# KPI + most recent history row
GET .../kpis/{kpiId}?include=latestHistory
# BD logs in a date range with total count
GET .../bd-logs?createdFrom=2026-01-01T00:00:00Z&createdTo=2026-01-31T23:59:59Z&limit=20&includeCount=true
# Single BD log
GET .../bd-logs/{logId}
# Wiki page body
GET .../wiki/pages/{pageId}?include=content
# Task detail (assignee + subtask count)
GET .../tasks/{taskCode}Example: list BD logs with count
curl "https://api.elevale.app/v1/workspaces/{workspaceId}/bd-logs?limit=10&includeCount=true" \
-H "Authorization: Bearer elv_pat_..."Response includes logs (newest first), total (matching count), limit, and offset when includeCount=true.
Example: list then get KPI
curl "https://api.elevale.app/v1/workspaces/{workspaceId}/kpis?limit=5" \
-H "Authorization: Bearer elv_pat_..."
curl "https://api.elevale.app/v1/workspaces/{workspaceId}/kpis/{kpiId}?include=latestHistory" \
-H "Authorization: Bearer elv_pat_..."Response shapes
Lists return plural keys: tasks, kpis, okrs, pages, logs, conversations, messages
Details return singular keys: task, kpi, okr, page, log
Tasks use camelCase public codes (taskCode, listCode, assigneeEmails). KPIs, OKRs, BD logs, and wiki pages use snake_case fields (e.g. created_at, update_type).
Smoke test all GET routes
ELEVALE_PAT=elv_pat_... WORKSPACE_ID=... node scripts/testOpenApi.cjs --get-allPer-resource GET guides
Tasks API - status, listCode, search, assigneeEmail, subtaskCount
KPIs API - sessionId, search, latestHistory, history
OKRs API - sessionId filter
Wiki pages API - folderId, search, include=content
BD logs API - date range, filters, get by id
Chat and conversations API - list conversations and messages