Sohaib Tariq January 5, 2026

To close out 2025, we focused on improving SDK quality and configuration flexibility across our TypeScript, C# and Python SDKs.

This December release introduces configuration-based client initialisation for TypeScript SDKs,  incorporates modern language conventions into C# SDKs and adds Ruff support to Python SDKs.

Python standards compliance and Ruff linting support

Python SDKs now fully comply with Ruff linting rules and PEP 8/257 guidelines.

Regenerate your SDK to get cleaner, more consistent code that fits naturally into modern Python workflows. These improvements ensure your SDK passes automated linting checks in strict CI pipelines immediately after generation.

Key improvements:

  • PEP 257-compliant docstrings - Complete Args/Returns sections, imperative mood, proper spacing for better IDE autocomplete
  • Organized imports - Grouped by type (standard library, third-party, local) and alphabetically sorted
  • Ruff integration - Includes ruff.toml configuration file for automated linting in your build process
  • Python 3 modernization - Migrated from .format() to f-strings, removed obsolete encoding declarations
  • Code quality improvements - Eliminated unused variables, redundant f-strings, mutable defaults, and shadowed imports

You can now run Ruff check on SDKs in your CI/CD pipelines:

CICD integration

🔗 See the Python SDK quality improvements documentation for complete details.

Improved C# SDK Code Quality and Language Alignment

Say goodbye to compiler warnings, say hello to clean code.

We overhauled the C# code generation engine to adhere more strictly to modern C# conventions. This update eliminates build-time warnings, removes redundant import directives, standardises naming conventions for variables and ensures your C# SDKs look more "hand-written"

Key improvements:

  • Removed unused using directives - Eliminated unnecessary imports to reduce noise and compiler warnings
  • Alphabetically sorted imports - Consistent organisation across all generated files
  • camelCase parameter naming - Updated parameters like _requestBuilder to requestBuilder for readability
  • Zero compiler warnings - Refactored utility calls and added explicit new keywords where needed
    carbon (10)🔗 See the C# SDK quality improvements documentation for configuration details and migration guidance.

Client Initialisation from Configuration in TypeScript SDKs

Securely manage credentials and switch environments without modifying your code.

We've introduced a new way to initialise clients using JSON files or environment variables. With two new static methods—fromJsonConfig() and fromEnvironment(). This means that you can separate configuration from code, making your applications more secure and adaptable.

How this improves your developer workflows:

  • No more hardcoded credentials - Keep sensitive data out of source control
  • Environment-specific deployments - Automatically switch between dev, staging, and production configs
  • Runtime configuration updates - Adjust timeouts, retry policies, or proxy settings without a full redeploy.
  • Built-in Node.js .env support - Works seamlessly with the dotenv packageInitialise from JSON config file

🔗 See the Client Initialisation documentation for complete examples and configuration options.

🛠 Improvements

Clearer Error Messages for the Docs as Code API

We updated the status endpoint for the Docs as Code Async API to distinguish between subscription errors (missing features requiring upgrades) and validation errors (issues with request parameters or build files). A new errors property provides specific details for the failure, helping you troubleshoot build issues faster.

Additionally, the async portal generation endpoint no longer returns HTTP 403 for subscription issues, ensuring consistent API behaviour.

🔗 See the Docs as Code error messaging documentation for response examples.

⚠️ Breaking Changes

TypeScript SDK Module Exports Update

To support better ESM/CommonJS resolution, we updated the exports field in package.json and now use .js extensions for internal imports. This change applies to all SDKs generated after January 1, 2026.

Impact: TypeScript SDK users must regenerate their SDKs to adopt these changes.

🔗 See the TypeScript exports documentation for details.

📢 Share your feedback

Your feedback makes our product better.

  • 🐞 Found a bug? Report it here and earn eternal developer karma
  • 💡 Got a brilliant idea? Jump on a call and share it before our product team claims they thought of it first
  • 🎉 Love something we built? Tell us so we can argue less about what to build next

Reach our support team at support@apimatic.io