For the GET /catalog/v1/catalogs/{id}/courses/. is there a q or search_term field that you can pass…for example return only courses on accounting?
Hi @Mike_Coppola and welcome to the community! Could you please let us know more about your system? What release are you running?
@Peter_Kulko - since you’ve looked at these endpoints recently, could you help out?
Hi , thanks for the response, I realize this may be the wrong forum —-if so please point me at correct one—-I’m following EdX Course Catalog API User Guide — EdX Course Catalog API User Guide documentation —–and trying to retrieve catalogs and courses —>When hitting the catalog/v1/catalogs/ endpoint, I get success 200, (which proves my JWT from the oauth2/v1/access_token call is valid**),** However**,** no catalog results are returned.
Also if I attempt catalog/v1/catalogs/1/courses/ I get a 403 Forbidden error which I don’t understand as my JWT is valid. Please advise, thanks!
@Mike_Coppola do you have an instance of Open edX, or are you trying to access this specifically on edx.org?
I’m using https://API.edex.org
Not sure if maybe that was just a typo as edex.org is not a valid domain. If you were using what’s in the documentation that you linked to https://api.edx.org then I believe that should just be a placeholder for your service’s domain if you are working with a self-managed instance of OpenEdX/Tutor.
If however you want to actually work with the edx.org API then there is a procedure to follow to get issued API keys, which you can read about here: Authenticating as an edX REST Web Service User: Create an Account on edx.org for API Access
403 Forbidden typically implies an authentication and/or permissions issue, so my guess is that either you don’t have a valid API key or you don’t have the required permissions to use that API endpoint.
If you’ve already got that and the problem is something else, do you think you could give us an example of your request payload and the response payload that you received? (please ensure you sanitise any confidential keys/info in the data to keep your access secure)
Hi Joel, & thanks for responding. Yes I’m using api edex org. (I cant use full correct url here as this forum flags it)
I’m following EdX Course Catalog API User Guide — EdX Course Catalog API User Guide documentation —–
I created an account, client id and secret successfully. I use all those credentials to attempt to call call GET. /catalog/v1/catalogs/. and /catalog/v1/catalogs/{id}/courses/ . Both fail but for different reasons:
When hitting the catalog/v1/catalogs/ endpoint, I get success 200, (which proves my JWT from the oauth2/v1/access_token call is valid**),** However, no catalog results are returned.
IF I attempt catalog/v1/catalogs/1/courses/ I get a 403 Forbidden error which I don’t understand as my JWT is valid
Either there are flaws in the API or there is some fundamental concept about your api that I do not understand.
Thanks @Mike_Coppola for the update.
I’ve gone and bumped up your trust level so you should be able to post a bit more freely now but if something does get flagged again we’ll release it for you, no problem…
Unfortunately I don’t have the answer to your issue right now, hopefully someone else would be able to assist, but if possible please try include examples of the code you used to perform the operation and also the response payloads as well which you can wrap in a Preformatted Text block with the </> button in the editor, but remember to remove anything confidential/secret before posting. This should hopefully give us a better understanding of how it’s being used and potentially identify any issues better…
Thanks
HI @joel.edwards All my payloads below, hopefully someone can offer guidance
Token Request:![]()
=========
base_url
==========
Path
oauth2/v1/access_token
=========
Header:
“content-type”
“application/x-www-form-urlencoded”
==================
Query parameters:
“grant_type” → “client_credentials”
“client_id” → “Pcur0aMXXXXXXXXX”
“client_secret” → “xxxxxxxS4ecokBG9p3JMomuF7bZIxxxxxxxxxx”
“token_type” → “jwt”
“scope” → “read”
==============
RESULT
200 - OK
(Access token received successfully)
Get All Catalogs ![]()
=========
base_url
==========
Path
catalog/v1/catalogs/
=========
Header:
“Authorization”
“JWT eyJhbGciOxxxxxxxxxxxxxxxxxxxxxxx…”
==================
Query parameters:
None
==============
RESULT
200 - OK (But NO Catalogs! Why? )
“count” → 0
“next” → null
“previous” → null
“results” → List (0 items)
Get all courses in catalog 1 (assuming catalog 1 exists ….know way to know if catalog 1 because I cant get a list of all catalogs, see Get All Catalogs above)![]()
=========
base_url
==========
Path
catalog/v1/catalogs/1/courses/
=========
Header:
“Authorization”
“JWT eyJhbGxxxxxxxxxxxxxxxxxI…”
==================
Query parameters:
None (is there a _search_term query parameter available?)
==============
RESULT
403 “Client error - the request contains bad syntax or cannot be fulfilled”
I’ve only worked with similar filtering using the new /search/unstable/v0/course_list_search/ API.
This API allows both filtering by a selected organization and performing a search.
For example, here’s what the payload for a POST request looks like:
In the response, I’m getting a course associated with the “openedx2” organization.

