Skip to main content

Bulk Export Reference Guide

Updated this week

Stellic provides a RESTful interface that enables you to export data on demand. It offers secure endpoints for programmatic access to Stellic resources, complementing other integration methods to deliver near real-time data to your users.

There are few things to keep in mind when using the bulk export endpoints:

  • You must have superadmin permissions to access these endpoints.

  • All date/time fields use UTC timezone by default.

  • The bulk export process will vary depending on the volume of data requested

    • Small volumes of data may be exported via a single synchronous request.

    • Larger data exports must be performed via an asynchronous process that requires multiple steps.


Parameters and structure

The base URL for the export API is as follows:

https://{hostname}/exports/export_data/{data_type}?output_format={output_format}&delivery_channel={delivery_channel}

The URL has three main parameters:

  • data_type [Required]

    • This parameter defines what data type you wish to be exported

    • This is a URL parameter and is included in the path of the URL

    • See below for a list of the data types we currently support

  • output_format [Required]

    • This parameter defines how the exported data will be formatted

    • This is a query parameter. The only value supported at this time is: csv

  • delivery_channel [Optional]

    • This parameter controls whether data is exported via a synchronous or asynchronous flow. See the Synchronous and asynchronous bulk export flows section for more information

    • If this parameter is omitted, the endpoint will default to the synchronous flow

    • This is a query parameter and the currently supported values are:

      • http_file which requests the synchronous flow

      • s3 which requests the asynchronous flow

        • Sample API URL: https://{hostname}/exports/export_data/bulk_exceptions_detailed?output_format=csv&delivery_channel=s3
    • Note: if delivery_channel is not specified, a Stellic internal method will determine whether the export should run asynchronously instead of the synchronous default. For async exports, the requester will receive in-app notifications on progress, including scheduled, completed.


Synchronous and asynchronous bulk export flows

All bulk export endpoints support two modes of operation: synchronous and asynchronous. You can control which mode is used by setting the optional delivery_channel query parameter.

The synchronous flow

When the delivery_channel parameter is omitted or set to http_file, the endpoint uses the synchronous flow.

For synchronous exports, the process requires just a single API call, making it simpler but unsuitable for large data volumes. Attempting to export extensive datasets synchronously will result in request failures.

The asynchronous flow

When the delivery_channel parameter is set to s3, the endpoint uses the asynchronous flow.

In order to export larger volumes of data, you must use the asynchronous flow. The asynchronous flow requires several steps as follows:

1. Initiate the export

Navigate to your formatted url:

https://{hostname}/exports/export_data/{data_type}?output_format=csv&delivery_channel=s3

Example url:

https://{hostname}/exports/export_data/plan_courses?output_format=csv&delivery_channel=s3

This starts the export process, and should respond with data that looks like:

{
"success": true,
"data": {
"name": "Plan courses",
"bg_task": {
"name": "async_export",
"description": "Exports a report asynchronously",
"status": "not_started",
"start_time": null,
"end_time": null,
"task_id": "7df0a737-c2ca-4fba-847c-dba72085d071",
"created_time": "2025-04-08 18:20:33.229534+00:00"
},
"status": "not_started",
"file_name": "plan_courses-20250408_182033Z-9aQXvxxy.csv",
"requested_on": "2025-04-08 18:20:33.236624+00:00",
"file_expiry": "2025-04-11 18:20:33.236624+00:00"
}
}

Take note of the value under the data -> file_name key, in this case it is: plan_courses-20250408_182033Z-9aQXvxxy.csv

2. Check if the exported data is ready

Navigate to your formatted url:

https://{hostname}/exports/get_export_url/?file_name={file_name_from_step_1}

Using the response from the previous step, the url would be:

https://{hostname}/exports/get_export_url/?file_name=plan_courses-20250408_182033Z-9aQXvxxy.csv

You will see a response that looks like the following:

{
"success": true,
"status": "started",
"url": null

}

Reload the page until the response changes to something like the following:

{
"success": true,
"status": "completed",
"url": "https://stellicuni.s3.amazonaws.com/export/plan_courses-20250408_182033Z-9aQXvxxy.csv?AWSAccessKeyId={long_string}&Signature={another_long_string}&Expries=1744139034"
}

Take note of the value under the url key, in this case it is:

https://stellicuni.s3.amazonaws.com/export/plan_courses-20250408_182033Z-9aQXvxxy.csv?AWSAccessKeyId={long_string}&Signature={another_long_string}&Expries=174413903

3. Download the export data

Navigate to the URL from step 2 to download the report.


Data types and sample URLs

Data Type

Description and Sample URL

audit_data

Exports basic details about all audits (name, status, scope, etc.)

Sample API URL:

https://{hostname}/exports/export_data/audit_data?output_format=csv

audit_requirements

Exports all the requirements of an audit along with the constraints on each requirement.

reset_cache: [Optional] If set to true, it updates the cache of all audits. Helpful in the case where the cache needs to be updated to export the latest data (Especially type strings). Note: this can significantly increase export time.

for_ext_ids: [Optional] If set to true, it does not export the constraints for each requirement. Instead, for each requirement it gives out a column for external ids present on the requirement. By default, it is set to false.

Sample API URL:

https://{hostname}/exports/export_data/audit_requirements?output_format=csv&for_ext_ids=false

bulk_exceptions_detailed

This endpoint provides a comprehensive export of all exceptions in the system, including those that have been canceled or denied.

school_shortname={IA} [Optional] to only export exceptions for a single school. Must use valid school ID from configuration data.

  • include_all=true [Optional] Include all exceptions regardless of status (active, pending, inactive, canceled, denied). Defaults to true.

  • include_all=false [Optional] Only export active exceptions.

  • exclude_archived=true [Optional] If set to true, it will only export exceptions on unarchived students. Defaults to False, which will include exceptions on both archived and unarchived students.

Sample API URL:

https://{hostname}/exports/export_data/bulk_exceptions_detailed?output_format=csv&school_shortname=IA&include_all=false

bulk_pathways

Exports data of all pathways.

  • include_placeholders: [Optional] If set to true, it fetches placeholders in addition to the planned courses and extracurricular activities. Default value is false.

  • include_extracurriculars: [Optional] If set to true, it fetches extracurricular activities along with planned courses. Default value is false.

Sample API URL:

https://{hostname}/exports/export_data/bulk_pathways?output_format=csv&include_placeholders=true&include_extracurriculars=true

dynamic_group_entities

Exports membership details for a specified dynamic group

This endpoint allows users to export all membership details for any dynamic group in the system. The export includes user information such as first name, last name, email, the dynamic group name, and program/department/school affiliation.

Parameters:

  • dynamic_group [Required]: The name of the dynamic group for which to export membership data. The group name should be URL encoded.

Sample API URL:

https://{hostname}/exports/export_data/dynamic_group_entities?output_format=csv&dynamic_group={dynamic_group_name}

export_workflow_responses

Exports all the requests of a specified workflow.

  • workflow_id: [Required] Specifies which workflow to get the petition from. e.g. 1, 2,3, etc.

Sample API URL:

https://{hostname}/exports/export_data/export_workflow_responses?output_format=csv&workflow_id=1

incorrect_audit_applications

Exports a list of students along with their audit applications' details, and whether the audit applied to a student's program matches the expected audit version; also identifies if an audit was manually applied to a student.

Sample API URL:

https://{hostname}/exports/export_data/incorrect_audit_applications?output_format=csv

plan_courses

Exports course information for students based on the mode parameter selected in the query.

  • mode: [Required] This parameter determines the type of courses to fetch. Acceptable values are either planned or unmatched.

  • course_filter: [Optional] Acceptable values are either registered or planned. This parameter determines whether to include courses from official audit (registered) or from the planned audit (planned). Defaults to registered.

Sample API URL:

https://{hostname}/exports/export_data/plan_courses?output_format=csv&mode=unmatched&course_filter=registered

plancourse_enrollment_by_term

Exports number of enrollments in courses by term.

  • years: [Required] A list of years for which to get the data of, such as 2023, 2024

  • school_name: [Required] Filters student based on the specified school. Must use a valid school ID.

Sample API URL:

https://{hostname}/exports/export_data/plancourse_enrollment_by_term?output_format=csv&years=[2020,2021,2022,2023]&school_name=Divinity School

programs_without_audits

Exports all programs which do not have an audit.

Sample API URL:

https://{hostname}/exports/export_data/programs_without_audits?output_format=csv

registration_details

Exports details about the courses each student has pre-registered for in a specific semester and year.

Note: This export is specific to institutions who use Stellic for pre-registration course requesting processes.

  • year: [Required] The year of pre-registration. e.g. 2022, 2023 etc.

  • semester: [Required] The semester of pre-registration. e.g. winter, fall etc.

  • timestamp: [Optional] If provided, it only fetches pre-registration before the specified timestamp. e.g. 2023-01-19 01:53.

  • all_students: [Optional] if provided, it fetches a list of all students, including the students who have not pre-registered for any course during the specified year and semester. Acceptable values: true and false.

Sample API URL:

https://{hostname}/exports/export_data/registration_details?output_format=csv&semester=winter&year=2023&timestamp=2023-01-17 01:53&all_students=True

sections_counting_for_reqs

Exports courses and requirements from course sections that are counting towards requirements.

Note: This operation is performed in the background and exported in csv format.

  • usem_ids [Required]: The term_id for one or multiple unique semesters. This parameter identifies the semesters for which the course section requirement counts are to be exported.

Sample API URL:

For Exporting Data of a Single Term:

https://{hostname}/exports/export_data/audit_coursesection_requirement_count?output_format=csv&usem_ids=2434

For Exporting Data of Multiple Terms:

https://{hostname}/exports/export_data/audit_coursesection_requirement_count?output_format=csv&usem_ids=2434&usem_ids=3435

student_geneds

Exports details about general requirements applied to students

Sample API URL:

https://{hostname}/exports/export_data/student_geneds?output_format=csv

tagged_notes

Exports all the notes with tag X along with information about the linked student and the note creator.

  • tag: [Required] This parameter takes input of what โ€œtagโ€ to search for on notes.

Sample API URL:

https://{hostname}/exports/export_data/tagged_notes?output_format=csv&tag=2023FANeverAttended

user_groups

Exports a list of all available user groups

Sample API URL:

https://{hostname}/exports/export_data/user_groups?output_format=csv

Did this answer your question?