> 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/pathways/read-a-pathway-s-full-structure.md).

# Read a pathway's full structure

Use this endpoint to read one pathway: its program and audit, concentrations, and term-by-term courses and requirement slots (placeholders). `{pathway_uid}` comes from [`GET /planner/get_all_pathways`](/stellic-partner-api/pathways/list-all-pathway-uids-paginated.md) and doesn't change when the pathway is edited; use `pathway_last_changed_date` to decide when to fetch it again.

## GET /planner/pathway\_data/{pathway\_uid}

>

```json
{"openapi":"3.0.0","info":{"title":"Stellic for Developers","version":"1.0"},"tags":[{"name":"Pathways"}],"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":{"/planner/pathway_data/{pathway_uid}":{"get":{"tags":["Pathways"],"parameters":[{"name":"pathway_uid","in":"path","description":"Unique identifier for a pathway","required":true,"schema":{"type":"string"}},{"name":"campus","in":"query","description":"Optional. If set, must match an existing campus name (case-insensitive); an unknown name returns 404. It does not currently filter the returned data, so the payload matches omitting it.","required":false,"schema":{"type":"string"}},{"name":"exclude_empty","in":"query","description":"When true, removes empty terms explicitly added to the pathway (no plan courses, requirement slots, or extracurricular activity). Default scaffold terms can remain. Accepts true or false in any case; surrounding whitespace is ignored. Omit it or send false to keep empty terms. Other values, including an empty value, return 400.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"pathway_id_stellic":{"type":"string","description":"Unique identifier for the pathway"},"pathway_name":{"type":"string","description":"Name of the pathway"},"pathway_publish_date":{"type":"string","format":"date","description":"Date when the pathway was last published. Empty if never published. Format: YYYY-MM-DD"},"pathway_last_changed_date":{"type":"string","format":"date","description":"Date when the pathway was last modified. Empty if never modified. Format: YYYY-MM-DD"},"program_id_stellic":{"type":"string","description":"Program short name of the linked program. Same value as program_id_partner today. Null if the pathway has no linked program."},"program_name":{"type":"string","description":"Full name of the linked program. Null if the pathway has no linked program."},"program_id_partner":{"type":"string","description":"Program short name of the linked program. Identical to program_id_stellic today. Null if the pathway has no linked program."},"audit_id_stellic":{"type":"integer","description":"Unique identifier of the default program audit. Null if no audit is associated."},"audit_name":{"type":"string","description":"Name of the default program audit. Empty string if no audit is associated."},"audit_start_entry_year":{"type":"integer","description":"Start year for the audit criteria. Null if no audit is associated."},"audit_end_entry_year":{"type":"integer","description":"End year for the audit criteria. Null if no audit is associated or if latest audit is retrieved"},"pathway_student_count":{"type":"integer","description":"Number of active students whose primary plan has this pathway applied. Archived students, test accounts, and secondary plans are excluded; catalog views are not counted."},"pathway_concentrations":{"type":"array","description":"List of concentrations in the pathway","items":{"type":"object","properties":{"pathway_concentration_id_stellic":{"type":"integer","description":"Unique identifier of the concentration in Stellic"},"pathway_concentration_id_partner":{"type":"string","description":"Unique identifier of the concentration in the partner system"},"pathway_concentration_name":{"type":"string","description":"Name of the concentration"},"pathway_concentration_type":{"type":"string","description":"Type of the concentration"}}}},"pathway_terms":{"type":"array","description":"Structured representation of the pathway by terms","items":{"type":"object","properties":{"year":{"type":"integer","description":"Academic year"},"term":{"type":"string","description":"Term name"},"course_lists":{"type":"array","description":"List of course buckets in this term","items":{"type":"object","properties":{"course_list_id_stellic":{"type":"string","description":"Identifier for the bucket"},"course_list_name":{"type":"string","description":"Name of the requirement. Empty string if bucket is not a requirement"},"course_list":{"type":"array","description":"List of courses in this bucket. Single course if bucket is not a requirement","items":{"type":"object","description":"Every course carries the same three keys. Values come from your institution's course feed when the course is listed there; a course missing from the feed still exports its subject and number, derived from the course code, with an empty course_id.","properties":{"course_id":{"type":"string","description":"Your institution's identifier for the course, read from the feed's `course_id` (or `id`) column. Empty string when the course is not in the feed or the feed has no such column."},"course_subject":{"type":"string","description":"Subject/department code, from the feed's `subject` column or derived from the course code."},"course_number":{"type":"string","description":"Course number, from the feed's `number` column or derived from the course code."}}}}}}}}}}}}}}}}},"400":{"description":"Invalid exclude_empty value; send true or false, or omit the parameter.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"401":{"description":"Missing or invalid bearer token.\n\nBody: `{\"success\": false, \"error\": \"...\"}`"},"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"}}}}}},"404":{"description":"Pathway not found, or campus not found when a `campus` value is given.\n\nBody: `{\"success\": false, \"error\": \"...\"}`"},"500":{"description":"The pathway has no linked program. Pick pathways with a program, or skip the ones that fail."}}}}}}
```

#### Notes

* **A pathway with no program returns a 500.** Pick pathways with a program from the list, or skip the ones that fail.
* **Only the pathway's first program is returned.** The `program_*` and `audit_*` fields describe it, and `pathway_concentrations` lists all of that program's concentrations, not only the ones the pathway uses. `program_id_stellic` and `program_id_partner` are both the short name.
* **`campus` doesn't filter the response.** An unknown campus returns a 404; a known one returns the same data as leaving it out.
* **Don't use `exclude_empty=0` to keep empty terms.** Omit the parameter instead.
* **Draft pathways are returned too**, with no status field here. Check `pathway_status` in the list, or skip pathways with an empty `pathway_publish_date`.
* **`pathway_student_count` counts active students' default plans** with the pathway applied. Archived and test students aren't counted.
* **`course_id` comes from your data sync's course data.** It's empty when the course isn't in it; `course_subject` and `course_number` are filled from the course code instead.

#### Related APIs

* [`GET /planner/get_all_pathways`](/stellic-partner-api/pathways/list-all-pathway-uids-paginated.md) to list pathways.
