Stellic Export API Documentation
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.
Important Notes:
There are a 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
Our system enforces a 2-minute request timeout limit - requests for large data exports may time out
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.
This parameter should be provided only if you want to explicitly choose a delivery channel, such as forcing either an S3 export or a local download.
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 and allows you to download the requested file on your PC/Mac β’ s3
which requests the asynchronous flow and allows you to upload the data to S3, which is useful for very large data sets that will time out in the UI
Sample API URL:
https://{hostname}/exports/export_data/bulk_exceptions_detailed?output_format=csv&delivery_channel=s3
Note: if delivery_channel is not specified, an internal method will determine whether the export should run asynchronously based on the export type. This heuristic is managed internally by the backend (By default it is synchronous). For example, if the export type, such as audit_requirements, is determined to run asynchronously, the request will return a JSON response with status information. The requester will then receive in-app notifications on the progress, including scheduled, started, completed/failed, etc.
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.
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 |
| Exports data of all audits
Sample API URL: https://{hostname}/exports/export_data/audit_data?output_format=csv |
| Exports all the requirements of an audit along with the constraints on each requirement.
Parameters:
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). This is generally for developers to run from backend. Will generally timeout through the URL
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?delivery_channel=http_file&output_format=csv&for_ext_ids=true&reset_cache=false |
| Exports all exceptions, parameter
Parameters:
Optional: To only export exceptions for a single school. Must use valid school ID from configuration data.
Optional: Include all exceptions regardless of status (active, pending, inactive, canceled, denied).
Optional: to export all students (archived and non-archived)
Sample API URL: https://{hostname}/exports/export_data/bulk_exceptions_detailed?output_format=csv&include_all=true |
| Exports data of all pathways in bulk Parameters:
Optional: If set to true, it fetches placeholders in addition to the planned courses and extracurricular activities. Default value is false.
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 |
| Exports all users and groups assigned to a specific dynamic group, including entity information (programs, departments, schools).
Parameters:
Required: The name of the dynamic group to export entities for. e.g. "Engineering Students"
Sample API URL: https://{hostname}/exports/export_data/dynamic_group_entities?output_format=csv&dynamic_group=Engineering Students |
| Exports the engagement scores for all students. The engagement score is a measure of a student's interaction and participation in the system.
Sample API URL: https://{hostname}/exports/export_data/engagement_score?output_format=csv |
| Exports all the petitions of a specified workflow.
Parameters:
Required: Specifies which workflow to get the petition from. e.g. 1, 23, etc.
Sample API URL: https://{hostname}/exports/export_data/export_workflow_responses?output_format=csv&workflow_id=1 |
| Exports a list of students along with their audit applications' details. Specifically, it checks whether the audit applied to a student's program matches the expected audit version and identifies if the audit was manually applied.
Sample API URL: https://{hostname}/exports/export_data/incorrect_audit_applications?output_format=csv |
| Exports course information for students based on the mode parameter.
Parameters:
Required: This parameter determines the type of courses to fetch. Can be either planned or unmatched.
Optional: Can be either registered or planned. It determines whether to include courses from official audit (registered) or from the planned courses (planned). Defaults to registered.
Sample API URL: https://{hostname}/exports/export_data/plan_courses?output_format=csv&mode=unmatched&course_filter=registered |
| Exports the number of enrollment in plan courses over each term.
Parameters:
Required: A list of years for which to get the data of. e.g. [2021, 2022]
Required: Filters student based on the specified school. e.g. Divinity School etc.
Sample API URL: https://{hostname}/exports/export_data/plancourse_enrollment_by_term?output_format=csv&years=[2020,2021,2022,2023]&school_name=Divinity School |
| Exports all programs which do not have a relevant audit
Sample API URL: https://{hostname}/exports/export_data/programs_without_audits?output_format=csv |
| Exports details about the courses each student has pre-registered for in a specific semester and year. Parameters:
Required: The year of pre-registration. e.g. 2022, 2023 etc.
Required: The semester of pre-registration. e.g. winter, fall etc.
Optional: If provided, it only fetches pre-registration before the specified timestamp. e.g. 2023-01-19 01:53
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. e.g. True or False. Defaults to False
Sample API URL: https://{hostname}/exports/export_data/registration_details?output_format=csv&semester=winter&year=2023×tamp=2023-01-17 01:53&all_students=True |
| This endpoint exports courses and requirements from course sections that are counting towards requirements. The operation is performed in the background.
Parameters:
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
Output Format: The data is exported in CSV format.
Sample API URL:For Exporting Data of a Single Term: https://{hostname}/exports/export_data/sections_counting_for_reqs?output_format=csv&usem_ids=2434 For Exporting Data of Multiple Terms: https://{hostname}/exports/export_data/sections_counting_for_reqs?output_format=csv&usem_ids=2434&usem_ids=3435 |
| Exports information about what and how many Geneds each student is enrolled in
Sample API URL: https://{hostname}/exports/export_data/student_geneds?output_format=csv |
| Exports all the notes with tag X along with information about the linked student and the note creator. Parameters:
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 |
| Exports administrative information about staff members who have admin roles, including their appointment timeblock creation status, calendar integration, and appointment scheduling activity.
Sample API URL: https://{hostname}/exports/export_data/appointments_admin_info?output_format=csv |
| Exports the credits counting towards specific requirements for each student across their programs. Parameters
Required: A list of requirement screen names to get credit data for. e.g. ["Writing Requirement", "Science Requirement"]
Optional: Can be either official or planned. Determines whether to use official audit data or include planned courses. Defaults to official.
Optional: If set to true, excludes archived students from the export. Defaults to true.
Sample API URL: https://{hostname}/exports/export_data/requirement_units_taken?output_format=csv&screen_names=["Writing Requirement","Science Requirement"]&audit_mode=official&exclude_archived=true |
| Exports detailed permission information for users or groups, including object-level permissions across the system.
Parameters:
Optional: A list of usernames to export permissions for. e.g. ["john.doe", "jane.smith"]
Optional: A list of group IDs to export permissions for. e.g. [1, 23, 45] Note: If group_ids is provided and non-empty, exports group permissions; otherwise, exports user permissions.
Sample API URL: https://{hostname}/exports/export_data/permissions?output_format=csv&usernames=["jdoe","jsmith"] |
| Exports graduation application data with filtering options for updated records.
Parameters:
Optional: Filters applications updated after the specified timestamp. Accepts ISO 8601, human-readable format, or Python datetime string. e.g. 2025-06-10T02:11:37 or 06/10/2025, 02:11:37
Optional: If set to true, interprets naive datetime as local time and converts to UTC. Defaults to false (treats as UTC).
Sample API URL: https://{hostname}/exports/export_data/graduation_applications?output_format=csv&updated_since=2025-06-10T02:11:37&use_local_timezone=false |
| Exports all appointment data with optional date range filtering and custom field selection.
Parameters:
Optional: Start date for appointment filtering. Must be provided together with end. e.g. 2025-01-01
Optional: End date for appointment filtering. Must be provided together with start. e.g. 2025-12-31
Optional: Comma-separated list of specific fields to include in the export. e.g."student_name,advisor_name,appointment_time"
Sample API URL: https://{hostname}/exports/export_data/all_appointments?output_format=csv&start=2025-01-01&end=2025-12-31&fields=student_name,advisor_name,appointment_time |
| Exports a list of all available user groups.
Sample API URL: https://{hostname}/exports/export_data/user_groups?output_format=csv |