The engine, as an API

Verify spreadsheets before your app trusts them, pull clean structured data out of messy exports, and check whether a figure (yours or an AI's) actually traces to the source file. Deterministic endpoints are free on every account, rate limited per key.

API keys

POST/api/v1/verify

Trust report for a spreadsheet: wrong stated totals, superseded revisions, formula errors, text-stored numbers. Deterministic, no credits.

curl -s https://chartberry.io/api/v1/verify \
  -H "Authorization: Bearer $CB_KEY" \
  -F "file=@monthly_close.xlsx"
POST/api/v1/extract

Clean structured JSON out of a messy export, with provenance: rows per sheet, declared totals with cell refs, corrections, de-duplicated current-state totals. Deterministic, no credits.

curl -s https://chartberry.io/api/v1/extract \
  -H "Authorization: Bearer $CB_KEY" \
  -F "file=@appointments_export.csv"
POST/api/v1/traceAI output check

Does this figure trace to the file? Built to check AI-produced numbers: matches declared totals (with the cell), de-duplicated column totals, or any source cell. Flags figures that only match a raw sum over superseded revisions.

curl -s https://chartberry.io/api/v1/trace \
  -H "Authorization: Bearer $CB_KEY" \
  -F "file=@appointments_export.csv" \
  -F "value=18025.92"
POST/api/v1/visualize

Start a verified dashboard generation (consumes a dashboard credit). Returns a job id.

curl -s https://chartberry.io/api/v1/visualize \
  -H "Authorization: Bearer $CB_KEY" \
  -F "file=@report.xlsx"
GET/api/v1/jobs/{id}

Poll a generation. Returns status, then the dashboard URL on success.

curl -s https://chartberry.io/api/v1/jobs/JOB_ID \
  -H "Authorization: Bearer $CB_KEY"

Auth: Authorization: Bearer cbk_... on every call. Deterministic endpoints (verify, extract, trace) never store your file. Traced means a figure exists in, or is a checked aggregate of, the source file: provenance, not a guarantee the file itself is current or correct.