VynCo 3.2.1

dotnet add package VynCo --version 3.2.1
                    
NuGet\Install-Package VynCo -Version 3.2.1
                    
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="3.2.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="VynCo" Version="3.2.1" />
                    
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 3.2.1
                    
#r "nuget: VynCo, 3.2.1"
                    
#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@3.2.1
                    
#: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=3.2.1
                    
Install as a Cake Addin
#tool nuget:?package=VynCo&version=3.2.1
                    
Install as a Cake Tool

VynCo .NET SDK

NuGet CI License

.NET SDK for the VynCo Swiss Corporate Intelligence API. Access 500,000+ Swiss companies from the commercial register with change tracking, sanctions screening, AI-powered risk analysis, network graphs, watchlists, webhooks, and bulk data exports.

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");

// List companies with filtering
var result = await client.Companies.ListAsync(
    new CompanyListParams { Search = "Novartis", Canton = "BS" });
Console.WriteLine($"Found {result.Total} companies");

// Get a single company
var company = await client.Companies.GetAsync("CHE-105.805.080");
Console.WriteLine($"{company.Name}: {company.LegalForm}");

// Full company with persons and changes
var full = await client.Companies.GetFullAsync("CHE-105.805.080");
Console.WriteLine($"Persons: {full.Persons.Count}, Changes: {full.RecentChanges.Count}");

// Sanctions screening
var screening = await client.Screening.ScreenAsync(
    new ScreeningRequest { Name = "Suspicious Corp" });
Console.WriteLine($"Risk: {screening.RiskLevel} ({screening.HitCount} hits)");

// AI risk score
var risk = await client.Ai.RiskScoreAsync(
    new RiskScoreRequest { Uid = "CHE-105.805.080" });
Console.WriteLine($"Risk score: {risk.OverallScore}/100 ({risk.RiskLevel})");

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

API Coverage

20 resource modules covering 100+ endpoints:

Resource Methods
client.Health CheckAsync
client.Companies ListAsync, GetAsync, GetFullAsync, CountAsync, EventsAsync, StatisticsAsync, CompareAsync, NewsAsync, ReportsAsync, RelationshipsAsync, HierarchyAsync, ClassificationAsync, FingerprintAsync, StructureAsync, AcquisitionsAsync, NearbyAsync, TimelineAsync, TimelineSummaryAsync, SimilarAsync, UboAsync, MediaAsync, MediaAnalyzeAsync, NotesAsync, CreateNoteAsync, UpdateNoteAsync, DeleteNoteAsync, TagsAsync, CreateTagAsync, DeleteTagAsync, AllTagsAsync, ExportCsvAsync
client.Auditors HistoryAsync, TenuresAsync
client.Dashboard GetAsync
client.Screening ScreenAsync, BatchAsync
client.Watchlists ListAsync, CreateAsync, DeleteAsync, CompaniesAsync, AddCompaniesAsync, RemoveCompanyAsync, EventsAsync
client.Webhooks ListAsync, CreateAsync, UpdateAsync, DeleteAsync, TestAsync, DeliveriesAsync
client.Exports CreateAsync, GetAsync, DownloadAsync
client.Ai DossierAsync, SearchAsync, RiskScoreAsync, RiskScoreBatchAsync
client.ApiKeys ListAsync, CreateAsync, RevokeAsync
client.Credits BalanceAsync, UsageAsync, HistoryAsync
client.Billing CreateCheckoutAsync, CreatePortalAsync
client.Teams MeAsync, CreateAsync, MembersAsync, InviteMemberAsync, UpdateMemberRoleAsync, RemoveMemberAsync, BillingSummaryAsync, JoinAsync
client.Changes ListAsync, ByCompanyAsync, StatisticsAsync
client.Persons BoardMembersAsync, BoardMembersPagedAsync, SearchAsync, GetAsync, NetworkAsync
client.Analytics CantonsAsync, AuditorsAsync, ClusterAsync, AnomaliesAsync, RfmSegmentsAsync, CohortsAsync, CandidatesAsync, FlowsAsync, MigrationsAsync, BenchmarkAsync
client.Dossiers CreateAsync, ListAsync, GetAsync, DeleteAsync, GenerateAsync
client.Graph GetAsync, ExportAsync, AnalyzeAsync
client.Alerts ListAsync, CreateAsync, DeleteAsync
client.Ownership TraceAsync

New in v3.1

  • Historical timelineCompanies.TimelineAsync(uid, params?) and AI narrative via TimelineSummaryAsync(...)
  • Similar companiesCompanies.SimilarAsync(uid, { Limit }) scored on industry, canton, capital, legal form, auditor tier
  • UBO resolutionCompanies.UboAsync(uid) walks the ownership chain and identifies natural persons
  • Ownership traceOwnership.TraceAsync(uid, { MaxDepth }) exposes the full chain with circular-ownership detection
  • Media with sentimentCompanies.MediaAsync(uid, { Sentiment }) filtered by positive/neutral/negative
  • Batch operationsScreening.BatchAsync(...) (up to 100) and Ai.RiskScoreBatchAsync(...) (up to 50)
  • Market analyticsAnalytics.FlowsAsync(...), Analytics.MigrationsAsync(...), Analytics.BenchmarkAsync(uid, ...)
  • Person networkPersons.NetworkAsync(id) for person-centric investigations with co-directors
  • Saved alerts — persistent saved queries with optional webhook delivery
  • Pagination on board members — new Persons.BoardMembersPagedAsync(uid, { Page, PageSize }) (max 500)
  • Typed hierarchyHierarchyResponse now uses HierarchyEntity (was JsonElement)
  • Enriched watchlistsWatchlistCompaniesResponse.Companies includes name/status/canton
  • ExportCsvAsync — new canonical name (ExportExcelAsync kept as [Obsolete] alias)

Response Metadata

Every API response includes header metadata for credit tracking and rate limiting:

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

var h = client.LastResponseHeaders;
Console.WriteLine($"Request ID:          {h?.RequestId}");          // X-Request-Id
Console.WriteLine($"Credits used:        {h?.CreditsUsed}");        // X-Credits-Used
Console.WriteLine($"Credits remaining:   {h?.CreditsRemaining}");   // X-Credits-Remaining
Console.WriteLine($"Rate limit:          {h?.RateLimitLimit}");     // X-RateLimit-Limit
Console.WriteLine($"Rate limit remaining:{h?.RateLimitRemaining}"); // X-RateLimit-Remaining
Console.WriteLine($"Rate limit reset:    {h?.RateLimitReset}");     // X-RateLimit-Reset
Console.WriteLine($"Data source:         {h?.DataSource}");         // X-Data-Source

Configuration

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

The client automatically retries on HTTP 429 (rate limited) and 5xx (server error) with exponential backoff (500ms x 2^attempt). It respects the Retry-After header, falls back to X-RateLimit-Reset, and caps retry delay at 60 seconds.

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 (AuthenticationException) { Console.WriteLine("Invalid API key"); }
catch (InsufficientCreditsException) { Console.WriteLine("Top up credits"); }
catch (ForbiddenException) { Console.WriteLine("Insufficient permissions"); }
catch (NotFoundException ex) { Console.WriteLine($"Not found: {ex.Body?.Detail}"); }
catch (ValidationException ex) { Console.WriteLine($"Bad request: {ex.Body?.Detail}"); }
catch (ConflictException) { Console.WriteLine("Resource conflict"); }
catch (RateLimitException) { Console.WriteLine("Rate limited, retry later"); }
catch (ServerException) { Console.WriteLine("Server error"); }
catch (VynCoException ex) { Console.WriteLine($"Error: {ex.Message}"); }

Error bodies follow RFC 7807 Problem Details with Type, Title, Status, Detail, and Instance fields.

Pagination

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

foreach (var company in page.Items)
    Console.WriteLine($"{company.Uid}: {company.Name}");

Watchlists

// Create a watchlist
var watchlist = await client.Watchlists.CreateAsync(
    new CreateWatchlistRequest { Name = "Portfolio", Description = "Tracked companies" });

// Add companies
await client.Watchlists.AddCompaniesAsync(watchlist.Id,
    new AddCompaniesRequest { Uids = new List<string> { "CHE-105.805.080", "CHE-109.340.740" } });

// Get events
var events = await client.Watchlists.EventsAsync(watchlist.Id, limit: 20);

Analytics

// Clustering analysis
var clusters = await client.Analytics.ClusterAsync(
    new ClusterRequest { Algorithm = "kmeans", K = 5 });

// Canton distribution
var cantons = await client.Analytics.CantonsAsync();

// Audit candidates
var candidates = await client.Analytics.CandidatesAsync(
    new CandidateParams { Canton = "ZH", SortBy = "shareCapital" });

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
3.2.1 104 4/14/2026
3.2.0 100 4/14/2026
3.1.0 94 4/12/2026
3.0.0 99 4/8/2026
2.0.0 104 3/31/2026
1.0.0 99 3/18/2026