Skip to main content
This guide is intended for developers. If you’re looking for a business-level overview of what Reporter does, see What is Reporter?.
Get Reporter running in minutes. This guide walks you through the complete journey, from uploading your first template to downloading a generated report.

Before you begin


You need:
  • A running Reporter instance
  • A valid authentication token (if Access Manager is enabled)
  • A .tpl template file ready to upload
All examples use cURL. Replace $TOKEN with your authentication token and https://reporter.example.com with your Reporter URL.

Step 1: Upload a template


Upload a .tpl file that defines the structure and content of your report. The file content must match the desired output format (HTML, XML, CSV, TXT), but the file itself must have a .tpl extension.
API reference: Upload template
cURL
curl -X POST "https://reporter.example.com/v1/templates" \
 -H "Authorization: Bearer $TOKEN" \
 -H "X-Organization-Id: 019c96a0-0a98-7287-9a31-786e0809c769" \
 -F "template=@account_summary.tpl" \
 -F "outputFormat=PDF" \
 -F "description=Daily account summary report"
{
  "id": "0196b270-a315-7137-9408-3f16af2685e1",
  "outputFormat": "PDF",
  "description": "Daily account summary report",
  "fileName": "0196b270-a315-7137-9408-3f16af2685e1.tpl",
  "createdAt": "2026-03-05T10:00:00Z"
}
Save the template id. You will use it to generate reports.

Supported output formats

FormatUse case
CSVData exports and spreadsheet integration
XMLStructured data and regulatory submissions
HTMLBrowser-viewable reports
PDFPrint-ready and shareable documents
TXTPlain text and legacy system integration

Step 2: Verify the template


List your templates to confirm the upload was successful.
API reference: List templates
cURL
curl -X GET "https://reporter.example.com/v1/templates" \
 -H "Authorization: Bearer $TOKEN" \
 -H "X-Organization-Id: 019c96a0-0a98-7287-9a31-786e0809c769"

Step 3: Generate a report


Submit a report generation request with the template ID and optional filters to narrow the data.
API reference: Create report
cURL
curl -X POST "https://reporter.example.com/v1/reports" \
 -H "Authorization: Bearer $TOKEN" \
 -H "X-Organization-Id: 019c96a0-0a98-7287-9a31-786e0809c769" \
 -H "Content-Type: application/json" \
 -d '{
   "templateId": "0196b270-a315-7137-9408-3f16af2685e1",
   "filters": {
     "midaz_onboarding": {
       "account": {
         "created_at": {
           "between": ["2026-03-01", "2026-03-05"]
         }
       }
     }
   }
 }'
{
  "id": "0196c5c0-5044-724f-95f3-4b32076e7ad7",
  "templateId": "0196b270-a315-7137-9408-3f16af2685e1",
  "filters": {
    "midaz_onboarding": {
      "account": {
        "created_at": {
          "between": ["2026-03-01", "2026-03-05"]
        }
      }
    }
  },
  "completedAt": null,
  "createdAt": "2026-03-05T10:05:00Z",
  "updatedAt": "2026-03-05T10:05:00Z",
  "deletedAt": null
}
Save the report id for the next steps.

Filter structure

Filters follow the path: data source > table > field > operator > values.
OperatorDescriptionExample
eqEqual to{ "eq": ["active"] }
gt / gteGreater than / greater or equal{ "gte": ["2026-01-01"] }
lt / lteLess than / less or equal{ "lt": [1000] }
betweenValue within a range{ "between": ["2026-03-01", "2026-03-31"] }
in / ninValue in / not in a list{ "in": ["active", "pending"] }
Filters are optional. Omit them to generate a report with all available data.

Step 4: Check report status


Report generation is asynchronous. Poll the status endpoint until the report is ready.
API reference: Check report status
cURL
curl -X GET "https://reporter.example.com/v1/reports/0196c5c0-5044-724f-95f3-4b32076e7ad7" \
 -H "Authorization: Bearer $TOKEN" \
 -H "X-Organization-Id: 019c96a0-0a98-7287-9a31-786e0809c769"
StatusMeaning
ProcessingReporter is querying data and rendering the template
PendingExtractionThe report is waiting for data extraction to complete before generation can begin
FinishedThe report is ready for download
ErrorAn error occurred during generation
Wait for Finished before proceeding to download.

Step 5: Download the report


Once the report is finished, download the generated file.
API reference: Download report
cURL
curl -X GET "https://reporter.example.com/v1/reports/0196c5c0-5044-724f-95f3-4b32076e7ad7/download" \
 -H "Authorization: Bearer $TOKEN" \
 -H "X-Organization-Id: 019c96a0-0a98-7287-9a31-786e0809c769" \
 -o account_summary.pdf
The file is returned with Content-Disposition headers indicating the filename and format.

Step 6: Explore data sources


To understand what data is available for your templates, list the configured data sources and their schemas.
cURL
curl -X GET "https://reporter.example.com/v1/data-sources" \
 -H "Authorization: Bearer $TOKEN" \
 -H "X-Organization-Id: 019c96a0-0a98-7287-9a31-786e0809c769"
Each data source includes available tables and fields that you can reference in your templates using the {{ datasource.table.field }} syntax.

Next steps


What is Reporter?

Full overview of template syntax, tags, and filters.

Template formats

Practical examples for HTML, XML, and TXT templates.

Using Reporter

Detailed guide on templates, storage, and data source configuration.

Error handling

Complete list of error codes and how to resolve them.