I design the API first on the model that's needed. But I don't write it as an open API spec. I write what I need and provide for my customers/clients, then I build the design around it and than I generate it from the code, also usually I provide a client since it's way easier to keep up to date if you just have to update the package.
quite pragmatic in the end.