> This page is for SDKs, version Legacy.
> For other versions, use one of these documentation indexes:
> - Current (default): https://buildwithfern.com/learn/sdks/current/llms.txt
> - Legacy: https://buildwithfern.com/learn/sdks/legacy/llms.txt

> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

## 3.23.0

**`(feat):`** Add OAuth token override support with compile-time safe staged builder pattern. When
`oauth-token-override: true` is configured, SDK users can choose between the OAuth client
credentials flow or providing a pre-generated bearer token directly.

Configuration example:

```yaml
config:
  oauth-token-override: true
```

Generated usage:

```java
// Option 1: Direct bearer token (bypass OAuth flow)
SeedApiClient client = SeedApiClient.withToken("my-pre-generated-bearer-token")
    .url("https://api.example.com")
    .build();

// Option 2: OAuth client credentials flow (automatic token management)
SeedApiClient client = SeedApiClient.withCredentials("your-client-id", "your-client-secret")
    .url("https://api.example.com")
    .build();
```

## 3.22.0

**`(feat):`** Add support for inferred authentication schemes. Inferred auth allows SDKs to automatically
fetch tokens from custom (non-OAuth) token endpoints using `scheme: bearer` with `get-token`
configuration. The generated `InferredAuthTokenSupplier` class handles token caching and
automatic refresh with a 2-minute buffer before expiry.

Configuration example:

```yaml
auth:
  scheme: bearer
  get-token:
    endpoint: POST auth.retrieveToken
```

Generated usage:

```java
SeedApiClient client = SeedApiClient.builder()
    .apiKey("your-api-key")
    .build();
// Token is automatically fetched and refreshed as needed
```