Reports & exports

Updated July 2026

Reports turns your call and campaign history into downloadable Excel workbooks. You start an export from the page whose data you want, and pick up the finished file here — this page shows you the whole loop.

Where Insights gives you live dashboards and Logs gives you a session-by-session table, Reports lets you pull that same data out as a spreadsheet — a full Excel (XLSX) workbook of call logs or campaign results, built in the background and downloadable when ready. Find it in the sidebar under the Analytics group.

Pro plan and above:
exports are available on the Pro and Ultra plans. On Free and Starter the Reports nav item is hidden and creating an export is rejected. (Starter does include Insights, just not Reports.)

How exports work

An export is a background job, not an instant download. When you start one, Qalyb reads the matching sessions, builds the workbook, and stores the file. The job moves through four states — pendingprocessingcompleted (or failed) — and the Reports table shows the current state with a status badge and a spinner while it works. Once a row reaches completed, a Download action appears.

One thing to know: you don't start exports on the Reports page. You start them from the page whose data you want, and Reports is where the finished files land:

  • Logs export — created from the Logs page's Export button. It carries whatever filters you have active (status, agent, direction, source, search), so the export matches exactly the rows you were looking at.
  • Campaign export — created from a campaign on the Campaigns page, producing a workbook of that campaign's calls and outcomes.
Reports XLSX vs. the dashboard CSV:
don't confuse the two export paths. The Export button in the Insights header produces a quick CSV of the current Overview KPIs only. Reports builds a full XLSX workbook of the underlying session rows.

Run your first export

Filter Logs to the data you want

Open Logs and narrow the table with the search box and the Status, Agent, Direction, and Source dropdowns. The export inherits these filters, so dial in exactly the rows you need — for example, only completed inbound calls for one agent.

Click Export

The Export button in the Logs filter bar creates the export with your active filters and takes you straight to the Reports page.

Watch the job complete

On the Reports table your new row starts as pending, flips to processing (with a spinner), and lands on completed once the workbook is built.

Download the workbook

Click the Download icon on the completed row and your browser downloads the .xlsx file — ready to open in Excel or Google Sheets.

Clean up when done

Use the Delete (trash) icon to remove an export — this deletes both the job and the stored file. You can't delete a job while it is still pending or processing.

app.qalyb.ai/reports
Screenshot: Reports page table listing export jobs with Name, Type and Status badges, row counts, created date, and Download/Delete actions
The Reports page: each row is an export job with its type, status, and row count.

Reading the Reports table

ColumnWhat it shows
NameAuto-generated label, e.g. Call Logs · completed · <agent> or Campaign: <name>.
TypeA badge — logs or campaign — set by the page that created the export.
Statuspending, processing, completed, or failed.
RowsThe number of rows written into the workbook.
CreatedWhen the export job was queued.
ActionsDownload (enabled only when completed) and Delete (disabled while pending / processing).

When you have no exports yet, the page shows an empty state pointing you to the Campaigns or Logs pages to start one.

What's inside a report

A logs workbook contains a row per session with the same core fields you see in Logs — agent, phone numbers, direction, source, duration, status, and timestamps — plus the post-call analysis fields when they are available. Those analysis fields are what make a report genuinely useful for QA and reporting:

FieldWhat it captures
SummaryA short natural-language recap of the conversation.
SentimentThe caller's overall sentiment (positive / neutral / negative).
Key topicsThe main subjects raised during the conversation.
Action itemsFollow-ups the agent or your team should take after the call.
Success criteria & scoreWhether the call met the criteria you defined, with a percentage success score.
Extracted dataStructured fields the agent captured during the call (names, dates, order numbers, and so on).
Analysis fields are Pro+ too:
sentiment, success score, and the other analysis fields come from post-call analysis, a Pro and Ultra capability — on Free and Starter these columns stay empty. Because Reports itself is also Pro+, any export you can create will already have analysis enabled, but recently completed calls may show empty analysis fields until the background processing finishes.
app.qalyb.ai/logs
Screenshot: Logs detail sheet Report tab showing Summary, Sentiment, Success Criteria with a percentage score, and Extracted Data
The same analysis fields appear per-call in the Logs detail sheet, and per-row in an exported workbook.

Good to know

  • The format is always XLSX. For a quick CSV of dashboard KPIs, use the Export button in the Insights header instead.
  • Download links expire after one hour. The Reports page fetches a fresh one each time you click Download, so links never go stale in the dashboard.
  • Data retention applies. Exports only contain sessions still within your plan's retention window (Free 14 days, Starter 30, Pro 90, Ultra 365). Pull reports before older sessions age out.
  • Failed jobs are safe to delete. If a job lands on failed, delete it and start a fresh export — a common cause is a filter that matched no rows.

For developers

Everything the Reports page does is backed by a small REST surface. Reads require the calls:read permission; deletes require calls:write. Creating an export is entitlement-checked against the reports feature.

Create an export

POST /exports queues the job and returns the new export record in its initial pending state. The type is logs or campaign; filters mirror the Logs filters (status, agentId, direction, source, search, plus optional dateFrom / dateTo).

curl · bash
curl -X POST https://api.qalyb.ai/exports \
  -H "Authorization: Bearer sk-live-..." \
  -H "Content-Type: application/json" \
  -d '{
    "type": "logs",
    "name": "Completed calls · Bookings Concierge",
    "filters": {
      "status": "completed",
      "agentId": "agt_abc123",
      "direction": "inbound",
      "source": "telephony"
    }
  }'
Five concurrent exports per workspace:
a workspace may have at most 5 exports in flight (pending + processing) at once. A sixth POST /exports returns 400 Maximum 5 concurrent exports allowed. Let running jobs finish (or delete completed ones) before starting more.

List exports

GET /exports returns your export jobs, newest first. limit defaults to 20 (max 100) and offset pages through results.

curl · bash
curl https://api.qalyb.ai/exports?limit=20 \
  -H "Authorization: Bearer sk-live-..."

Fetch one export

GET /exports/:id returns the job detail. When the status is completed, the response includes a downloadUrl — a signed link valid for one hour. Re-fetch to get a fresh URL if it expires.

GET /exports/exp_8f21c0 · json
{
  "id": "exp_8f21c0",
  "type": "logs",
  "name": "Completed calls · Bookings Concierge",
  "status": "completed",
  "rowCount": 412,
  "downloadUrl": "https://storage.qalyb.ai/exports/exp_8f21c0.xlsx?...signed...",
  "createdAt": "2026-06-27T09:14:00Z"
}

Delete an export

DELETE /exports/:id removes the job and its stored file. As in the UI, you cannot delete a job that is still pending or processing.

Was this guide helpful?