Content

Best AI Agent Authentication Platforms in 2026

The best AI agent authentication platform is the one that still holds the provider token when the HTTP request is sent. Catalog size does not answer that. Here is how Nango, Arcade, Auth0 Token Vault, Composio, AgentID, and Swytchcode differ on that point.

AI AgentsOct 16, 2026

Key takeaways

  • -Judge the platform by where the provider token lives when the request leaves, and by who selects the tenant.
  • -Nango is stronger for a large, white-label, exportable connect layer with syncs and bring-your-own-cloud.
  • -Auth0 returns the external access token to the application after a vault exchange. The refresh token stays in Token Vault.
  • -Swytchcode attaches the credential on `swy exec` after policy. The caller does not pass a token, and a call for an end user never falls back to the workspace account.

The best AI agent authentication platform in 2026 is the one that still holds the provider token when the HTTP request is sent, and that selects the correct tenant's token for that request. A long catalog of APIs is useful. It does not tell you whether the model, your application process, or a runtime outside the model is holding the Gmail, Salesforce, or Stripe credential at call time.

Nango published Best AI Agent Authentication Platforms to Consider in 2026 on 28 September 2026. Robin Guldener's criteria are catalog coverage, white-label consent, how fast you can add an API, end-user setup guides, and whether you can export credentials if you leave. Those are the right questions for a team embedding a connect button in a product. They are the wrong stopping point if the next question is what happens on the ten-thousandth call: which token was attached, whether a policy could stop the call before that attachment, and whether a retry can repeat a write.

This page answers the query those buyers type — best AI agent authentication platforms — with that second score. It names Nango directly, says where Nango is stronger, and treats Arcade, Auth0 Token Vault, Composio, and AgentID as different jobs rather than as a single ranked list of logos.

What AI agent authentication is

AI agent authentication is the mechanism that lets an agent call someone else's API with a credential that belongs to a person, a tenant, or a service account, without that credential sitting in the prompt.

There are two directions, and mixing them up produces bad shortlists.

Outbound. Your agent calls Gmail, Salesforce, GitHub, Stripe, or an internal API on behalf of a user or a workspace. Someone has to run the OAuth consent or collect the API key, store the secret, refresh it, and attach it to a specific request. That is the job Nango, Arcade, Auth0 Token Vault, Composio, and Swytchcode take in different shapes.

Inbound. An external agent signs into *your* product as its own principal. AgentID, as Nango described it in that September post, is this second job: an OpenID Connect provider so an agent can create an account and sign in, with the owner's email available from userinfo. It does not store third-party API tokens. If your shortlist came from a search for "best AI agent authentication platforms," you will see AgentID. Put it in the inbound column and keep reading for the outbound one.

The failure mode that matters in production is narrower than "the agent could not log in." A token in the model context can be echoed into a log, a tool argument, or a prompt-injection payload. A token fetched into the application can be correct for the wrong tenant if the code path falls back to a default account. A token refreshed by a cron you wrote can race: two requests rotate the same refresh token, and one of them is now dead. A policy written in a review document does not stop the request that is already holding a valid bearer token.

AI agent authentication on this site separates that credential problem from authorization. Authentication answers which secret is used. Authorization answers whether this action is allowed. Both have to be true before the socket opens. An execution layer is the place those two checks meet the HTTP call.

The score: where the token lives at call time

Provider count is a catalog metric. Security reviews ask a location metric. At the moment the request is serialized, the provider access token is in exactly one of these places:

Where the token isWhat that means on the callWhat a prompt injection can do
Model contextThe prompt, a tool argument, or a log line contains the bearer token or API keyRepeat it, send it to another tool, or write it into a ticket
Your application processYour code exchanged or fetched the token, then set the `Authorization` headerWhatever that process will do if its inputs are attacker-controlled
A hosted proxy you can also readThe proxy can inject the token, and an API also returns the stored credential to your backendYour backend becomes a second place the token lives, by design
The execution runtime, after policyThe caller names the tool and the tenant. The runtime attaches the credential. A denied call never opens the connectionThe model can ask for an action. It cannot read the secret that would perform it

Nango's September criteria optimize the first mile: can the user connect, under your brand, for a lot of APIs, and can you leave later. This page optimizes the last meter: which row of that table are you in when POST happens.

Two more checks sit on the same meter.

Tenant selection. A B2B product with many customers cannot use "the token we connected in the dashboard." The call has to name the end user, and a missing connection has to fail closed. Falling back to the developer's own Google account is a data incident, not a convenience.

Whether policy runs before the credential is used. API access control that lives in a prompt ("don't delete repos") is advice. API access control that runs in the runtime, and returns a blocked result with no network call, is a control. Swytchcode's policy path is the second kind: guard policies are evaluated before swy exec sends anything, and a blocked call exits with code 6. The schema is in the policies overview.

Managed OAuth is the phrase buyers use for the storage and refresh half of this. The companion piece is Best Managed OAuth Providers for AI Agents. This page stays on the authentication decision: who holds the token at call time.

How to read a vendor's catalog number

Every vendor on this list publishes a count. They are not counting the same object.

  • Nango says 1,000+ APIs with pre-built authentication, and 7,000+ pre-built tool calls, on the 28 September 2026 post and on Nango Auth.
  • Arcade's docs home, last updated 6 October 2026, says 7,500+ agent-optimized tools across its MCP servers, and lists a long set of OAuth providers in the auth reference. Nango's post, eight days earlier, said Arcade's auth solution covered 21 APIs. Those sentences can both be narrowly true and still describe different counts. Read Arcade's docs and Nango's post side by side before you put either number in a security review.
  • Composio's docs, as recorded on Swytchcode vs. Composio in October 2026, list 1,595 toolkits.
  • Auth0 for AI Agents, in Nango's September write-up, was described as 30+ OAuth APIs and OAuth-only. Confirm the current connection list in Auth0's AI agent docs before you treat 30 as a ceiling. The token-exchange behavior below is documented separately and does not depend on that count.
  • Swytchcode does not sell itself on a logo count. The live catalog is the integration directory. The question this page answers is what happens to the credential after a method from that catalog is enabled.

If a comparison ranks these products by the largest integer, it is ranking marketing units. Use the integer to estimate coverage of the APIs you actually call. Use the token-location table to decide whether that coverage is safe to put in front of a model.

Nango

Nango is an open-source product-integration platform. Users connect external accounts through an embedded auth flow. Nango stores and refreshes the credentials, can proxy API calls so your backend does not have to see the token, and can also run syncs, webhooks, and TypeScript functions against those connections. The auth surface is documented in the Nango auth guide.

Where Nango is stronger. This is the part a fair comparison has to say plainly, because it is why a lot of teams should buy Nango and not a thinner auth feature bolted onto an execution runtime.

  • Catalog and auth types. Nango's own pages describe pre-built auth for 1,000+ APIs, including OAuth 2.0, OAuth 1.0a, API keys, basic auth, JWT, custom schemes, and MCP auth. Adding a provider is something you can contribute, not only something you file a ticket for. If your roadmap is "customers connect whichever tool they already use," that catalog is the product.
  • White-label and ownership of the grant. Nango's managed OAuth comparison says the OAuth grant goes to your application, branding customization is on the Growth plan, and headless auth lets you own the screens. Consent-screen ownership is a security-review question. Nango answers it directly.
  • You can leave. The September authentication post lists "you can always access your user's credentials" as a pro, under no vendor lock-in. That is a real advantage over a vault that will not hand the tokens back. It is also the reason Nango does not sit in the strictest row of the token-location table: a credential you can export is a credential your systems can hold.
  • Token lifecycle as a specialty. The same managed OAuth post describes AES-256-GCM at rest, a distributed lock so two refreshes of one connection do not race, persistence of rotated refresh tokens, and webhooks when a connection breaks. Salesforce, Airtable, Atlassian, and Xero each break refresh in a different way. A general-purpose secrets manager does not know those quirks. Nango's pitch is that it does.
  • Deployment. Free self-hosting covers auth and the proxy. Enterprise bring-your-own-cloud runs Nango in your AWS, GCP, or Azure account. If residency is the deal-breaker, that is a concrete answer, not a slide.
  • The rest of the integration, later. Syncs, triggers, and functions live on the same connection. Teams that will need two-way data sync six months after the connect button works should not pretend an execution runtime replaces that.

Where the token is at call time. Nango gives you both shapes. The proxy and functions can call the provider without your application handling the raw credential. The API and SDK can also return stored credentials to your backend, which is the export story above. If your agent calls Nango's tool or proxy interface with a connection id, the model need not see the token. If your agent, or a script an agent wrote, fetches the access token and then calls the provider, the token is in that process. Nango does not force the second path. It permits it, on purpose.

Who should buy it. Customer-facing B2B products that need a white-label connect flow, a large and messy auth catalog, syncs, and a written path to export or self-host. Swytchcode vs. Nango is the longer version of this split: Nango for the product integration, Swytchcode for the agent call itself when you also need idempotency, response checks, and a policy that blocks before the request.

Pricing on Nango's side starts with a free tier. The comparison page records paid plans from $50 a month; confirm the current number on Nango's pricing page before you put it in a budget.

Arcade

Arcade is an actions runtime for agents. Its docs, updated 6 October 2026, describe three jobs: OAuth and user-token management, execution across a large tool catalog, and a control plane for gateways, contextual access, rate limits, group-based tool access, and audit logs. It ships SDKs and setup guides for LangChain, CrewAI, OpenAI Agents, Vercel AI SDK, Google ADK, and MCP clients including Cursor, Claude Code, and Copilot Studio. You can run Arcade Cloud or self-host with Helm on AWS, Azure, or GCP (GCP was marked coming soon on that docs page).

Where Arcade is stronger. Arcade is built around the tool call, not around a sync engine. When the agent invokes a tool, Arcade can check whether that end user has granted the scopes the tool needs and send them through authorization if they have not. That check is per tool, which is closer to API access control than a single connection-wide token. The operate docs also cover an identity layer that can use Auth0, Clerk, Entra ID, Okta, or Stytch as the user source, plus MCP gateways and audit logs of tool executions. If the buying committee wants one vendor for "agent actions plus an org control plane," Arcade is aimed at that sentence. Nango is aimed at "integrations platform that agents can also use."

Where the token is at call time. Arcade's own description is that it handles OAuth and manages user tokens, then executes the action. In the default tool-calling path, your agent receives a tool result, not the Gmail token. That is the right shape. What you still have to verify in a proof of concept is the escape hatch: custom tools, "create a tool with secrets," and any API that returns a credential to your code. A runtime that *can* execute on the user's behalf is only in the strict row of the table if your integration cannot also pull the token out.

What Nango said, and what changed in the docs. Nango's 28 September post listed three limits: auth coverage of 21 APIs, no end-user guides for finding API keys, and no custom callback URL on Arcade's hosted product, which blocks white-label consent on some providers. Arcade's 6 October docs home does not read like a 21-API product; it advertises thousands of tools and a long OAuth provider reference. Callback-URL behavior is a plan and product detail, not something to copy from a competitor's blog a month later. Read Arcade's auth provider pages for the APIs you need, and ask them whether the hosted callback can be yours, before you repeat either claim in a design doc.

Who should buy it. Teams whose agent is the product, who want tool-level authorization and a governed tool registry, and who are willing to confirm catalog and white-label details against current Arcade docs rather than against Nango's September count. The side-by-side with an execution runtime that is language-agnostic and built for drifted enterprise APIs is Swytchcode vs. Arcade.

Auth0 Token Vault

Auth0 for AI Agents is an identity product extended toward agents. Auth0's overview describes securing human users, agent access to external APIs through OAuth scopes, and Token Vault as the store for those third-party tokens, with refresh handled by Auth0. Framework integrations include the Vercel AI SDK and LangGraph, which Nango also noted.

The behavior that decides the score is the exchange, and Auth0 documents it directly.

Call third-party APIs on a user's behalf says Token Vault stores the provider tokens after the user consents. When the agent needs to call the external API, it exchanges an Auth0 refresh token or access token at POST /oauth/token. Auth0 validates that token, finds the stored external credential, and returns the external provider's access token to the agent or to your backend. The access token exchange page is explicit that the backend then uses that Google (or other) access token to call the third-party API. The token endpoint returns access_token, scope, expiry, and token type. The refresh token can stay in the vault. The access token does not.

That is a legitimate design. It lets an application you already trust, sitting behind Auth0, call Google Calendar with a short-lived token. It is a poor fit for the requirement "the process that talks to the model never possesses a provider access token." Once the exchange succeeds, that process has the bearer token, and every subsequent bug, log line, and tool argument in that process is in scope for the review. Nango's September post described the same split: refresh token in the vault, access token handed to the application, and keeping it away from the model is your problem after that.

Where Auth0 is stronger. You already run Auth0 for workforce or customer login. The same tenant should decide which human can invoke an agent, and which Google connection that human has. You want enterprise identity features, not a new integration vendor. You accept that your backend will hold short-lived provider access tokens and you have a place to keep them out of prompts, traces, and analytics.

Limits to verify rather than inherit. Nango wrote that coverage was about 30 OAuth APIs and that API keys were out of scope. Both can move. What has not moved in the docs cited above is the exchange: the vault's job ends by handing your application a provider access token. If your standard is that handoff, Auth0 matches it. If your standard is that the handoff never happens, Auth0 does not.

Composio

Composio equips agents with a large toolkit catalog and per-user managed OAuth. Each end user connects their own Gmail, Slack, GitHub, or similar account. The agent acts as that user. Hosted connect links are part of the product. The October 2026 comparison on this site records 1,595 toolkits in Composio's docs, Python and TypeScript SDKs plus MCP, a free tier of 20,000 tool calls a month, and paid plans from $29 a month. Re-check Composio's pricing and docs; toolkit counts move.

Where Composio is stronger. The product is the catalog plus the per-user connection. A consumer or multi-tenant assistant whose whole job is "do this in the user's SaaS account" gets that shape out of the box: connect link, user-scoped token, tool call as that user. Swytchcode's comparison says this directly: Composio is the superior choice for that per-user OAuth catalog. Swytchcode does not try to win by claiming a larger toolkit count.

Where the token is at call time. Composio's model is that the tool call runs as the connected end user and your agent receives the tool result. That can keep the raw token out of the model. What the comparison also says is that Composio's documented strengths are the catalog, the connect flow, and per-user scoping, while automatic retries, idempotency on writes, and response schema validation were not documented as call-level behavior. Authentication without those three is how a correct token still creates a duplicate charge. Read Swytchcode vs. Composio for the row-by-row version, including the cases where you should keep Composio.

Who should buy it. Products where each end user must connect their own accounts and the agent must act as that user across a wide set of SaaS tools, and where you will add your own controls if you need idempotent writes or a block before the request.

AgentID

AgentID solves the inbound problem. Nango's September post describes it as an OpenID Connect provider: the agent gets its own identity instead of borrowing a human password, the application can read the owner's email from userinfo, and integration is an issuer and a client id in Clerk, Supabase, Auth0, Better Auth, or Auth.js. The signing key stays in the agent's browser as a non-extractable P-256 key. Nango also lists the limits: AgentID does not store or refresh third-party API credentials, enrollment wants a browser, and the project was new as of that post (they described an October 2026 launch).

Do not score AgentID on the token-location table. It does not hold a Salesforce refresh token. Include it in the evaluation so a search for AI agent authentication does not collapse "who is the agent" into "which Google token do we attach." If the requirement is "external agents sign up for our product," start at agentid.com and use Auth0, Clerk, or similar as the relying party. If the requirement is "our agent calls the customer's CRM," AgentID is the wrong row.

Swytchcode

Swytchcode is the execution runtime between the agent and the API. It is not an identity provider, and it is not a sync platform. The agent, the IDE, or your application names a method. Swytchcode checks the input, checks policy, selects the credential, sends the request, retries with idempotency, checks the response, and writes a local audit record. The same path runs from the CLI, from MCP, and from the JavaScript and Python SDKs. Different ways to use Swytchcode is the map of those three entry points.

Where the token is at call time. The exec reference states the rule: you do not pass credentials as inputs. Once a provider is connected, Swytchcode adds the credential itself, including for tools whose schema lists a token or API-key field. The model can be given the tool schema. The schema is not a slot you fill with a bearer token you copied out of a vault.

Connection is a separate step from execution. `swy auth connect` runs the OAuth browser flow or prompts for an API key. For an end user of your application, the flag is --tenant. The Python runtime exposes the same split: connect("gmail", user.id) returns a connect URL, save_key("stripe", user.id, key) stores an API key that user typed into your form, and exec(..., tenant_id=user.id) runs the call as that user. The runtime SDK docs say a call for an end user never falls back to your own account. If they have not connected, the error category is tenant_not_connected. Retrying will not silently use the workspace's Gmail. That is the tenant-selection half of the score, documented as a failure mode rather than left as a convention in application code.

Policy before the credential is used. Policies run before every execution. A deny rule stops the call before any network request. An approval rule holds it until a person approves or denies it in Slack or Telegram. The human approval docs say an unanswered request expires after 48 hours and the command does not run. Exit code 6 is policy blocked. Exit code 7 is waiting on a person. Exit code 3 is authentication failed, including tenant_not_connected, setup_required, and plan_limit. The practical setup is in How to set up policy guardrails. Enabling a method with swy add and allowing that method to run are different files on purpose: tooling.json is capability, policies.json is the rule.

What else happens on the same call. Authentication that is correct and a write that runs twice is still a production incident. Retries use backoff. Idempotency is what makes the retry safe for a charge, an email, or a record create. The production walkthrough shows the order on a real GitHub and Slack flow: policy check, schema validation, auth, idempotency key, execution, response validation, audit log. Fintech APIs is the same rule on Stripe, PayPal, and the rest: the agent does not hold the processor key.

Managed OAuth, in Swytchcode's pricing terms. On the pricing page, the Free plan includes Swytchcode-managed OAuth apps and 10 connected end users. Pro adds your own OAuth apps and 1,000 connected end users. Business adds bring-your-own providers, approval workflows, and 10,000 connected end users. Enterprise deploys in your AWS, Azure, or GCP account; application data and API keys stay in that environment. setup_required is the CLI telling you to choose the managed app or register your own. That is the same production advice Nango gives: a shared developer app is how you start, your own OAuth client is how you ship, because scopes, consent-screen name, and callback domain belong to you.

Where Swytchcode is the wrong buy. If you need two-way sync, a white-label connect portal as a designed product surface, open-source TypeScript integration functions, and credential export as a first-class feature, Nango is the stronger product. If you need the widest per-user SaaS toolkit and hosted connect links as the main interface, Composio is the stronger product. If the agent must sign into *your* app as its own user, you want an OIDC provider, not an execution runtime. Swytchcode is the layer you add when the decision to call an API already exists and the remaining work is to attach the right tenant's credential, refuse the call when policy says so, and keep the retry from doubling the write. It is aimed at APIs that have drifted: overlapping versions, incomplete specs, sequences nobody wrote down. A clean, self-describing SaaS API is well served by several tools on this list. An older enterprise API is the case the runtime was built for. The enterprise shape of that deployment is on the enterprise page.

A call, end to end

This is the difference between "we support OAuth" and "this is where the token is."

A workspace connects its own GitHub once:

swy auth connect github
swy exec github.issues.create --input title="Login page bug"

The command names a method and a field. It does not name a token. Swytchcode resolves the connected GitHub account, checks policy, and sends the request. The command reference is the full surface.

A B2B app whose customers each connect Gmail passes the tenant on every call. In Python, from the runtime docs:

from swytchcode_runtime import exec, connect

url = connect("gmail", user.id)["url"]
# the user completes consent in the browser

exec(
    "gmail.user.profile.get",
    {"params": {"userId": "me"}},
    tenant_id=user.id,
    tenant_label=user.email,
)

tenant_id selects the token. If that user has no Gmail connection, the call errors with tenant_not_connected and does not use the workspace account. The CLI form of the same idea is swy exec... --tenant <user id>. Approvers see --tenant-label in the Slack or Telegram approval message, so a held refund says which customer it was for.

What the model is allowed to supply is the method and the business inputs. What it is not given is the OAuth access token. That is the row of the score this platform is built to occupy.

Side by side

QuestionNangoArcadeAuth0 Token VaultComposioSwytchcode
Primary jobProduct integrations: auth, proxy, syncs, functionsAgent tool execution and an org control planeIdentity, plus third-party token exchangePer-user tool catalog and managed OAuthExecution of one API call: auth, policy, retry, idempotency, audit
Token at call timeProxy can inject; API can also return the stored credentialTool call is executed with the user token Arcade managesExchange returns the provider access token to your app or agentTool call runs as the connected userRuntime attaches the credential; caller does not pass it
Tenant selectionConnection id mapped to your userEnd-user authorization on the toolThe Auth0 user whose token you exchangePer end user, via hosted connect`tenant_id` / `--tenant`, no fallback to the workspace account
Policy before the requestScopes and connection-level controls; your functions if you write themPer-action authorization, gateways, contextual accessScopes on the Auth0 side; the API call is yours after exchangePer-user auth scoping`policies.json` on every exec; deny makes no network call
White-label consentYes; grant goes to your appConfirm current callback behavior in Arcade's docsYour Auth0 tenantHosted connect linksManaged OAuth apps to start; your own OAuth app on Pro and above
Credential exportDocumented as a featureConfirm in a POCYou receive access tokens via the exchangeTheir platform holds the connectionEnterprise keeps API keys in your cloud; the exec path does not hand the token to the model
Where they are the better buyLarge catalog, syncs, export, BYOCAgent actions plus a central tool registryYou already standardize on Auth0Many end users, each connecting their own SaaSThe HTTP call must be policy-gated, tenant-correct, and safe to retry

AgentID is omitted from the table because it does not hold outbound API credentials.

How to choose

Start from the call you will actually make in production, not from the category page.

  1. Write down one request. Example: "create a Salesforce case as customer A, and do not create a second case if the first response is lost." The platform has to select customer A's token and survive a retry. Catalog size does not appear in that sentence.
  2. If the product is the connect button plus ongoing sync, shortlist Nango first. Add Swytchcode only for the calls where you also need a block, an idempotency key, and a validated response. The two are complementary, which is also what the Nango comparison says.
  3. If every end user connects their own accounts and the agent is a wide SaaS assistant, shortlist Composio and Arcade, and make them show you a tool call where the model cannot print the token.
  4. If Auth0 is already the identity system, use Token Vault for the consent and the refresh, and decide explicitly where the returned access token will live. If the answer is "in the agent," you have not finished the design.
  5. If the agent is an internal or product runtime calling APIs you do not fully trust the model to format, including older enterprise APIs, use an execution layer that attaches the credential after policy. That is Swytchcode. Pair it with LangGraph, the Anthropic SDK, or the OpenAI Agents SDK rather than replacing them: LangGraph, Anthropic, OpenAI Agents SDK.

A credential vault is the neighboring purchase, and it is not this purchase. Storage is not the same as injection on the call. That split is the subject of 5 Best Credential Vaults for AI Agents.

Frequently asked questions

What is the best AI agent authentication platform in 2026?

The best platform is the one whose token location matches your threat model. For a white-label connect flow and syncs across a very large API catalog, that is Nango. For per-user SaaS tool calling at catalog scale, Composio and Arcade are the products built for that shape. For "the provider access token must not be an input the model or the tool call can set," the execution path has to attach the credential after policy. That is the row Swytchcode is built for. There is no single winner across those jobs.

How is this different from Nango's list?

Nango scores catalog, white-label, extensibility, end-user guides, and credential export. This page agrees those matter for a connect flow, and it says where Nango leads on them. It adds the question Nango's list does not use as the ranking key: where the provider token is when the HTTP request is sent, and whether a missing tenant fails closed.

Does managed OAuth mean the model never sees the token?

No. Managed OAuth means a vendor runs the OAuth client, the consent redirect, storage, and refresh. Whether the model sees the token depends on what happens next. Auth0's documented exchange returns the provider access token to your application. Nango can proxy the call and can also return the stored credential. Swytchcode's exec path adds the credential inside the runtime and does not take it as an input. Ask each vendor to show you the request your model is allowed to send.

Can Swytchcode replace Nango?

For agent calls that do not need customer-facing syncs or a connect portal product, yes. For a B2B product whose customers connect dozens of their own tools and whose data must stay in sync, no. Use Nango for that integration layer. Use Swytchcode where the remaining requirement is a governed, idempotent call. Details and pricing context are on Swytchcode vs. Nango.

Where do end-user tokens live on Swytchcode?

Each end user connects their own provider account. You pass their id as tenant_id or --tenant on every call. The docs state that a call for an end user never falls back to your account. Connected-end-user limits are 10 on Free, 1,000 on Pro, and 10,000 on Business, with a custom number on Enterprise. See pricing and the Python multi-tenant example.

What about API keys, not OAuth?

API keys are still credentials. Swytchcode prompts for them in swy auth connect, or your app collects the key in your own form and save_key stores it against the tenant. The exec call still does not receive the key as a model-supplied argument. Nango treats API keys as a first-class auth type across its catalog, which matters if your long tail of integrations is mostly keys rather than OAuth. Auth0 Token Vault, as Nango described it in September 2026, was OAuth-only; confirm that before you plan to store raw keys there.

Where to go next

More content