Skip to content

Authentication & Request Providers

langchain-openapi uses a pluggable RequestProvider interface to handle authentication and arbitrary request mutations before requests are sent to target APIs.


Built-in Authentication Providers

1. Bearer Auth Provider

Injects an Authorization: Bearer <TOKEN> header.

from langchain_openapi_tools import BearerAuthProvider, OpenAPIToolkit

toolkit = OpenAPIToolkit.from_url(
    "https://api.github.com/openapi",
    provider=BearerAuthProvider(token="ghp_secret_token"),
)

2. API Key Header Provider

Injects an API key in a designated request header.

from langchain_openapi_tools import APIKeyHeaderProvider, OpenAPIToolkit

toolkit = OpenAPIToolkit.from_url(
    "https://api.example.com/spec.json",
    provider=APIKeyHeaderProvider(key="secret_key_123", header="X-API-Key"),
)

3. API Key Query Provider

Appends an API key as a query parameter.

from langchain_openapi_tools import APIKeyQueryProvider, OpenAPIToolkit

toolkit = OpenAPIToolkit.from_url(
    "https://api.example.com/spec.json",
    provider=APIKeyQueryProvider(key="secret_key_123", parameter="api_key"),
)

4. Basic Auth Provider

Injects HTTP Basic Authentication credentials.

from langchain_openapi_tools import BasicAuthProvider, OpenAPIToolkit

toolkit = OpenAPIToolkit.from_url(
    "https://api.example.com/spec.json",
    provider=BasicAuthProvider(username="admin", password="password123"),
)

Combining Providers with CompositeProvider

Chain multiple request providers sequentially using CompositeProvider:

from langchain_openapi_tools import (
    BearerAuthProvider,
    CompositeProvider,
    CookiesProvider,
    OpenAPIToolkit,
    StaticHeadersProvider,
)

composite = CompositeProvider(
    [
        BearerAuthProvider(token="jwt_token_here"),
        StaticHeadersProvider({"User-Agent": "langchain-openapi/1.0"}),
        CookiesProvider({"session_id": "sess_999"}),
    ]
)

toolkit = OpenAPIToolkit.from_url(
    "https://api.example.com/spec.json",
    provider=composite,
)