VynCo 1.0.0

dotnet add package VynCo --version 1.0.0
                    
NuGet\Install-Package VynCo -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="VynCo" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="VynCo" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="VynCo" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add VynCo --version 1.0.0
                    
#r "nuget: VynCo, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package VynCo@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=VynCo&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=VynCo&version=1.0.0
                    
Install as a Cake Tool

VynCo .NET SDK

NuGet License

.NET SDK for the VynCo Swiss Corporate Intelligence API. Access 320,000+ Swiss companies from the Zefix commercial register with typed clients, automatic retries, credit tracking headers, and structured error handling.

Installation

dotnet add package VynCo

Targets: .NET Standard 2.0 (.NET Framework 4.6.1+, .NET Core 2.0+) and .NET 10.0.

Quick start

using VynCo;
using VynCo.Models;

using var client = new VynCoClient("vc_live_your_api_key");

// Search companies
var results = await client.Companies.SearchAsync(
    new CompanySearchRequest { Query = "Novartis", Limit = 5 });

// Get company by Swiss UID
var company = await client.Companies.GetAsync("CHE-123.456.789");
Console.WriteLine($"{company.Name} ({company.Canton}) - {company.Status}");

// Check credit usage from response headers
Console.WriteLine($"Credits used: {client.LastResponseHeaders?.CreditsUsed}");
Console.WriteLine($"Remaining: {client.LastResponseHeaders?.CreditsRemaining}");

// List recent registry changes
var changes = await client.Changes.ListAsync(
    new ListChangesParams { Page = 1, PageSize = 10 });

// Check credit balance
var balance = await client.Credits.BalanceAsync();
Console.WriteLine($"Credits remaining: {balance.Balance}/{balance.MonthlyCredits}");

Resources

Resource Methods Description
client.Companies ListAsync, GetAsync, CountAsync, StatisticsAsync, SearchAsync, BatchAsync, CompareAsync, GetRelationshipsAsync, GetHierarchyAsync, GetNewsAsync, GetReportsAsync Swiss company data, relationships, news, reports
client.Changes ListAsync, GetByCompanyAsync, StatisticsAsync, GetBySogcIdAsync, ReviewAsync, BatchAsync Registry change tracking, SOGC lookup, review
client.Persons ListAsync, GetAsync, GetRolesAsync, GetConnectionsAsync, GetBoardMembersAsync, NetworkStatsAsync Board members, executives, and networks
client.Dossiers GetAsync, ListAsync, GenerateAsync, StatisticsAsync AI-powered company intelligence dossiers
client.Analytics ClusterAsync, DetectAnomaliesAsync, CohortsAsync, CantonsAsync, AuditorsAsync, RfmSegmentsAsync, VelocityAsync Clustering, anomalies, cohorts, segmentation
client.Watches ListAsync, AddAsync, RemoveAsync, ListNotificationsAsync Company watch subscriptions and notifications
client.News GetRecentAsync Recent news across all companies
client.ApiKeys CreateAsync, ListAsync, RevokeAsync API key lifecycle management
client.Credits BalanceAsync, UsageAsync, HistoryAsync Credit balance, usage, and transaction ledger
client.Billing CreateCheckoutSessionAsync, CreatePortalSessionAsync Stripe billing integration
client.Teams CreateAsync, GetCurrentAsync, ListMembersAsync, InviteMemberAsync, UpdateMemberRoleAsync, RemoveMemberAsync, BillingSummaryAsync Team and member management
client.SyncStatus GetAsync Zefix registry sync status
client.Health CheckAsync API health check

Configuration

using var client = new VynCoClient(
    apiKey: "vc_live_your_api_key",
    baseUrl: "https://api.vynco.ch",  // default
    maxRetries: 2,                     // default; retries on 429 and 5xx
    timeout: TimeSpan.FromSeconds(30)  // default
);

The client authenticates with a Bearer token. Use vc_live_* keys for production and vc_test_* keys for testing (test keys do not consume credits).

Response headers

Every API response includes credit and rate-limit metadata, accessible via client.LastResponseHeaders:

await client.Companies.GetAsync("CHE-123.456.789");

var headers = client.LastResponseHeaders;
Console.WriteLine($"Request ID:   {headers?.RequestId}");
Console.WriteLine($"Credits used: {headers?.CreditsUsed}");
Console.WriteLine($"Remaining:    {headers?.CreditsRemaining}");
Console.WriteLine($"Rate limit:   {headers?.RateLimitLimit} req/min");
Console.WriteLine($"Data source:  {headers?.DataSource}");

Error handling

All API errors are mapped to typed exceptions with RFC 7807 Problem Details:

try
{
    var company = await client.Companies.GetAsync("CHE-000.000.000");
}
catch (NotFoundException ex)
{
    Console.WriteLine($"Not found: {ex.Message}");
}
catch (RateLimitException)
{
    // Automatic retry handles transient 429s;
    // this fires only after maxRetries is exhausted
}
catch (InsufficientCreditsException)
{
    // Upgrade plan or wait for monthly credit reset
}
catch (VynCoException ex)
{
    // Catch-all for any API error
    Console.WriteLine($"HTTP {ex.StatusCode}: {ex.Body?.Detail}");
}
Exception Status When
BadRequestException 400 Invalid request parameters
AuthenticationException 401 Invalid or missing API key
InsufficientCreditsException 402 Credit balance exhausted
ForbiddenException 403 Insufficient permissions
NotFoundException 404 Entity not found
ConflictException 409 Conflicting state (e.g., duplicate invitation)
ValidationException 422 Request validation failed
RateLimitException 429 Rate limit exceeded (after retries)
ServerException 5xx Server error (after retries)

Pagination

var page = await client.Companies.ListAsync(
    new ListCompaniesParams { Page = 1, PageSize = 50, Canton = "ZH" });

Console.WriteLine($"Showing {page.Items.Count} of {page.TotalCount} ({page.TotalPages} pages)");

while (page.HasNextPage)
{
    page = await client.Companies.ListAsync(
        new ListCompaniesParams { Page = page.Page + 1, PageSize = 50, Canton = "ZH" });
    // process page.Items
}

Batch operations

Look up multiple companies in a single request (up to 50 UIDs):

var companies = await client.Companies.BatchAsync(
    new BatchLookupRequest { Uids = new List<string> { "CHE-123.456.789", "CHE-987.654.321" } });

Company watches

Subscribe to change notifications for companies you're monitoring:

// Add a watch
var watch = await client.Watches.AddAsync(new AddWatchRequest
{
    CompanyUid = "CHE-123.456.789",
    Channel = "InApp",
    WatchedChangeTypes = new List<string> { "NameChange", "AuditorChange" }
});

// List notifications
var notifications = await client.Watches.ListNotificationsAsync(limit: 20);

Analytics

Run advanced analytics on the Swiss corporate registry:

// K-Means clustering
var clusters = await client.Analytics.ClusterAsync(
    new ClusteringRequest { K = 5, Canton = "ZH", Limit = 1000 });

// Change velocity over the last 7 days
var velocity = await client.Analytics.VelocityAsync(
    new VelocityParams { Days = 7 });

License

Apache-2.0

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 34 3/18/2026