Authenticate, scope to a company, read context, metrics, and structure.
01
Authentication
- -Base URL:
https://www.operalta.ai/api. Auth:Authorization: Bearer op_.... Multi-company keys can pin a company withX-Company-Id. - -Prefer explicit scopes:
context:read,contacts:write,documents:read,artifacts:write,rooms:read,integrations:write. - -OAuth:
/api/oauth/authorize,/api/oauth/token,/api/oauth/revoke,/api/oauth/introspect.
curl https://www.operalta.ai/api/company/context \
-H "Authorization: Bearer op_..." \
-H "X-Company-Id: optional-uuid"02
Company context
- -
GET /api/company/context— profile, stage, vertical, positioning. - -
POST /api/company/context— update. - -
GET /api/companies/:id/context— by explicit company ID.
03
Metrics
- -
GET /api/company/metrics— canonical KPIs from the latest live actual period. - -Optional
?period=current(live actuals only). - -Use metrics together with company context when building external business-plan or forecast workflows; company type determines which metric labels and drivers are meaningful.
{
"metrics": { "mrr": 42000, "arr": 504000, "runway": 18 },
"source": "company_metrics_actual",
"periodKey": "2026-02"
}04
Company structure
- -
GET /api/company/structure— products, organization, budgets trees. - -Query:
?tree_type=products|organization|budgets|all&format=markdown|json. - -
PUT /api/company/structure— update from markdown. - -
GET /api/company/structure/node?node_id=&include=decisions,metrics,entries.
05
Errors & rate limits
- -Errors:
{ error: string, code?: string, details?: object }with standard HTTP status codes. - -
401unauthorized ·403insufficient scope ·404not found ·409conflict ·422validation ·429rate limit ·5xxserver. - -Rate limit headers:
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset.