list_reports
List reports for your organization, newest first. Metadata only — use get_report for the presigned PDF URL when a report is ready.
Parameters#
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
status | string? | no | null | Filter by status: pending, queued, rendering, pending_review, approved, rejected, ready, failed, cancelled |
ad_account_id | string? | no | null | Only reports that include this account |
since | string? | no | null | ISO-8601 datetime — only reports created at or after |
limit | integer | no | 20 | Max reports to return; clamped to 100 |
offset | integer | no | 0 | Pagination offset |
Returns#
json
{
"reports": [
{
"id": "ad_rpt_abc",
"title": "Weekly Check-In (Apr 15 – Apr 21)",
"template": { "id": "ad_rtpl_xyz", "key": "weekly_check_in", "version": 1, "name": "Weekly Check-In" },
"period_start": "2026-04-15",
"period_end": "2026-04-21",
"status": "ready",
"review_status": null,
"volatility_score": 42,
"volatility_band": "normal",
"data_coverage_pct": 98,
"delivery_channels": ["in_app"],
"created_via": "ai",
"created_at": "2026-04-22T09:30:00Z",
"generated_at": "2026-04-22T09:30:42Z",
"page_count": 4,
"file_size": 67948,
"error_code": null,
"error_message": null
}
],
"total": 12,
"offset": 0,
"limit": 20,
"has_more": false,
"source": "adlyse.reports@v1"
}| Field | Description |
|---|---|
reports[].status | Current lifecycle state — see server overview |
reports[].volatility_band | quiet / normal / volatile — scales report length |
reports[].created_via | human, ai, or scheduled |
reports[].data_coverage_pct | Lowest coverage across sections (0–100) |
Errors#
error_type | When |
|---|---|
auth_error | Missing / invalid API key |
validation_error | Bad status value or malformed since |
Example#
Request:
json
{ "status": "ready", "limit": 5 }Response: as shown above.
See also#
get_report— metadata + PDF URLgenerate_report— create a new report