Create Custom Screenlayout with bpy

Hey there, as the titel already says: It is possible to create a custom screenlayout with the bpy api?

I would like to make a custom layout with certain areas. I have looked into bpy.data.screens.
But there is no add or new function. So is there a way to create a new screen data type and fill it with areas I like?

Simple answer: no.

It’s somewhat possible to manipulate areas, but it’s really hacky (using operators) and it has some serious bugs which will cause Blender to crash.