Report Schedules

Use the Report Schedule API to manage automated report schedules from outside of Addepar. Schedule reports to run on a recurring basis and monitor their configuration.

Overview

Base route/v1/report_schedule
ProducesJSON
PaginationYes
OAuth scopesREPORTS_WRITE

πŸ“˜

Access requirements

GET: Access to reporting.
POST, PATCH, DELETE: Access to reporting, scheduler, and portfolios.

Resource attributes

AttributeDescription
report_idInteger -- The ID of the report to schedule. Example: 37
report_nameString -- Read-only. The display name of the report. Example: "Quarterly Performance Report"
portfolio_idArray -- Portfolio IDs included in the schedule. Example: [56659, 23546]
frequencyString -- Recurrence interval. Values: DAILY, WEEKLY, MONTHLY, QUARTERLY, ANNUALLY Example: "QUARTERLY"
start_dateString -- Schedule start date in YYYY-MM-DD format. Example: "2026-10-01"
timeString -- Scheduled run time in firm timezone. Format: HH:MM. Example: "09:00"
report_time_periodString -- Time period covered by the report. Values: PAST_DAY, PAST_WEEK, PAST_MONTH, PAST_QUARTER, PAST_YEAR, CUSTOM Example: "PAST_QUARTER"
portal_publishingString -- Portal publishing behavior. Values: PUBLISH, DO_NOT_PUBLISH, USE_CONTACT_PREFERENCE Example: "USE_CONTACT_PREFERENCE"
email_notificationString -- Email notification behavior. Values: NOTIFY, DO_NOT_NOTIFY, USE_CONTACT_PREFERENCE Example: "USE_CONTACT_PREFERENCE"
labelString -- Label tagged to the file in File Vault. Example: "Performance"
next_run_dateString -- Read-only. Next scheduled run date. YYYY-MM-DD format. Example: "2027-01-01"

Filter parameters

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

ParameterDescription
filter[reportId]Returns only schedules tied to the specified report IDs. Example: report_ids[]=2&report_ids[]=4
filter[entity]Returns only schedules for the specified entity or group ID. Example: entity_ids[]=218
filter[frequency]Returns only schedules matching the specified frequency. Example: frequencies[]=DAILY
filter[creator]Returns only schedules matching the specified creator. Example: creator_ids[]=5

Get all schedules

Retrieves all report schedules within the authenticated user's firm.

GET /v1/report_schedule

πŸ“˜

Authentication

All requests require a base64-encoded API key pair:

Authorization: Basic {base64(key_id:key_secret)}

See Access & Authentication for setup.

curl -X GET "https://{firm}.addepar.com/api/v1/report_schedule" \
  -H "Authorization: Basic {credentials}" \
  -H "Addepar-Firm: 1" \
  -H "Accept: application/vnd.api+json"
{
  "data": [
    {
      "id": "142",
      "type": "report_schedules",
      "attributes": {
        "email_notification": "USE_CONTACT_PREFERENCE",
        "frequency": "QUARTERLY",
        "label": "Performance",
        "next_run_date": "2027-01-01",
        "portfolio_id": [56659, 23546],
        "portal_publishing": "USE_CONTACT_PREFERENCE",
        "report_id": 37,
        "report_name": "Quarterly Performance Report",
        "report_time_period": "PAST_QUARTER",
        "start_date": "2026-10-01",
        "time": "09:00"
      },
      "links": {
        "self": "/v1/report_schedule/142"
      }
    },
    {
      "id": "143",
      "type": "report_schedules",
      "attributes": {
        "email_notification": "NOTIFY",
        "frequency": "MONTHLY",
        "label": "Holdings",
        "next_run_date": "2026-09-01",
        "portfolio_id": [12345],
        "portal_publishing": "PUBLISH",
        "report_id": 42,
        "report_name": "Monthly Holdings Summary",
        "report_time_period": "PAST_MONTH",
        "start_date": "2026-08-01",
        "time": "05:00"
      },
      "links": {
        "self": "/v1/report_schedule/143"
      }
    }
  ],
  "included": [],
  "links": {
    "next": "/v1/report_schedule?page[limit]=25&page[cursor]=abc123"
  }
}
{
  "errors": [
    {
      "id": "forbidden",
      "status": "403",
      "title": "Forbidden",
      "detail": "Insufficient permissions. Required: access to reporting."
    }
  ]
}

πŸ“˜

Filtering

Combine query parameters to narrow results:
GET /v1/report_schedule?report_ids[]=37&frequencies[]=QUARTERLY

Response codes:

  • 200 OK -- Success
  • 401 Unauthorized -- Invalid or missing authentication
  • 403 Forbidden -- Lacking reporting permission

Get a schedule by ID

Retrieves details for a specific schedule.

GET /v1/report_schedule/:id

curl -X GET "https://{firm}.addepar.com/api/v1/report_schedule/142" \
  -H "Authorization: Basic {credentials}" \
  -H "Addepar-Firm: 1" \
  -H "Accept: application/vnd.api+json"
{
  "data": {
    "id": "142",
    "type": "report_schedules",
    "attributes": {
      "email_notification": "USE_CONTACT_PREFERENCE",
      "frequency": "QUARTERLY",
      "label": "Performance",
      "next_run_date": "2027-01-01",
      "portfolio_id": [56659, 23546, 65987],
      "portal_publishing": "USE_CONTACT_PREFERENCE",
      "report_id": 37,
      "report_name": "Quarterly Performance Report",
      "report_time_period": "PAST_QUARTER",
      "start_date": "2026-10-01",
      "time": "09:00"
    },
    "links": {
      "self": "/v1/report_schedule/142"
    }
  },
  "included": []
}
{
  "errors": [
    {
      "id": "not_found",
      "status": "404",
      "title": "Not Found",
      "detail": "Schedule does not exist or is not accessible with current permissions."
    }
  ]
}

Response codes:

  • 200 OK -- Success
  • 401 Unauthorized -- Invalid or missing authentication
  • 403 Forbidden -- Lacking reporting permission
  • 404 Not Found -- Schedule not found or not accessible

Create a schedule

Creates a new report schedule.

POST /v1/report_schedule

⚠️

Required fields

You must include report_id, portfolio_id, frequency, start_date, and time in the request body.

curl -X POST "https://{firm}.addepar.com/api/v1/report_schedule" \
  -H "Authorization: Basic {credentials}" \
  -H "Addepar-Firm: 1" \
  -H "Content-Type: application/vnd.api+json" \
  -H "Accept: application/vnd.api+json" \
  -d '{
    "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": {
      "email_notification": "USE_CONTACT_PREFERENCE",
      "frequency": "QUARTERLY",
      "label": "Performance",
      "next_run_date": "2027-01-01",
      "portfolio_id": [56659, 23546],
      "portal_publishing": "USE_CONTACT_PREFERENCE",
      "report_id": 37,
      "report_name": "Quarterly Performance Report",
      "report_time_period": "PAST_QUARTER",
      "start_date": "2026-10-01",
      "time": "09:00"
    },
    "links": {
      "self": "/v1/report_schedule/144"
    }
  },
  "included": []
}
{
  "errors": [
    {
      "id": "bad_request",
      "status": "400",
      "title": "Bad Request",
      "detail": "Validation failed: 'frequency' is required."
    }
  ]
}

Response codes:

  • 201 Created -- Schedule created successfully
  • 400 Bad Request -- Missing or invalid parameters
  • 401 Unauthorized -- Invalid or missing authentication
  • 403 Forbidden -- Lacking reporting, scheduler, or portfolio permission
  • 404 Not Found -- Report not found or not accessible
  • 409 Conflict -- Duplicate schedule

Edit a schedule

Updates an existing schedule. Only include the attributes you want to change.

PATCH /v1/report_schedule/:id

curl -X PATCH "https://{firm}.addepar.com/api/v1/report_schedule/142" \
  -H "Authorization: Basic {credentials}" \
  -H "Addepar-Firm: 1" \
  -H "Content-Type: application/vnd.api+json" \
  -H "Accept: application/vnd.api+json" \
  -d '{
    "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": {
      "email_notification": "NOTIFY",
      "frequency": "MONTHLY",
      "label": "Performance",
      "next_run_date": "2026-11-01",
      "portfolio_id": [56659, 23546, 65987],
      "portal_publishing": "PUBLISH",
      "report_id": 37,
      "report_name": "Quarterly Performance Report",
      "report_time_period": "PAST_QUARTER",
      "start_date": "2026-10-01",
      "time": "07:00"
    },
    "links": {
      "self": "/v1/report_schedule/142"
    }
  },
  "included": []
}
{
  "errors": [
    {
      "id": "bad_request",
      "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 parameters
  • 401 Unauthorized -- Invalid or missing authentication
  • 403 Forbidden -- Lacking reporting, scheduler, or portfolio permission
  • 404 Not Found -- Schedule not found or not accessible

Delete a schedule

Permanently deletes an existing schedule.

DELETE /v1/report_schedule/:id

⚠️

Irreversible

This operation cannot be undone. The schedule's execution history is also removed.

curl -X DELETE "https://{firm}.addepar.com/api/v1/report_schedule/142" \
  -H "Authorization: Basic {credentials}" \
  -H "Addepar-Firm: 1" \
  -H "Accept: application/vnd.api+json"
HTTP/1.1 204 No Content
{
  "errors": [
    {
      "id": "not_found",
      "status": "404",
      "title": "Not Found",
      "detail": "Schedule 142 does not exist or is not accessible."
    }
  ]
}

Response codes:

  • 204 No Content -- Schedule deleted successfully
  • 401 Unauthorized -- Invalid or missing authentication
  • 403 Forbidden -- Lacking reporting, scheduler, or portfolio permission
  • 404 Not Found -- Schedule not found or not accessible

πŸ“˜

Related resources

  • Generated Reports -- Access completed report runs and download files.
  • Report List -- Retrieve report IDs for use with reporting endpoints.
  • Jobs -- Understand async job patterns used across the API.

Did this page help you?