> For the complete documentation index, see [llms.txt](https://docs.stellic.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.stellic.com/stellic-partner-api/exports/export-graduation-applications.md).

# Export graduation applications

Use this endpoint to export graduation applications, one row per application and program, so an application for two programs has two rows. Each row has the application's status and when and by whom it last changed. Filter with `updated_since`, `student_ids` (a JSON array of usernames), `term_id`, or `academic_year`. The file always comes back in the response.

## GET /exports/graduation\_applications

>

```json
{"openapi":"3.0.0","info":{"title":"Stellic for Developers","version":"1.0"},"tags":[{"name":"Exports","description":"Institution-wide datasets as CSV or JSON. Small datasets come back inline; large ones run in the background and return a `file_name` you poll with `GET /get_export_url/` for a download link."}],"servers":[{"url":"https://{institution}.stellic.com/partnerapi/v1","variables":{"institution":{"default":"{institution}","description":"Your institution's Stellic subdomain: the part before `.stellic.com` in the URL you use to sign in. It becomes the host in every request, as in `https://{institution}.stellic.com/partnerapi/v1/...`. Replace the `{institution}` placeholder with your subdomain before sending."}}}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Personal Access Token issued by your Stellic integration partner. Send it as `Authorization: Bearer <token>` on every request. One token per institution; do not share across environments."}}},"paths":{"/exports/graduation_applications":{"get":{"tags":["Exports"],"parameters":[{"name":"term_id","in":"query","description":"Keep only applications for this graduation term, given as the term's SIS term code (the `Graduation Application Term ID` column).","required":false,"schema":{"type":"string"}},{"name":"academic_year","in":"query","description":"Filter graduation applications by academic year. Only applications for the specified year will be included.","required":false,"schema":{"type":"integer"}},{"name":"student_ids","in":"query","description":"Filter graduation applications by specific student usernames/IDs. Must be provided as a JSON array string (e.g., '[\"jdoe\", \"msmith\"]').","required":false,"schema":{"type":"string"}},{"name":"updated_since","in":"query","description":"Filter graduation applications that were created or modified since the specified timestamp. Must be timezone-naive. Accepts: ISO 8601 format ('2025-06-10T02:11:37'), human-readable format ('06/10/2025, 02:11:37'), or Python datetime string ('2025-04-16 10:18:07.000000').","required":false,"schema":{"type":"string"}},{"name":"use_local_timezone","in":"query","description":"If true, return the Status last updated at timestamps in the time zone of the account behind your token (that account's own setting, else its campus's, else your institution's); if false (default), in UTC. This flag only affects the displayed timestamps; the updated_since filter boundary is applied in UTC regardless. Accepts: '1', 'true', 'True', or boolean true.","required":false,"schema":{"type":"string"}},{"name":"use_iso_format","in":"query","description":"If true, return timestamps in ISO format. If false (default), use human-readable format. Accepts: '1', 'true', 'True', or boolean true.","required":false,"schema":{"type":"string"}},{"name":"use_feed_status_sis_id","in":"query","description":"If true, display the raw status codes received from data feed (e.g., 'conditionally-approved'). If false (default), display user-friendly statuses shown in-app (e.g., 'Conditionally Approved'). Accepts: '1', 'true', 'True', or boolean true.","required":false,"schema":{"type":"string"}},{"name":"output_format","in":"query","required":false,"description":"`csv` (default) or `json` (an array of row objects keyed by column name). If you omit it and send the header `Accept: application/json` (exactly that value), the export is produced as `json`; an explicit `output_format` always wins.","schema":{"type":"string","enum":["csv","json"],"default":"csv"}},{"name":"delivery_channel","in":"query","required":false,"description":"`http_file` returns the file in the response, `http_response` returns the same content without the attachment header, and `s3` runs the export in the background (poll `GET /get_export_url/` with the returned `data.file_name`). Omit it and the file always comes back in the response.","schema":{"type":"string","enum":["http_file","http_response","s3"]}}],"responses":{"200":{"description":"The rows, in the response as CSV or, with `output_format=json`, as a JSON array of row objects keyed by column name. With `delivery_channel=s3` the export runs in the background and the response is the job object with `data.file_name` to poll on `GET /get_export_url/`.","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"type":"object"}},{"type":"object"}]}},"text/csv":{"schema":{"type":"string","format":"csv","description":"CSV with one row per `(graduation application, program)` pair; multi-program applications expand to multiple rows. Superseded and inactive applications are included; deleted ones aren't. Columns:\n- `Student ID` - the applying student's username.\n- `Academic Year` - the calendar year of the application's graduation term.\n- `Program Code` - the program's code. Blank if the application isn't attached to a program.\n- `Program Name` - the program's full name. Blank if no program is attached.\n- `Program Enrollment Level` - the program's enrollment level (e.g., Undergraduate, Graduate). Blank if no program is attached, if the program's level is unset, or if it matches the institution's default level.\n- `Program Order` - the program's audit order on the student's plan, as sent by your data sync or the API. Blank if no program is attached or no order is set.\n- `Graduation Application ID` - the application's SIS identifier (institution-dependent format).\n- `Graduation Application Term ID` - the graduation term's SIS term code.\n- `Graduation Application Term` - the human-readable graduation term (e.g., `Fall 2023`).\n- `Graduation Application Status` - current status. By default, the user-friendly label shown in the app (e.g., `Approved`). When `use_feed_status_sis_id=true` it is the raw feed value (e.g., `conditionally-approved`).\n- `Status last updated at` - timestamp of the most recent add or change activity for the application; blank if the application has no such activity. Default format is `MM/DD/YYYY, HH:MM:SS`, which contains a comma and is therefore quoted in the CSV. When `use_iso_format=true` it is the `2024-03-15 14:30:25+00:00` form (space separator, explicit offset), not strict ISO 8601. Returned in UTC by default; in the time zone of the account behind your token when `use_local_timezone=true`.\n- `Status last updated by` - author of the most recent add or change activity. Falls back to your institution's short name when that activity has no recorded author, and is blank when the application has no add or change activity.\n"}}}},"400":{"description":"Bad Request. Parameter errors arrive wrapped in brackets and quotes, as in the examples. An unsupported `output_format` or `delivery_channel` returns `{\"errors\": [\"Output format provided is currently not supported\"]}` or `{\"errors\": [\"Delivery channel provided is currently not supported\"]}`.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Unauthorized - Invalid or missing API token","content":{"application/json":{"schema":{"type":"object"}}}},"403":{"description":"Your IP address isn't on the allowlist for this endpoint. Contact Stellic to add it; the response includes the `client_ip` Stellic saw.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"client_ip":{"type":"string"}}}}}}}}}}}
```

#### Notes

* **Superseded and inactive applications are included.** Deleted ones aren't. `Student ID` is the student's username, and `Graduation Application ID` is the application's SIS ID.
* **`updated_since` is in UTC and can't include an offset or `Z`.** It matches applications created or changed after that time. `use_local_timezone=true` converts only the `Status last updated at` column, to the time zone of the account behind your token.
* **`Status last updated at` and `by` come from the latest recorded change.** A change with no author shows your institution's short name. An application with no recorded changes leaves both blank, though its status is still filled in.
* **Parse the CSV with a CSV reader.** The default timestamp, `MM/DD/YYYY, HH:MM:SS`, contains a comma. `use_iso_format=true` returns `2024-03-15 14:30:25+00:00` instead.
* **`Program Enrollment Level` is the program's level.** It's blank when there's no program or the level is your default.

#### Related APIs

* [`GET /exports/{property}`](/stellic-partner-api/exports/bulk-export-dispatcher.md) for formats, delivery, and errors.
