REST API reference

Last reviewed against the app on 24 September 2026

Live specification

The OpenAPI schema is generated from the running code and is public: Swagger UI at /api/v1/docs/, raw schema at /api/v1/schema/. Use it for exact request and response fields. This page covers how the API works.

The REST API gives scripts and back-end systems access to your reports, dashboards, data sources, goals, forecasts and usage. It is available on the Professional and Enterprise plans.

Connecting an AI assistant?

For Claude, Cursor, ChatGPT and other MCP clients, use the MCP server instead. It has its own keys and is included from the Trial plan up.

Base URL

https://claribi.com/api/v1/

All paths below are relative to this URL and end with a slash.

Authentication

Every request needs an API key in the Authorization header:

Authorization: Bearer claribi_xxxxxxxxxxxxxxxx

Owners and Administrators create keys in Settings > Developer. Each key carries a list of scopes; see Authentication. MCP keys (claribi_mcp_...) are rejected here, and browser session tokens are not accepted on /api/v1/.

Plans

The API needs the Professional ($199/month) or Enterprise ($999/month) plan. The check runs on every request against the organization that owns the key. If the organization is on another plan, or its subscription is suspended or cancelled, the request fails with HTTP 401 and a message saying why.

Rate limits

Limits apply per organization, over a rolling 60-minute window. Creating more keys does not raise them.

PlanGeneral requestsGeneration requests
Professional1,000 per hour100 per hour
Enterprise5,000 per hour500 per hour

Generation requests are the ones that run AI or forecasting work: POST reports/generate/, POST dashboards/{id}/refresh/ and POST forecasts/{id}/run/. Everything else counts as general.

Throttled responses include these headers:

HeaderMeaning
X-RateLimit-LimitRequests allowed in the rolling hour for this category.
X-RateLimit-RemainingRequests left in the window.
X-RateLimit-ResetUnix time when the oldest minute in the window drops out. More capacity may take longer to free up if most requests were recent.

Over the limit, the API returns HTTP 429 with a Retry-After header in seconds.

Errors

Check the HTTP status first. The body is JSON in one of two shapes:

// Errors returned by an endpoint itself (unknown template, no credits, ...)
{ "error": "Insufficient credits", "message": "...", "credits_remaining": 3, "estimated_cost": 5 }

// Authentication, permission, not found and throttling errors
{ "error": { "message": "Request failed", "code": "REQUEST_ERROR", "status": 401,
             "details": { "detail": "Invalid API key" } } }

Validation errors (HTTP 400) list the problem per field, for example {"data_source_ids": ["This list may not be empty."]}.

StatusTypical cause
400Invalid body or parameters; data source not connected; dashboard has nothing to refresh.
401Missing, invalid, expired or revoked key; key creator no longer active or no longer in the organization; plan without API access; MCP key used here.
402Not enough AI credits for a generation request.
403The key lacks the scope for this endpoint; forecasting not in the plan.
404The resource does not exist in your organization.
405Method not supported, for example updating a generated report.
429Rate limit reached.
500, 503Server error or a background job could not be queued. Retry later.

Pagination and filters

List endpoints return pages of 20 items by default. Use ?page=2 and ?page_size= (up to 100). The response has count, next, previous and results.

EndpointFiltersSorting
reports/none?ordering= created_at, title, status (prefix - for descending; default -created_at)
dashboards/none?ordering= created_at, name, status (default -created_at)
data-sources/source_type, name (contains), status (default active)none
goals/hierarchy_type (epic, topic, task), statusnone

Endpoints

Key and usage

EndpointWhat it doesScope
GET auth/verify/Checks the key; returns its name, scopes, expiry, organization and plan.any valid key
GET usage/Used, limit and remaining for AI credits, data sources, storage, OCR pages, user seats and file uploads.usage:read

Reports

EndpointWhat it doesScope
GET reports/List generated reports.reports:read
GET reports/{id}/One report with its parameters, sources, status and credits used.reports:read
POST reports/generate/Generate a report from a template and data sources. Waits until the report is ready.reports:generate
GET reports/{id}/download/Download the report as a PDF.reports:read
DELETE reports/{id}/Delete a report.reports:delete
POST reports/{id}/public-link/Create or return the public link.reports:share
DELETE reports/{id}/public-link/Turn the public link off.reports:share

Dashboards

EndpointWhat it doesScope
GET dashboards/List dashboards with widget counts.dashboards:read
POST dashboards/Create a dashboard on one or more data sources.dashboards:create
GET dashboards/{id}/One dashboard with its widgets and sources.dashboards:read
PUT/PATCH dashboards/{id}/Update name, description and settings.dashboards:update
DELETE dashboards/{id}/Delete a dashboard.dashboards:delete
POST dashboards/{id}/refresh/Recalculate the widgets and their AI captions. Uses AI credits.dashboards:refresh
POST dashboards/{id}/public-link/Create or return the public link.dashboards:share
DELETE dashboards/{id}/public-link/Turn the public link off.dashboards:share

Data sources

EndpointWhat it doesScope
GET data-sources/List data sources (active ones unless you pass status).data_sources:read
GET data-sources/{id}/One data source with status, last sync and row count.data_sources:read
POST data-sources/{id}/sync/Start a sync in the background (API connectors, Google, Meta, Jira, Confluence).data_sources:read

Goals

EndpointWhat it doesScope
GET goals/List goals.goals:read
GET goals/{id}/One goal with milestones and recent insights.goals:read
GET goals/{id}/progress/Current value, target, progress percentage and milestones.goals:read

Forecasts

EndpointWhat it doesScope
GET forecasts/List forecasts.forecasts:read
POST forecasts/Create a forecast on a metric.forecasts:write
GET forecasts/{id}/One forecast configuration.forecasts:read
PUT/PATCH forecasts/{id}/Change the configuration.forecasts:write
DELETE forecasts/{id}/Delete the forecast and its history.forecasts:write
POST forecasts/{id}/run/Run it now. Uses AI credits.forecasts:run
GET forecasts/{id}/runs/Run history.forecasts:read
GET forecasts/{id}/runs/{run_id}/Full result of one run.forecasts:read
POST forecasts/{id}/runs/{run_id}/narrate/Rewrite the AI summary of a run. Uses credits.forecasts:run
GET forecasts/{id}/trust/How accurate past runs turned out.forecasts:read
POST forecasts/estimate-cost/Credit estimate before you run.forecasts:read

What the API does not cover

  • Connecting, editing or deleting data sources. Do that in the app.
  • Users, roles, billing and settings.
  • Listing templates, and generating from the built-in template library. reports/generate/ accepts report templates saved in your organization; see Reports API.
  • Outbound webhooks. See Webhooks and Zapier.

Health endpoint

GET https://claribi.com/api/monitoring/health/ needs no key and reports whether the database, cache and background workers respond. It returns overall_status (healthy, warning or critical) and HTTP 503 when the status is critical. Add ?level=summary for a per-service breakdown.

Next

Try it on your own data

The 14-day trial includes 50 AI credits and needs no card. When it ends you move to the Free plan and keep your data.