Course Request API Doesn't provide Required Requests
I'm hoping someone can verify what appears to be a bug in the Course Request API:
Our registrar confirmed for me that when students are required to take specific courses, they add them through a data import (Core > Data Import) or manually Academic > Scheduling > Requests and schedules > Courses Requests. When they do this, they enter them with a type of "Required".
We switched to this API last year before we did the 26-27 course requests and we have now discovered that all "required" requests are not coming back in the API. We have an example of a course that has 42 rows showing required and 1 row showing pending. The API is only returning the pending status.
@Stephen Boyle say it ain't so??
Answers
-
Soooo,
Looking into this more. There are three types of "request": Recommendation, Request and RequiredThe Required are listed in the same section with Requests - but with no Preference.
The endpoint only returns Type = Request.
I'll get this updated to return at least Required as well.
0 -
@Stephen Boyle thanks for the quick response. That would be great if required could be added fairly quickly, though I don't know if that is actually the entire issue.
I spoke with our Registrar and she imported over 900 rows through the file import as required. She then went back and imported just one student as request and I still don't see the data in the API for the course.
I submitted support ticket 020978942, but I think there may be another issue as well. For those course requests that are processed through the file import, I've discovered they are not included in the API as well. I proved this out by switching the type to request and trying to reimport a single students course request. It's not showing when I run the API for that specific course.0 -
@Stephen Boyle I've been digging into this more with another team member and we did confirm we are getting "required" course requests. We are missing all course requests that are submitted through a file import. I was able to run a SKY list and compare it against the Course Request API, and confirm both of these points.
I hope this helps and it's a quick fix as we're in the middle of scheduling students in another system and we're reliant on this data. If you think it's going to take some time, I'll start working on another solution.
0 -
More research…
Looks like Required are coming back. The Status of Pending is unrelated to type. In my demo db, I have this:
The API returns both the Required and the Requested courses.
{ "id": 28172091, "user": {"id": 8591037, "email": "MickeyMouseClub@gmail.com","first_name": "Mickey", "last_name": "Mouse", "maiden_name": "", "middle_name": "", "preferred_name": "", "preferred_last_name": "", "prefix": "", "suffix": ""}, "course": { "id": 104273, "name": "Concert Band", "course_code": "", "description": "Lorem Ipsum proin .", "length": 2, "credits": 0.0, "school_level": { "id": 453, "abbreviation": "", "name": "Upper School" }, "school_year": "2026 - 2027"}, "start_term": {"id": 172605,"name": "1st Trimester"}, "preference": 0, "status": "Pending", "enrollment_status": "Not enrolled", "request_date": "2026-07-22T16:18:16.15+00:00", "requested_by": {"id": 2844867, ...}, "fulfilled_by_alternate": false, "note": "", "alternates": [] }, { "id": 28172104, "user": {"id": 8591037, "email": "MickeyMouseClub@gmail.com","first_name": "Mickey", "last_name": "Mouse", "maiden_name": "", "middle_name": "", "preferred_name": "", "preferred_last_name": "", "prefix": "", "suffix": ""}, "course": {"id": 128681,"name": "Algebra I","course_code": "MA2303","description": "Advanced Mathmatics","length": 2,"credits": 0.0,"school_level": {"id": 453,"abbreviation": "","name": "Upper School"},"school_year": "2026 - 2027"}, "start_term": {"id": 172605,"name": "1st Trimester"}, "preference": 0, "status": "Pending", "enrollment_status": "Not enrolled", "request_date": "2026-07-22T15:08:38.413+00:00", "requested_by": {"id": 2844867, ...}, "fulfilled_by_alternate": false, "note": "", "alternates": [] }So, this may be something related to how they were saved from the Import. Under normal circumstances, both Required and Requested items are returned.
I'll still update the endpoint to include a
typefield with an enum for "Required", "Requested" and (maybe) "Recommended". So you can tell the difference.0 -
Good morning, @Stephen Boyle we found a few things and a solution that I think will be helpful. I'll include this in my support ticket as well:.
A team member ran a few import tests yesterday using different scenarios. Here are the results:
- Once a course request is imported, subsequent imports do not overwrite the original values, including the request type and dates.
- New records imported as Request type are sent to the data warehouse regardless of whether they have an approver. When importing as Request type, there is no need to populate the Required By or Recommended By fields.
- New records imported as Required type with only the Required By field populated were not sent to the data warehouse.
- New records imported as Required type with both the Required By and Recommended By fields populated were not sent to the data warehouse.
- New records imported as Required type with both the Required By and Approved By fields populated were sent to the data warehouse.
What I found as the solution was going to the students record > course request > manage request. Then clicking the SAVE button in the bottom right hand corner. This now makes the request "eligible" for the API. We're creating a PAD job to run through the 300+ records that this is impacting, but that seems to be the missing link.
0 -
@Stephen Boyle I wanted to let you know I submitted an additional support ticket on this issue: 020981921.
As we debugged this, we confirmed there is a pagination issue. Currently, when we run this URL, we loop through 6 times (we have over 23,000 course requests currently). However, during this, it appears that some rows are duplicated while others are opted completely. When I add the "size=3000" to the URL, the number increases regarding the number of rows duplicated verse those that are opted. Is there a sort order on the data returned to ensure that as each page is loaded, it's in the same order? We have now switched to adding the course_id to the parameter, which now goes from making 6 calls to over 900 calls in an attempt to return all course requests in a small body. This seems to resolve the issue but is a massive increase to the number of API calls were using.
1
Categories
- All Categories
- New YourCause Community TEST
- New SKY Community TEST
- New Grantmaking TEST Community
- New Altru Test Community
- New bbcon Community - TEST
- 12 Blackbaud Agents for Good™
- New Raiser's Edge NXT Community
- 7 Blackbaud Community Help
- 218 bbcon®
- 1.4K Blackbaud Altru®
- 409 Blackbaud Award Management™ and Blackbaud Stewardship Management™
- 1.2K Blackbaud CRM™ and Blackbaud Internet Solutions™
- 16 donorCentrics®
- 361 Blackbaud eTapestry®
- 2.7K Blackbaud Financial Edge NXT®
- 681 Blackbaud Grantmaking™
- 599 Blackbaud Education Management Solutions for Higher Education
- 3.3K Blackbaud Education Management Solutions for K-12 Schools
- 952 Blackbaud Luminate Online® and Blackbaud TeamRaiser®
- 85 JustGiving® from Blackbaud®
- 7K Blackbaud Raiser's Edge NXT®
- 3.9K SKY Developer
- 257 ResearchPoint™
- 123 Blackbaud Tuition Management™
- 165 Organizational Best Practices
- 247 Member Lounge (Just for Fun)
- 40 Blackbaud Community Challenges
- 37 PowerUp Challenges
- 3 (Closed) PowerUp Challenge: Grid View Batch
- 3 (Closed) PowerUp Challenge: Chat for Blackbaud AI
- 3 (Closed) PowerUp Challenge: Data Health
- 3 (Closed) Raiser's Edge NXT PowerUp Challenge: Product Update Briefing
- 3 (Closed) Raiser's Edge NXT PowerUp Challenge: Standard Reports+
- 3 (Closed) Raiser's Edge NXT PowerUp Challenge: Email Marketing
- 3 (Closed) Raiser's Edge NXT PowerUp Challenge: Gift Management
- 4 (Closed) Raiser's Edge NXT PowerUp Challenge: Event Management
- 3 (Closed) Raiser's Edge NXT PowerUp Challenge: Home Page
- 4 (Closed) Raiser's Edge NXT PowerUp Challenge: Standard Reports
- 4 (Closed) Raiser's Edge NXT PowerUp Challenge: Query
- 822 Community News
- 3.1K Jobs Board
- 57 Blackbaud SKY® Reporting Announcements
- 47 Blackbaud CRM Higher Ed Product Advisory Group (HE PAG)
- 19 Blackbaud CRM Product Advisory Group (BBCRM PAG)



