Contents
On this page
List Report Schedules - Plugixa Exam
GET /plugixa-exam/v1/analytics/schedules
List the report schedules: which report is emailed, how often, to whom, and when it last went out.
Not reachable with an API token: since 1.4.1 a token request to this route answers 403 plugixa_exam_token_route. Call it as a signed-in WordPress user (from a script, with an Application Password) who holds the reports:view permission. Needs Plugixa Exam Pro with the Analytics app on in Plugixa Exam -> App Manager (it also needs the Notifications app); with it off, this route answers 404.
Note. This route only reads. Creating, editing and deleting schedules, and the CSV export of results, need the
reports:exportpermission.
Request
GET https://your-site.example/wp-json/plugixa-exam/v1/analytics/schedules?orderby=next_run&order=asc
Query parameters
This endpoint takes only the list parameters every paged list accepts.
searchmatchestitle.orderbyacceptsid,title,frequency,next_runandlast_run.
Responses
200 OK. data is a page of schedules.
{
"success": true,
"data": [
{
"id": 2,
"title": "Weekly algebra results",
"exam_id": 7,
"frequency": "weekly",
"recipients": "head.maths@your-site.example",
"last_run": "2026-11-09 06:00:00",
"next_run": "2026-11-16 06:00:00",
"published": true,
"created_at": "2026-11-02 14:10:00",
"modified_at": "2026-11-02 14:10:00",
"created_by": 1,
"modified_by": 1,
"deleted_at": null
},
{
"id": 3,
"title": "Monthly summary",
"exam_id": 0,
"frequency": "monthly",
"recipients": "principal@your-site.example",
"last_run": null,
"next_run": null,
"published": true,
"created_at": "2026-11-12 09:00:00",
"modified_at": "2026-11-12 09:00:00",
"created_by": 1,
"modified_by": 1,
"deleted_at": null
}
],
"meta": {
"total": 2,
"pages": 1
}
}
| Field | Type | Meaning |
|---|---|---|
data[].id |
integer |
The schedule’s id |
data[].exam_id |
integer |
The exam reported on, 0 for the summary across all exams |
data[].frequency |
string |
daily, weekly or monthly |
data[].recipients |
string |
The email addresses, as typed in the admin |
data[].last_run |
string|null |
UTC datetime it last went out, null if never |
data[].next_run |
string|null |
UTC datetime it goes out next. null means it is due and goes out the next time schedules are checked |
data[].published |
boolean |
Whether the schedule is active |
data[].deleted_at |
string|null |
null unless the schedule is in the trash (view=trash) |
meta.total |
integer |
Schedules matching, across all pages |
meta.pages |
integer |
Number of pages at this per_page |
To see what a schedule sends, use Get Report Preview with its exam_id.
Errors
Plus the errors every endpoint can return.
Examples
curl -s "https://your-site.example/wp-json/plugixa-exam/v1/analytics/schedules?orderby=next_run&order=asc" \
-u "$WP_USER:$WP_APP_PASSWORD"
<?php
$ch = curl_init('https://your-site.example/wp-json/plugixa-exam/v1/analytics/schedules?orderby=next_run&order=asc');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Basic ' . base64_encode(getenv('WP_USER') . ':' . getenv('WP_APP_PASSWORD')),
],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
const response = await fetch('https://your-site.example/wp-json/plugixa-exam/v1/analytics/schedules?orderby=next_run&order=asc', {
headers: {
'Authorization': 'Basic ' + btoa(`${process.env.WP_USER}:${process.env.WP_APP_PASSWORD}`),
},
});
const { data, meta } = await response.json();
Quick Links
Share