Right now, you need to provide a JWT token that you can get at login or refresh against a refresh_token (90days expiration).
In the future, we plan to also support API keys which would ease a lot headless work.
Regarding filters and search, we have added filtering and search features on app.twenty.com. They are directly leveraging the graphql API.
Also, can you write/mutate data via GraphQL too or is it read only?