# Auto course creation and content creation

**URL:** <https://discuss.openedx.org/t/auto-course-creation-and-content-creation/17020>\
**Category:** Development\
**Created:** [September 5, 2025, 5:32am UTC](https://discuss.openedx.org/t/auto-course-creation-and-content-creation/17020 "2025-09-05T05:32:35Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![neel1](https://avatars.discourse-cdn.com/v4/letter/n/a3d4f5/32.png) [@neel1](https://discuss.openedx.org/u/neel1)\
**Post date:** [September 5, 2025, 5:32am UTC](https://discuss.openedx.org/t/auto-course-creation-and-content-creation/17020/1 "2025-09-05T05:32:35Z")

</div>

Hi All,

I have a question related to REST APIs in lms and cms. I have read that REST APIs for external use are available only in lms. why are they not available in cms. If I have to communicate with cms from my external app, how would I do that?

I recently created an external app which would create a course from the external app using API f"{studio\_base\_url.rstrip(‘/’)}/api/v1/course\_runs/" and it worked perfectly , however I also wanted to upload contents of the course(e.g section, sub-section, unit) through the rest api and I used f"{STUDIO\_BASE.rstrip(‘/’)}/import/{course\_id}/" and it did not work because it redirects to login page as it has @login\_required decorator on top of API.

Please suggest me how to use this API

---

<div class="post-metadata">

**Author:** ![joel.edwards](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/joel.edwards/32/3193_2.png) [@joel.edwards](https://discuss.openedx.org/u/joel.edwards)\
**Post date:** [September 5, 2025, 6:30am UTC](https://discuss.openedx.org/t/auto-course-creation-and-content-creation/17020/2 "2025-09-05T06:30:50Z")

</div>

Hi @neel1

(Note I haven’t used this before so hopefully my information is not wrong, or at least someone else can correct me otherwise 🙂 )

As far as I understand, the import API endpoint requires a full archive (.tar.gz or .zip) of a course to import, rather than updating individual sections of an already existing course (unless I’m misunderstanding your query)

You can find this endpoint here:

> <https://github.com/openedx/edx-platform/blob/06b54e79f2433f9bfc1be95ffcad9f5923cabe14/cms/djangoapps/contentstore/api/views/course_import.py#L44-L109>

And the tests file for this endpoint might give you some pointers in usage:

> <https://github.com/openedx/edx-platform/blob/06b54e79f2433f9bfc1be95ffcad9f5923cabe14/cms/djangoapps/contentstore/api/tests/test_import.py>

As for the authentication, this document here might be useful for you:

> **[Authentication Related Code Samples — edx-platform documentation](https://docs.openedx.org/projects/edx-platform/en/latest/references/auth_code_samples.html)**
