Professional C# client library for SwarmUI API
π§ v0.5.0-beta π§
SwarmUI.ApiClient is a strongly-typed C# wrapper around the SwarmUI API, providing first-class support for text-to-image generation, model management, presets, user data, backends, and admin operations. The core implementation is in place and covered by unit tests; the API surface may still evolve before a 1.0.0 stable release.
SwarmUI.ApiClient/
βββ SwarmClient.cs # Main client class
βββ ISwarmClient.cs # Main client interface
βββ SwarmClientOptions.cs # Configuration options
β
βββ Sessions/ # Session management
β βββ ISessionManager.cs
β βββ SessionManager.cs
β
βββ Http/ # HTTP communication
β βββ ISwarmHttpClient.cs
β βββ SwarmHttpClient.cs
β
βββ WebSockets/ # WebSocket streaming
β βββ ISwarmWebSocketClient.cs
β βββ SwarmWebSocketClient.cs
β
βββ Endpoints/ # API endpoint groups
β βββ Generation/ # Text-to-image generation
β βββ Models/ # Model management
β βββ Backends/ # Backend servers
β βββ Presets/ # Parameter presets
β βββ User/ # User settings
β βββ Admin/ # Admin operations
β
βββ Models/ # Data models
β βββ Requests/ # Request models
β βββ Responses/ # Response models
β βββ Common/ # Shared models
β
βββ Exceptions/ # Custom exceptions
β βββ SwarmException.cs
β βββ SwarmSessionException.cs
β βββ SwarmAuthenticationException.cs
β βββ SwarmWebSocketException.cs
β
βββ Extensions/ # DI extensions
βββ ServiceCollectionExtensions.cs
This README gives a high level snapshot. For detailed release notes, see:
Highlights for the current beta:
- First beta of
SwarmUI.ApiClient: typed wrapper around SwarmUI HTTP + WebSocket APIs. - Core infrastructure implemented:
SwarmClientOptions,SessionManager,SwarmHttpClient,SwarmWebSocketClient, and theSwarmClientfacade. - Endpoint coverage for generation, models, backends, presets, user, and admin operations.
- Unit tests in the
SwarmTestsproject cover HTTP behavior, sessions, streaming generation, model management, presets, and client wiring.
Planned improvements for future releases include:
- Retry and resilience policies using Polly (configurable via
SwarmClientOptions). - Integration tests against a real SwarmUI instance.
- Optional examples project / samples that mirror the docs.
- CI/CD pipeline for automated build, test, pack, and publish to NuGet.
- Potential multi targeting support for additional .NET versions.
SwarmClientOptions options = new SwarmClientOptions
{
BaseUrl = "https://hartsy.ai",
Authorization = "your-api-key"
};
using SwarmClient client = new SwarmClient(options);
GenerationRequest request = new GenerationRequest
{
Prompt = "A beautiful sunset over mountains",
Model = "flux-dev",
Width = 1024,
Height = 768
};
await foreach (GenerationUpdate update in client.Generation.StreamGenerationAsync(request))
{
if (update.Type == "progress")
Console.WriteLine($"Progress: {update.Progress.CurrentPercent}%");
else if (update.Type == "image")
SaveImage(update.Image.Image);
}// Program.cs
builder.Services.AddSwarmClient(options =>
{
options.BaseUrl = "https://hartsy.ai";
options.Authorization = builder.Configuration["SwarmAuth"];
});
// YourService.cs
public class ImageService(ISwarmClient swarm)
{
public async Task GenerateAsync()
{
// Use swarm...
}
}This library follows strict coding guidelines:
- No
varkeyword - always use explicit types - No
privatefields - use publicImplstruct pattern - All public members must have XML documentation
- Follow .NET naming conventions
- Use
ConfigureAwait(false)in library code
See detailed guidelines in Docs/CodingGuidelines.md.
The HartsyWeb application uses SwarmUI.ApiClient in production for both internal and external APIs. For example, an ASP.NET Core controller can stream generation updates to the client using Server-Sent Events (SSE):
[ApiController]
[Route("api/swarm")]
public class GenerateController(ISwarmClient swarmClient) : ControllerBase
{
[HttpPost("generate")]
public async Task Generate([FromBody] GenerationRequest request, CancellationToken cancellationToken)
{
Response.Headers.Append("Content-Type", "text/event-stream");
await foreach (GenerationUpdate update in swarmClient.Generation.StreamGenerationAsync(request, cancellationToken))
{
// Write SSE event data and flush the response stream here.
}
}
}See the HartsyWeb repository for full controller implementations and additional end-to-end examples.
MIT License. See the LICENSE file in this folder.
- SwarmUI: https://github.com/mcmonkeyprojects/SwarmUI
- SwarmUI API Docs: https://github.com/mcmonkeyprojects/SwarmUI/blob/master/docs/API.md