Resolve the "auth session is terminal" error
Why the Link SDK returns this error and how to get the consent ID reliably with webhooks.
If you receive an "auth session is terminal" error from the Link SDK, the connection attempt has ended — either completed or abandoned — and the session can no longer be queried. This page explains the cause and the correct way to handle it.
What "auth session is terminal" means
An auth session becomes terminal when the user either completes the connection flow or abandons it partway through. Once a session reaches a terminal state, it cannot be reused or resumed. Any attempt to use it returns this error.
Why it happens when retrieving the consent ID
The most common cause is polling the Link SDK for a consent ID immediately after the auth flow completes. By that point the auth session is already terminal, so querying it returns this error instead of the consent ID. This is a race condition built into the polling approach — the session ends before your query lands.
Use webhooks instead
Rather than polling the Link SDK after the flow completes, listen for the consent.received webhook event. Fiskil fires it once the consent has been successfully established, and the payload contains the consent ID along with the end user ID.
- Register a webhook endpoint and subscribe to consent events — see the webhooks guide.
- When the user finishes the Link flow, wait for the
consent.receivedevent instead of querying the session. - Read the consent ID from the webhook payload and continue your onboarding or data-fetch logic from there.
Why this works
Webhooks are pushed to you when the consent actually exists, so there is no session left to race against. This is the recommended integration pattern for retrieving consent IDs.
Summary
Don't poll the Link SDK for a consent ID after the auth flow ends. Subscribe to Fiskil webhooks and handle the consent.received event to receive the consent ID reliably. If you still see issues, contact Fiskil support with the end user ID and the auth session details.