Skip to main content
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
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