Ory Talos | Secure AI Agent and Non-Human Identities with Macaroon Tokens for API Keys

OryTalos Transform API keys into dynamic controls for the agentic era

Secure and scale machine to machine (M2M) and AI agents with programmable Macaroon tokens, replacing static, over-privileged keys with hardened, non-human credentials.

AI identity security that scales for the agentic era

Ory Talos secures automated workflows by turning static API keys into short-lived capability tokens for service to service and agent to agent interactions. Using token derivation and macaroon delegation enforces strict least-privilege guardrails.

Identification

Know exactly which app, microservice, or AI agent is calling.

Authentication

Verify keys in real-time with zero-latency checks and instant revocation.

Authorization

Enforce the principle of least privilege with fine-grained scopes.

Ory Talos securing API keys at a glance

Ory Talos FAQ

What is Ory Talos?

Ory Talos secures traditional API keys by combining infrastructure-level performance with Macaroon-based delegation and token derivation, allowing organizations to securely "wrap" and narrow permissions for a more secure approach with non-human identities (NHIs).

What business benefits does Ory Talos provide?

What is the difference between Ory Talos and other API key security solutions?

Deploy Ory Talos on your preferred infrastructure

Deploy on any infrastructure and take full control over authentication and user workflows of your application.

Integrate Ory Talos with your stack

Ready to try Ory Talos?

Get started with the guides and docs below.

Code Example

cfg := client.NewConfiguration()
cfg.Servers = client.ServerConfigurations{{URL: talosURL}}
c := client.NewAPIClient(cfg)

verifyResp, _, err := c.StaticCredentialsAPI.
    AdminVerifyAPIKey(ctx).
    V2alpha1VerifyAPIKeyRequest(client.V2alpha1VerifyAPIKeyRequest{
        Credential: new(secret),
    }).
    Execute()
if err != nil {
    return fmt.Errorf("verify key: %w", err)
}

if verifyResp.GetIsActive() {
    fmt.Println("Key is valid, owner:", verifyResp.GetActorId())
} else {
    fmt.Println("Key is invalid:", verifyResp.GetErrorMessage())
}

Try Ory today Start for free