Developer docs

List PDF reports

GET/sites/{siteId}/reports
Scope
sites:read

Latest PDF reports and weekly emails about the website Site summaries of this website and the monthly client reports of the client it belongs to, newest first, plus the weekly emails that cover it (weeklyEmails: name, on or off, next send, how many people get it). link opens the report in the app for a signed-in member.

Parameters

NameInDetails
siteIdRequiredpathstringWebsite id, from GET /sites.
limitqueryintegerdefault 5, min 1, max 20Reports to return, 1 to 20.

Response

200 · application/json

FieldDetails
weeklyEmailslist of object · required
weeklyEmails[].idstring · required; Weekly email id
weeklyEmails[].namestring · required; Name of the weekly email
weeklyEmails[].scopeportfolio | client | site · required; What it covers: every website, one client, or chosen websites
weeklyEmails[].enabledtrue or false · required; Switched on
weeklyEmails[].recipientsinteger · required; How many people receive it (their addresses are not listed)
weeklyEmails[].nextSendAtdate (YYYY-MM-DD) or null · required; Day of the next send (Monday, in the workspace time zone); null when it is off or weekly emails are paused
weeklyEmails[].lastSentAtstring or null · required; When it last went out; null when never
weeklyEmails[].linkaddress (URL) · required; Reports screen in the app
reportslist of object · required
reports[].idstring · required; Report id
reports[].kindsite_summary | client_summary · required; A website summary, or a monthly client report
reports[].formatpdf | csv · required; File type
reports[].titlestring · required; Report title
reports[].scopestring · required; What it covers
reports[].periodobject or null · required; Days covered; null when not tied to a period
reports[].period.fromdate (YYYY-MM-DD) · required
reports[].period.todate (YYYY-MM-DD) · required
reports[].period.labelstring · required; Readable period
reports[].createdAtstring · required
reports[].linkaddress (URL) · required; Opens the PDF in the app (sign-in needed)
notestring · required; What is listed
linkaddress (URL) · required; Reports screen in the app

Errors

StatusMeaning
400Bad request. Codes: bad_limit.
401Missing, unknown or revoked key. Codes: missing_key, invalid_key.
403The key lacks the scope, covers another website, or its owner lost access. Codes: missing_scope, other_site, owner_left, no_owner, forbidden.
404Not found. Codes: not_found.
429Too many requests this hour for this key. Codes: rate_limited.

Example request

curl \
  -H "Authorization: Bearer mr_ws_…" \
  "https://app.monoranks.com/api/v1/sites/SITE_ID/reports"

Example response

{
  "weeklyEmails": [
    {
      "id": "1c3e5a7c-9e1a-4c3e-8a5c-9e1a3c5e7a9c",
      "name": "Acme Bikes",
      "scope": "site",
      "enabled": true,
      "recipients": 1,
      "nextSendAt": "2026-10-12",
      "lastSentAt": "2026-10-05T08:00:00.000Z",
      "link": "https://app.monoranks.com/settings/emails"
    }
  ],
  "reports": [
    {
      "id": "1c3e5a7c-9e1a-4c3e-8a5c-9e1a3c5e7a9c",
      "kind": "site_summary",
      "format": "pdf",
      "title": "Acme Bikes: site summary",
      "scope": "Acme Bikes",
      "period": {
        "from": "2026-09-01",
        "to": "2026-09-30",
        "label": "September 2026"
      },
      "createdAt": "2026-10-01T06:00:00.000Z",
      "link": "https://app.monoranks.com/api/reports/1c3e5a7c-9e1a-4c3e-8a5c-9e1a3c5e7a9c"
    }
  ],
  "note": "Newest first: site summaries of this website and the monthly client reports of its client.",
  "link": "https://app.monoranks.com/reports"
}