Managed auth

OAuth for every app, handled once.

Your users connect their accounts through Connect Link. Hoook stores the tokens, refreshes them, and never shows a credential to your code or your model.

Which connected accounts need attention this week?
Connected accounts8,412
Refreshed today1,134
Need reconnecting3
Tokens refreshed today, by app
612
Google
318
Slack
204
HubSpot
3
Revoked

1,134 tokens refreshed on their own today. Three users revoked access, and each was asked to reconnect.

Reconnect emails sent
Before and after

The same integration, shipped.

Without Hoook

  • Registering an OAuth app with every provider, one review at a time
  • Encrypting, storing and rotating tokens for every user you have
  • Refresh logic that breaks in a different way for each API
  • Support tickets when an account quietly disconnects

With Hoook

  • Use Hoook's OAuth clients, or bring your own where you want your brand
  • Tokens encrypted at rest and scoped to one user and one app
  • Refresh happens before expiry, for every account
  • A webhook tells you when an account needs reconnecting
How it comes together

How a user connects an account

  1. 01

    Request a connect token

    Your backend asks Hoook for a short-lived token tied to your user's id.

    connect.ts

    const { token } = await hoook.connect.createToken({ userId: "u_42" })

    โ†’ open Connect Link inside your app

    u_42 signs in to HubSpot ยท scopes: crm.objects.deals

    โœ“ account apn_7Kx2 connected

    await hoook.accounts.list({ userId: "u_42" })

    [{ "app": "hubspot", "id": "apn_7Kx2", "healthy": true }]

  2. 02

    Open Connect Link

    Your user signs in to the app in a hosted window, or in your own UI with the frontend SDK.

    connect.ts

    const { token } = await hoook.connect.createToken({ userId: "u_42" })

    โ†’ open Connect Link inside your app

    u_42 signs in to HubSpot ยท scopes: crm.objects.deals

    โœ“ account apn_7Kx2 connected

    await hoook.accounts.list({ userId: "u_42" })

    [{ "app": "hubspot", "id": "apn_7Kx2", "healthy": true }]

  3. 03

    Hoook keeps the account

    Tokens are encrypted and refreshed. Your app keeps only the account id.

    Which connected accounts need attention this week?
    Connected accounts8,412
    Refreshed today1,134
    Need reconnecting3
    Tokens refreshed today, by app
    612
    Google
    318
    Slack
    204
    HubSpot
    3
    Revoked

    1,134 tokens refreshed on their own today. Three users revoked access, and each was asked to reconnect.

    Reconnect emails sent
  4. 04

    Act on their behalf

    Every tool call and proxy request runs with that account, and only that account.

    proxy.ts

    // No prebuilt tool for this endpoint yet? Call it anyway.

    await hoook.proxy.get({ userId, app: "hubspot",

    path: "/crm/v3/objects/quotes" })

    user's token attached ยท rate limit respected ยท logged

    { "results": [{ "id": "q_881", "status": "sent" }] }

What you get

What Hoook takes off your plate.

Multi-tenant by default

Each of your customers, and each of their users, holds their own connected accounts.

OAuth and API keys alike

The same flow works for OAuth apps, API key apps and basic auth.

Your brand, if you want it

Bring your own OAuth client so the consent screen shows your name.

The evidence

The numbers behind agent integrations

Public documentation from the providers, and our own figures, each labelled with its source.

1 hour

is how long a Google OAuth access token lasts, so every account your agent acts in needs refreshing all day.

Google Identity documentation
2 to 6 weeks

to build, test and ship one production OAuth integration in-house, before it needs maintaining.

Hoook estimate
100

connected end users included on the Connect plan, then $2 for each one after that.

Hoook pricing
Why Hoook

Built for agents that act.

Credentials never reach the model

Your agent sees results, never tokens or keys.

Scoped per user

One user's account can never be used for another user's request.

Revocation noticed

If a user revokes access, the account is flagged before the next call fails.

No auth code to maintain

Provider changes to scopes and refresh rules are our problem.

Book a demo

Thirty minutes on what you are building, with the engineers behind Hoook.

Ask Ivy nowOur assistant answers straight away, then passes you to the team.

We answer within one business day.

Powered bydayrun.ai