> 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/bulk-export-dispatcher.md).

# Bulk export dispatcher

Use this endpoint to export a dataset as a CSV or JSON file. `{property}` picks the dataset; each one has its own page with its filters and columns. Small exports come back as a file in the response. Large ones run in the background: the response gives you a `file_name`, and you download the file with [`GET /get_export_url/`](/stellic-partner-api/exports/poll-an-async-export-and-fetch-its-presigned-url.md).

## GET /exports/{property}

>

```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/{property}":{"get":{"tags":["Exports"],"parameters":[{"name":"property","in":"path","required":true,"description":"Dataset name.","schema":{"type":"string","enum":["engagement_score","sections_counting_for_reqs","student_tags","graduation_applications","all_appointments","prospective_students","login_frequency","survey_responses","equivalency_rules","course_planning_counts","all_notes","articulated_courses"]}},{"name":"output_format","in":"query","required":false,"description":"`csv` (default) or `json`. An explicit value always wins. If you omit it and the request carries the header `Accept: application/json` (exactly that value), the export is produced as `json`; `Accept: text/csv`, `*/*`, or no `Accept` header keeps the `csv` default. `survey_responses` ignores it and always returns CSV.","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. Omit it to let each dataset choose (see its endpoint). Only `survey_responses` ignores it. `all_appointments` supports all three values.","schema":{"type":"string","enum":["http_file","http_response","s3"]}},{"name":"schema_version","in":"query","required":false,"description":"Selects the column layout for `articulated_courses`. Send this parameter only for `articulated_courses`; omit it for other datasets, including `all_appointments`, because it is not universally ignored. Only for `articulated_courses`, omitting it or leaving it empty uses version `1`. Shared clients must not send `1` automatically for every dataset. Version `2` adds `source_institution_ceeb_id`, `source_institution_ipeds_id`, and `source_institution_external_id` after `source_institution_id`, and `transfer_rule_id` before `notes`. Applies to CSV columns and JSON row keys.","schema":{"type":"string","enum":["1","2"]}}],"responses":{"200":{"description":"In the response: the CSV or JSON file. In the background: the JSON envelope below, with `data.file_name` to poll on `GET /get_export_url/`. Download the file before `data.file_expiry`, three days after `data.requested_on`.\n","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"type":"object"}},{"type":"object"}]}},"text/csv":{"schema":{"type":"string","format":"csv","description":"CSV with columns that depend on the `{property}` path parameter. Each dataset has its\nown column set; see the dedicated endpoint for the exact columns, descriptions, and any\nparameter-gated columns:\n\n- `engagement_score` - see `GET /exports/engagement_score`\n- `prospective_students` - see `GET /exports/prospective_students`\n- `login_frequency` - see `GET /exports/login_frequency`\n- `graduation_applications` - see `GET /exports/graduation_applications`\n- `all_appointments` - see `GET /exports/all_appointments`\n- `sections_counting_for_reqs` - see `GET /exports/sections_counting_for_reqs` (runs in the background unless `delivery_channel` is `http_file` or `http_response`)\n- `equivalency_rules` - see `GET /exports/equivalency_rules`\n- `all_notes` - see `GET /exports/all_notes`\n- `course_planning_counts` - see `GET /exports/course_planning_counts`\n- `articulated_courses` - see `GET /exports/articulated_courses`\n- `student_tags` - see `GET /exports/student_tags` (in the response unless `delivery_channel=s3`)\n- `survey_responses` - always CSV in the response; the column set tracks the selected `survey_name`.\n\nAll CSVs are UTF-8 with a header row as the first line.\n"}}}},"400":{"description":"Invalid export parameters return `400`. Parameter validation and failures while building an export both return JSON as `{\"errors\": [{\"message\": \"...\"}]}`, even when you request CSV. The status depends on the failure; failures while building an export do not all return `400`. Multiple validation messages are joined with spaces, without surrounding list brackets.\n- An unsupported `{property}` returns `400`, not `404`; the message lists the accepted datasets.\n- Missing `survey_name` for `survey_responses`, missing `course_codes` for `course_planning_counts`, and an unsupported non-empty `schema_version` for `articulated_courses` return `400`.\n- An unsupported `output_format` returns `{\"errors\": [{\"message\": \"Output format provided is currently not supported\"}]}`. An unsupported `delivery_channel` returns `{\"errors\": [{\"message\": \"Delivery channel provided is currently not supported\"}]}`.\n- For `all_appointments`, send `start` and `end` together or omit both. Sending only one returns `400` with `{\"errors\": [{\"message\": \"Both 'start' and 'end' must be provided together, or neither.\"}]}`.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Missing or invalid Bearer token.\n\nCommon causes:\n- Auth failure"},"403":{"description":"Insufficient permission to export the requested data. A synchronous `all_appointments` export returns `{\"errors\": [{\"message\": \"You do not have permission to access this resource.\"}]}` when your token account lacks `analytics_appointment-view`. Ask your administrator to grant that permission. If the export runs in the background, the same permission failure produces a failure notification and email instead of an HTTP 403 response to this call.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"client_ip":{"type":"string"}}}}}},"406":{"description":"Your `Accept` header names no type this endpoint can return (`application/json` or `text/csv`). The body is `{\"detail\": \"Could not satisfy the request Accept header.\"}`.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}},"500":{"description":"A server-side failure while building the export. The response uses the fixed message shown below and does not expose internal exception details. Contact support if it persists. A synchronous `all_appointments` export containing `schema_version`, including `schema_version=1`, returns this error when your account has sufficient appointment access to reach the search. Omit `schema_version` for this dataset.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}}}}}}}
```

#### Datasets

| `{property}`                                                                                                    | Runs in the background                                                                                                                                                                          |
| --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`engagement_score`](/stellic-partner-api/exports/export-student-engagement-scores.md)                          | Never                                                                                                                                                                                           |
| [`student_tags`](/stellic-partner-api/exports/export-student-tag-definitions.md)                                | Never                                                                                                                                                                                           |
| [`graduation_applications`](/stellic-partner-api/exports/export-graduation-applications.md)                     | Never                                                                                                                                                                                           |
| [`login_frequency`](/stellic-partner-api/exports/exports-login-and-user-session-data.md)                        | Never                                                                                                                                                                                           |
| [`course_planning_counts`](/stellic-partner-api/exports/export-course-planning-counts.md)                       | Never                                                                                                                                                                                           |
| [`survey_responses`](/stellic-partner-api/exports/export-survey-responses.md)                                   | Never; always a CSV file                                                                                                                                                                        |
| [`sections_counting_for_reqs`](/stellic-partner-api/exports/async-export-sections-counting-for-requirements.md) | Always                                                                                                                                                                                          |
| [`prospective_students`](/stellic-partner-api/exports/export-prospective-students.md)                           | Over 5,000 matching students (490 on sandbox institutions)                                                                                                                                      |
| [`articulated_courses`](/stellic-partner-api/exports/export-articulated-courses.md)                             | Over 5,000 matching rows                                                                                                                                                                        |
| [`all_appointments`](/stellic-partner-api/exports/export-appointments.md)                                       | Over 5,000 public appointments within `start` and `end`, or across all dates if both are omitted. Cancelled and rescheduled appointments are excluded from this count unless you pass `status`. |
| [`equivalency_rules`](/stellic-partner-api/exports/export-equivalency-rules.md)                                 | Over 5,000 rules in total, whatever the filters                                                                                                                                                 |
| [`all_notes`](/stellic-partner-api/exports/export-all-advising-notes.md)                                        | Over 5,000 notes in total, whatever the filters                                                                                                                                                 |

#### What happens after the call

* An export that runs in the response comes back as a file attachment: CSV with a header row, or JSON as an array of row objects keyed by column name.
* An export that runs in the background returns `{"success": true, "data": {...}}` right away, with `data.file_name` to poll. For successful responses, that job object is the only JSON you get back that isn't the rows themselves. The file it points to is in the format you asked for, so with `output_format=json` the `file_name` ends in `.json`.
* When a background export finishes or fails, the account behind your token gets a Stellic notification and an email.

#### Notes

* **Check articulated-courses column mappings.** Before reading columns by position, check the [column layouts](/stellic-partner-api/exports/export-articulated-courses.md) and select the version your importer expects. Background exports use the same selected layout. Send `schema_version` only for `articulated_courses`. Omit it for other datasets, including `all_appointments`; it is not universally ignored. Don't have a shared export client send it automatically for every dataset.
* **Set `delivery_channel` to choose.** `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. Only `survey_responses` ignores it. Leave it out to use the rule in the table.
* **`output_format` is `csv` (default) or `json`.** Without `output_format`, the header `Accept: application/json`, exactly that value, also returns JSON.
* **Check the status before parsing.** Invalid parameters and failures while building an export both return JSON as `{"errors": [{"message": "..."}]}`, even when you request CSV. Multiple validation messages are joined with spaces, without surrounding list brackets. A `500` reports a server-side export failure, not a request-validation error. Contact support if it persists.
* **Don't add a trailing slash.** `/exports/engagement_score/` returns a 400.

#### Related APIs

* [`GET /get_export_url/`](/stellic-partner-api/exports/poll-an-async-export-and-fetch-its-presigned-url.md) to download a background export.
