> 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/hold/read-a-student-hold.md).

# Read a student hold

Use this endpoint to read a hold by its `sis_id`, for example to confirm a hold you placed or check it before you change it. The response shows the hold type, the activities it blocks, and its term, campus, and enrollment-level limits. Unlike the other hold endpoints, errors here use HTTP status codes: an unknown or removed hold returns a 404.

## GET /holds/student\_holds/{sis\_id}

>

```json
{"openapi":"3.0.0","info":{"title":"Stellic for Developers","version":"1.0"},"tags":[{"name":"Hold"}],"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."}},"schemas":{"StudentHoldResponse":{"type":"object","description":"A serialized hold record, returned under the `hold` key.","properties":{"activities":{"type":"array","description":"Activity names this hold blocks, as plain strings (not objects). Empty when the hold type is inactive or has no enforced activity. Possible values are `disallow_register_activity`, `disallow_drop_activity`, and `hide_grade_activity`.","items":{"type":"string"}},"campuses":{"type":"array","description":"Campuses the hold is limited to. Empty means every campus. Holds placed through the API never set this; holds loaded by your data sync can.","items":{"type":"object","properties":{"name":{"type":"string"},"screen_name":{"type":"string"}}}},"code":{"type":"string","description":"The hold type's code (the `hold_code` you sent)."},"description":{"type":"string","description":"The hold type's description. Displayed along with the title."},"enrollment_levels":{"type":"array","description":"Enrollment levels the hold is limited to. Empty means every level. Holds placed through the API never set this; holds loaded by your data sync can.","items":{"type":"object","properties":{"display_name":{"type":"string"},"name":{"type":"string"}}}},"note":{"type":"string","description":"The per-student note you sent, or an empty string."},"semester":{"type":"string","nullable":true,"description":"Term name when the hold is term-scoped (a matching `term_code` was sent), otherwise `null`."},"sis_id":{"type":"string","description":"The hold's `sis_id`."},"title":{"type":"string","description":"The hold type's title. Displayed to the student."},"url_link":{"type":"string","description":"The link you sent, or an empty string."},"url_text":{"type":"string","description":"The link placeholder text you sent, or an empty string."},"year":{"type":"integer","nullable":true,"description":"Term year when the hold is term-scoped, otherwise `null`."}}}}},"paths":{"/holds/student_holds/{sis_id}":{"get":{"tags":["Hold"],"parameters":[{"name":"sis_id","in":"path","required":true,"description":"Hold's `sis_id` (the partner-chosen identifier from POST). Only active holds match; a removed hold reads as 404.","schema":{"type":"string"}}],"responses":{"200":{"description":"Hold found. `success` is `true` and the hold is under `hold`, in the same shape the write endpoints return. `activities` is a list of plain strings and is empty when the hold type is inactive or has no enforced activity.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"hold":{"$ref":"#/components/schemas/StudentHoldResponse"}}}}}},"400":{"description":"Unexpected failure while reading the hold. Unlike the write endpoints, this is a real HTTP 400 and `message` is a plain string, not a `{code, text}` object.\n\nBody: `{\"success\": false, \"message\": \"We are unable to process your request at the moment. Please try again later.\"}`","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"401":{"description":"Missing or invalid Bearer token."},"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":"No active hold matches `sis_id` (it was never created, or it has been removed). Unlike the write endpoints, this is a real HTTP 404 and `message` is a plain string.\n\nBody: `{\"success\": false, \"message\": \"The provided student hold is invalid.\"}`","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}}}}}}}
```

#### Notes

* **An empty `activities` list means the hold blocks nothing.** Its hold type is inactive or has no enforced activity.
* **`semester` and `year` are `null` when the hold applies to every term.**
* **`campuses` and `enrollment_levels` are empty for holds placed through the API.** Holds loaded by your data sync can carry them, which limits the hold to those campuses or levels.

#### Related APIs

* [`POST /holds/student_holds`](/stellic-partner-api/hold/place-a-hold-on-a-student.md) to place a hold.
* [`PUT /holds/student_holds/{sis_id}`](/stellic-partner-api/hold/update-a-student-hold.md) to change it.
* [`DELETE /holds/student_holds/{sis_id}`](/stellic-partner-api/hold/remove-a-student-hold.md) to remove it.
