Three read-only endpoints return a company’s data as JSON, for reporting, digests and syncing into other tools. Each needs its own scope on the API key, so a key that reads milestones can’t read metrics unless you allow it. See Create API keys.
Endpoints
| Endpoint | Scope | Returns |
|---|---|---|
GET /companies/:companyId/metrics | metrics:read | Non-archived metrics, each with its owner and its 12 most recent values |
GET /companies/:companyId/milestones | milestones:read | All milestones, each with its owner and subtasks |
GET /companies/:companyId/action-items | action_items:read | All action items, open and completed, each with its owner and any linked milestone subtask |
Paths are relative to https://api.onclarion.com/v1. Each returns a JSON array of every matching record for the company — there’s no pagination or filtering in the request, so filter in your code.
Metrics
curl "https://api.onclarion.com/v1/companies/$COMPANY_ID/metrics" \
-H "x-api-key: clr_YOUR_KEY"
Useful fields on each metric: id, name, teamId, target, unit, frequency (DAILY, WEEKLY or MONTHLY), status (ON_TARGET, AT_RISK or OFF_TARGET), isKey, isInverted (lower is better), and entries — the latest values, newest first, each with value, weekOf (the period start) and notes.
The id here is the metricId you can send to the ingest API to write to a metric without relying on its name.
Milestones
curl "https://api.onclarion.com/v1/companies/$COMPANY_ID/milestones" \
-H "x-api-key: clr_YOUR_KEY"
Useful fields on each milestone: id, title, description, definitionOfDone, teamId, quarter, dueDate, status (ON_TRACK, AT_RISK, OFF_TRACK or COMPLETED), progress, completedAt, and subtasks.
Action items
curl "https://api.onclarion.com/v1/companies/$COMPANY_ID/action-items" \
-H "x-api-key: clr_YOUR_KEY"
Useful fields on each action item: id, title, teamId, dueDate, completed, completedAt, sourceType (MANUAL, SYNC, MILESTONE or CHALLENGE), and subtask with its parent milestone’s id and title when the item came from a milestone subtask. Open items come first.
Owners
Each record’s owner is the person’s company membership, with their user nested inside — use owner.user.firstName, lastName and email to show who owns it. owner is null when nobody is assigned.
Good practice
- Ignore fields you don’t use and fields you don’t recognise. Within
/v1, fields are added but never removed or renamed. - Don’t poll every minute. If you need to know when something changes, subscribe to webhooks —
milestone.completed,action_item.createdand the rest — and read only when one arrives. - Keep the key on a server. Never call these endpoints from browser code.
Errors follow the usual rules — see API authentication and scopes.