Report Schedules
Report Schedules
The Report Schedule API automates recurring report generation and delivery from within Addepar. Use it to create, modify, and delete schedules that produce PDF reports on a defined cadence, save them to Generated PDFs, and optionally publish to Client Portal or notify contacts via email.
Overview
| Base Route | /v1/report_schedule |
| Endpoints | GET /v1/report_schedule /v1/report_schedule/:id POST /v1/report_schedule PATCH /v1/report_schedule/:id DELETE /v1/report_schedule/:id |
| Produces | JSON (JSON:API format) |
| Pagination | Yes (default: 50 per page) |
| Application Permissions | GET: Access to reporting. POST, PATCH, DELETE: Access to reporting, scheduler, and portfolios. |
| OAuth Scopes | REPORTS_WRITE |
Resource attributes
All attributes below are returned in successful GET responses.
| Attribute | Type | Required | Constraints | Description | Example |
|---|---|---|---|---|---|
report_id | integer | Yes (POST) | Must reference an existing report | The ID of the report to schedule | 37 |
report_name | string | No (read-only) | Populated by the system from the report | The display name of the scheduled report | "Quarterly Performance Report" |
portfolio_id | array | Yes (POST) | Array of valid portfolio IDs; at least one required | The portfolio IDs included in the schedule | [56659, 23546, 65987] |
frequency | string | Yes (POST) | Enum: DAILY, WEEKLY, MONTHLY, QUARTERLY, ANNUALLY | How often the schedule runs | "QUARTERLY" |
start_date | string | Yes (POST) | Format: YYYY-MM-DD; must be today or a future date | When the schedule begins | "2026-10-01" |
time | string | Yes (POST) | Format: HH:MM (24-hour, firm timezone) | The time of day the scheduled run executes | "09:00" |
report_time_period | string | Yes (POST) | Enum: PAST_DAY, PAST_WEEK, PAST_MONTH, PAST_QUARTER, PAST_YEAR, CUSTOM | The lookback window for report data | "PAST_QUARTER" |
portal_publishing | string | No | Enum: PUBLISH, DO_NOT_PUBLISH, USE_CONTACT_PREFERENCE; default: USE_CONTACT_PREFERENCE | Whether to publish the generated PDF to Client Portal | "USE_CONTACT_PREFERENCE" |
email_notification | string | No | Enum: NOTIFY, DO_NOT_NOTIFY, USE_CONTACT_PREFERENCE; default: USE_CONTACT_PREFERENCE | Whether to email contacts affiliated with the portfolio | "USE_CONTACT_PREFERENCE" |
label | string | No | Max 255 chars | The label tagged to the file in File Vault | "Performance" |
next_run_date | string | No (read-only) | Format: YYYY-MM-DD; populated by the system | The next date this schedule will execute | "2027-01-01" |
Filter parameters
Use filter parameters with the GET list endpoint to narrow results.
| Parameter | Type | Constraints | Description | Example |
|---|---|---|---|---|
report_ids[] | integer | Must be a valid report ID | Returns schedules for the specified report IDs | ?report_ids[]=2&report_ids[]=4 |
entity_ids[] | integer | Must be a valid entity or group ID | Returns schedules created for the specified entity | ?entity_ids[]=218 |
frequencies[] | string | Enum: DAILY, WEEKLY, MONTHLY, QUARTERLY, ANNUALLY | Returns schedules matching the specified frequency | ?frequencies[]=DAILY |
creator_ids[] | integer | Must be a valid user ID | Returns schedules created by the specified user | ?creator_ids[]=5 |
List all schedules
Retrieves all report schedules within the authenticated user's firm.
curl --request GET \
--url 'https://examplefirm.addepar.com/api/v1/report_schedule' \
--header 'Authorization: Basic {base64_encoded_credentials}' \
--header 'Addepar-Firm: {firm_id}' \
--header 'Accept: application/vnd.api+json'{
"data": [
{
"id": "142",
"type": "report_schedules",
"attributes": {
"report_id": 37,
"report_name": "Quarterly Performance Report",
"portfolio_id": [56659, 23546],
"frequency": "QUARTERLY",
"start_date": "2026-10-01",
"time": "09:00",
"report_time_period": "PAST_QUARTER",
"portal_publishing": "USE_CONTACT_PREFERENCE",
"email_notification": "USE_CONTACT_PREFERENCE",
"label": "Performance",
"next_run_date": "2027-01-01"
},
"links": {
"self": "/v1/report_schedule/142"
}
}
],
"included": [],
"links": {
"next": "/v1/report_schedule?page[number]=1&page[size]=50"
}
}{
"errors": [
{
"status": "403",
"title": "Forbidden",
"detail": "User does not have access to reporting"
}
]
}Response codes:
200 OK-- Schedules retrieved successfully403 Forbidden-- Missing reporting permission; confirm the API user has "Access to reporting" enabled
Filtering example
curl --request GET \
--url 'https://examplefirm.addepar.com/api/v1/report_schedule?report_ids[]=37&frequencies[]=QUARTERLY' \
--header 'Authorization: Basic {base64_encoded_credentials}' \
--header 'Addepar-Firm: {firm_id}' \
--header 'Accept: application/vnd.api+json'Get a schedule by ID
Retrieves a single report schedule by its numeric ID.
curl --request GET \
--url 'https://examplefirm.addepar.com/api/v1/report_schedule/142' \
--header 'Authorization: Basic {base64_encoded_credentials}' \
--header 'Addepar-Firm: {firm_id}' \
--header 'Accept: application/vnd.api+json'{
"data": {
"id": "142",
"type": "report_schedules",
"attributes": {
"report_id": 37,
"report_name": "Quarterly Performance Report",
"portfolio_id": [56659, 23546, 65987],
"frequency": "QUARTERLY",
"start_date": "2026-10-01",
"time": "09:00",
"report_time_period": "PAST_QUARTER",
"portal_publishing": "USE_CONTACT_PREFERENCE",
"email_notification": "USE_CONTACT_PREFERENCE",
"label": "Performance",
"next_run_date": "2027-01-01"
},
"links": {
"self": "/v1/report_schedule/142"
}
},
"included": []
}{
"errors": [
{
"status": "404",
"title": "Not Found",
"detail": "Schedule 999 does not exist or is not accessible to this user"
}
]
}Response codes:
200 OK-- Schedule retrieved successfully403 Forbidden-- Missing reporting permission; confirm the API user has "Access to reporting" enabled404 Not Found-- Schedule does not exist or is outside the authenticated user's firm; verify the schedule ID
Create a schedule
Creates a new report schedule. The schedule begins running at the specified start_date and time.
curl --request POST \
--url 'https://examplefirm.addepar.com/api/v1/report_schedule' \
--header 'Authorization: Basic {base64_encoded_credentials}' \
--header 'Addepar-Firm: {firm_id}' \
--header 'Content-Type: application/vnd.api+json' \
--header 'Accept: application/vnd.api+json' \
--data '{
"data": {
"type": "report_schedules",
"attributes": {
"report_id": 37,
"portfolio_id": [56659, 23546],
"frequency": "QUARTERLY",
"start_date": "2026-10-01",
"time": "09:00",
"report_time_period": "PAST_QUARTER",
"portal_publishing": "USE_CONTACT_PREFERENCE",
"email_notification": "USE_CONTACT_PREFERENCE",
"label": "Performance"
}
}
}'{
"data": {
"id": "144",
"type": "report_schedules",
"attributes": {
"report_id": 37,
"report_name": "Quarterly Performance Report",
"portfolio_id": [56659, 23546],
"frequency": "QUARTERLY",
"start_date": "2026-10-01",
"time": "09:00",
"report_time_period": "PAST_QUARTER",
"portal_publishing": "USE_CONTACT_PREFERENCE",
"email_notification": "USE_CONTACT_PREFERENCE",
"label": "Performance",
"next_run_date": "2027-01-01"
},
"links": {
"self": "/v1/report_schedule/144"
}
},
"included": []
}{
"errors": [
{
"status": "400",
"title": "Bad Request",
"detail": "Missing required attribute: report_id"
}
]
}Response codes:
201 Created-- Schedule created successfully400 Bad Request-- Missing or invalid parameters; check thedetailfield for the specific attribute that failed validation403 Forbidden-- Missing reporting, scheduler, or portfolio permission; confirm all three are enabled for the API user404 Not Found-- The referencedreport_iddoes not exist or is not accessible; verify the report exists before scheduling
Edit a schedule
Updates an existing schedule. Include only the attributes you want to change. Omitted attributes retain their current values.
curl --request PATCH \
--url 'https://examplefirm.addepar.com/api/v1/report_schedule/142' \
--header 'Authorization: Basic {base64_encoded_credentials}' \
--header 'Addepar-Firm: {firm_id}' \
--header 'Content-Type: application/vnd.api+json' \
--header 'Accept: application/vnd.api+json' \
--data '{
"data": {
"id": "142",
"type": "report_schedules",
"attributes": {
"frequency": "MONTHLY",
"time": "07:00",
"portal_publishing": "PUBLISH",
"email_notification": "NOTIFY"
}
}
}'{
"data": {
"id": "142",
"type": "report_schedules",
"attributes": {
"report_id": 37,
"report_name": "Quarterly Performance Report",
"portfolio_id": [56659, 23546, 65987],
"frequency": "MONTHLY",
"start_date": "2026-10-01",
"time": "07:00",
"report_time_period": "PAST_QUARTER",
"portal_publishing": "PUBLISH",
"email_notification": "NOTIFY",
"label": "Performance",
"next_run_date": "2026-11-01"
},
"links": {
"self": "/v1/report_schedule/142"
}
},
"included": []
}{
"errors": [
{
"status": "400",
"title": "Bad Request",
"detail": "Invalid value for frequency: must be one of DAILY, WEEKLY, MONTHLY, QUARTERLY, ANNUALLY"
}
]
}Response codes:
200 OK-- Schedule updated successfully400 Bad Request-- Invalid attribute value; check thedetailfield for allowed values403 Forbidden-- Missing reporting, scheduler, or portfolio permission; confirm all three are enabled404 Not Found-- Schedule does not exist or is outside the authenticated user's firm; verify the schedule ID
Delete a schedule
Permanently deletes a schedule. This stops all future runs. This action cannot be undone.
curl --request DELETE \
--url 'https://examplefirm.addepar.com/api/v1/report_schedule/142' \
--header 'Authorization: Basic {base64_encoded_credentials}' \
--header 'Addepar-Firm: {firm_id}' \
--header 'Accept: application/vnd.api+json'No response body is returned on successful deletion.
Response codes:
204 No Content-- Schedule deleted successfully403 Forbidden-- Missing reporting, scheduler, or portfolio permission; confirm all three are enabled404 Not Found-- Schedule does not exist or is outside the authenticated user's firm; verify the schedule ID
Related resources
- Report Generation -- Run a report on demand outside of a schedule
- Generated Reports -- Access completed report runs and download PDF files
- Report List -- Retrieve report IDs for use with scheduling endpoints
- Pagination -- Cursor-based pagination for list requests
Updated 6 days ago