> This is Payabli documentation. For a complete page index, fetch https://docs.payabli.com/llms.txt — append .md to any page URL for lightweight markdown. For section-level indexes, query parameters, and other AI-optimized access methods, see https://docs.payabli.com/ai-agents.md

## v1.1.0

Added OAuth2 client-credentials support. Pass `clientId`/`clientSecret` and the SDK handles the token exchange and refresh automatically:

```csharp
var client = new PayabliApiClient(
    clientId: "...",
    clientSecret: "...",
    clientOptions: new ClientOptions { BaseUrl = PayabliApiEnvironment.Sandbox }
);
```

See the [C# SDK guide](/developers/platform-sdk-csharp-guide) and [Authentication](/developers/authentication) to compare both methods.

### Breaking change: API key auth now requires named arguments

Supporting OAuth alongside API key auth added new constructor parameters, which shifts the positional argument order.

Positional calls that relied on `apiKey` being first and `clientOptions` being second will break. Use named arguments instead:

```csharp
// Before
var client = new PayabliApiClient(
    "...",
    new ClientOptions { BaseUrl = PayabliApiEnvironment.Sandbox }
);

// After
var client = new PayabliApiClient(
    apiKey: "...",
    clientOptions: new ClientOptions { BaseUrl = PayabliApiEnvironment.Sandbox }
);
```

Existing integrations using positional arguments need to switch to named arguments.