Is it possible to release software under GPL license but not publish one small part of it which contains data that really shouldn't be available publicly (I mean private API keys, etc.) If not, which FOSS license should I use to do so?
If you are the only author, you can even do stuff that isn't allowed by GPL for others. But for an API-key I would even see this as configurable data used by the program and that is not delivered with the software (similarily OSS e-mail-programs usually don't contain the email-login of the developer). Instead you should deliver a manual how everyone can create his own api-key and enter it to your software. But yes, from the standpoint of the license it is not needed to release the key alongside the software.
Is it possible to release software under GPL license but not publish one small part of it which contains data that really shouldn't be available publicly (I mean private API keys, etc.)
AFAIU this is possible (but I am not a lawyer).
I would suggest to add into the released GPL code either some "fake" key (or other fake data, clearly labeled as fake and fictitious), or more simply a script, to be used once at installation time, which would generate (or ask) these API keys.
The spirit of GPL is that if I get the program from you, I'll be able to use it, and modify it to suit me better and use the modified version too. And also be able to pass on the original I got, and my modifications for use by others.
If your key doesn't interfere with the above, you are (morally) in the clear. You'd have to give me instructions to create (and install for use just like yours) my own key, obviously.
Legally, the devil hides in the details. If this is in any way important, ask the FSF for clarification, or retain a professional. I'm neither.