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
EndpointsGET /v1/report_schedule /v1/report_schedule/:id POST /v1/report_schedule PATCH /v1/report_schedule/:id DELETE /v1/report_schedule/:id
ProducesJSON (JSON:API format)
PaginationYes (default: 50 per page)
Application PermissionsGET: Access to reporting. POST, PATCH, DELETE: Access to reporting, scheduler, and portfolios.
OAuth ScopesREPORTS_WRITE

Resource attributes

All attributes below are returned in successful GET responses.

AttributeTypeRequiredConstraintsDescriptionExample
report_idintegerYes (POST)Must reference an existing reportThe ID of the report to schedule37
report_namestringNo (read-only)Populated by the system from the reportThe display name of the scheduled report"Quarterly Performance Report"
portfolio_idarrayYes (POST)Array of valid portfolio IDs; at least one requiredThe portfolio IDs included in the schedule[56659, 23546, 65987]
frequencystringYes (POST)Enum: DAILY, WEEKLY, MONTHLY, QUARTERLY, ANNUALLYHow often the schedule runs"QUARTERLY"
start_datestringYes (POST)Format: YYYY-MM-DD; must be today or a future dateWhen the schedule begins"2026-10-01"
timestringYes (POST)Format: HH:MM (24-hour, firm timezone)The time of day the scheduled run executes"09:00"
report_time_periodstringYes (POST)Enum: PAST_DAY, PAST_WEEK, PAST_MONTH, PAST_QUARTER, PAST_YEAR, CUSTOMThe lookback window for report data"PAST_QUARTER"
portal_publishingstringNoEnum: PUBLISH, DO_NOT_PUBLISH, USE_CONTACT_PREFERENCE; default: USE_CONTACT_PREFERENCEWhether to publish the generated PDF to Client Portal"USE_CONTACT_PREFERENCE"
email_notificationstringNoEnum: NOTIFY, DO_NOT_NOTIFY, USE_CONTACT_PREFERENCE; default: USE_CONTACT_PREFERENCEWhether to email contacts affiliated with the portfolio"USE_CONTACT_PREFERENCE"
labelstringNoMax 255 charsThe label tagged to the file in File Vault"Performance"
next_run_datestringNo (read-only)Format: YYYY-MM-DD; populated by the systemThe next date this schedule will execute"2027-01-01"

Filter parameters

Use filter parameters with the GET list endpoint to narrow results.

ParameterTypeConstraintsDescriptionExample
report_ids[]integerMust be a valid report IDReturns schedules for the specified report IDs?report_ids[]=2&report_ids[]=4
entity_ids[]integerMust be a valid entity or group IDReturns schedules created for the specified entity?entity_ids[]=218
frequencies[]stringEnum: DAILY, WEEKLY, MONTHLY, QUARTERLY, ANNUALLYReturns schedules matching the specified frequency?frequencies[]=DAILY
creator_ids[]integerMust be a valid user IDReturns 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 successfully
  • 403 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 successfully
  • 403 Forbidden -- Missing reporting permission; confirm the API user has "Access to reporting" enabled
  • 404 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 successfully
  • 400 Bad Request -- Missing or invalid parameters; check the detail field for the specific attribute that failed validation
  • 403 Forbidden -- Missing reporting, scheduler, or portfolio permission; confirm all three are enabled for the API user
  • 404 Not Found -- The referenced report_id does 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 successfully
  • 400 Bad Request -- Invalid attribute value; check the detail field for allowed values
  • 403 Forbidden -- Missing reporting, scheduler, or portfolio permission; confirm all three are enabled
  • 404 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 successfully
  • 403 Forbidden -- Missing reporting, scheduler, or portfolio permission; confirm all three are enabled
  • 404 Not Found -- Schedule does not exist or is outside the authenticated user's firm; verify the schedule ID

Related resources


Did this page help you?