When calling the launch endpoint, using an id that has been previously used will retrieve the details of that Space and not create a new one. On the other hand, if you want to create a new Space for new lessons, then use a unique id each time. Therefore, should you wish to reuse the same Space for multiple lessons, simply call the launch endpoint using the same id. For example, you might have a course called biology 101 that is run in the first term. A good identifier for this course could be biology-101-term1-20xx and by calling the launch endpoint with this id throughout the term, lessons will take place in the same Space.
Another option would be to have a concatenation of the teacher and the students name or id as id. An example id could be AliceSmith-BobJones-ChrisLi. In this case, the association is with the teacher and the students and not strictly to the course. This works well for one-on-one tutoring; if the teacher or student changes, a new Space is created and the teacher will have a fresh start. The choice is yours as to which approach works best for your use case.
If you programmatically set the id to be a concatenation of the teacher and all students, new students who join a course will change the id and a new Space will be created. This may or may not be the desired effect.
id, uuid, launch_id, room_id, slug... All these terms can be confusing and it is easy to get them mixed up. Let's clear up the different terms and how/where to use each of them appropriately.
idid parameter.id must be unique to your organisation.id would be some sort of relationship identifying the users of the space, for example english_teacher123.name parameter is passed in when creating the Space, the name field will be the same as id of the generated Space.id will be retrieved.id as a query parameter where the parameter is launch_id.room_idroom_id parameter which is a UUID.slug attribute of the space object.slug attribute is used by the Organisation Session List endpoint as a query parameter where the parameter is space.slugspace object also has its own id attribute which is a UUID. Currently, this is the same as the slug attribute.slug attribute instead of the id unless when dealing with the id from the launch endpoint.