vynco
Rust SDK for the VynCo Swiss Corporate Intelligence API. Access 780,000+ Swiss companies from the commercial register with historical timelines, change tracking, sanctions screening, AI-powered risk analysis, UBO resolution, network graphs, watchlists, webhooks, market-flow analytics, and bulk data exports.
Installation
[]
= "2.3"
For the synchronous (blocking) client:
[]
= { = "2.3", = ["blocking"] }
Quick Start
use ;
async
Blocking Client
use Client;
API Coverage
20 resource modules covering 100+ endpoints:
| Resource | Methods |
|---|---|
health() |
check |
companies() |
list, get, get_full, count, events, statistics, compare, structure, acquisitions, news, reports, relationships, hierarchy, classification, fingerprint, nearby, timeline, timeline_summary, similar, ubo, media, media_analyze, notes, create_note, update_note, delete_note, tags, create_tag, delete_tag, all_tags, export_csv |
auditors() |
history, tenures |
dashboard() |
get |
screening() |
screen, batch |
watchlists() |
list, create, delete, companies, add_companies, remove_company, events |
webhooks() |
list, create, update, delete, test, deliveries |
exports() |
create, get, download |
ai() |
dossier, search, risk_score, risk_score_batch |
api_keys() |
list, create, revoke |
credits() |
balance, usage, history |
billing() |
create_checkout, create_portal |
teams() |
me, create, members, invite_member, update_member_role, remove_member, billing_summary, join |
changes() |
list, by_company, statistics |
persons() |
board_members, board_members_paged, search, get, network |
analytics() |
cantons, auditors, cluster, anomalies, rfm_segments, cohorts, candidates, flows, migrations, benchmark |
dossiers() |
create, list, get, delete, generate |
graph() |
get, export, analyze |
alerts() |
list, create, delete |
ownership() |
trace |
New in v2.3
- Historical timeline —
companies().timeline(uid, ¶ms)and AI narrative viatimeline_summary(...) - Similar companies —
companies().similar(uid, limit)scored on industry, canton, capital, legal form, auditor tier - UBO resolution —
companies().ubo(uid)walks the ownership chain and identifies natural persons - Ownership trace —
ownership().trace(uid, &req)exposes the full chain with circular-ownership detection - Media with sentiment —
companies().media(uid, ¶ms)filtered by positive/neutral/negative - Batch operations —
screening().batch(&req)(up to 100 UIDs) andai().risk_score_batch(&req)(up to 50 UIDs) - Market analytics —
analytics().flows(¶ms),analytics().migrations(since),analytics().benchmark(¶ms) - Person network —
persons().network(id)for person-centric investigations with co-directors - Saved alerts — persistent saved queries with optional webhook delivery
- Pagination on board_members — new
board_members_paged(uid, ¶ms)(max 500) - Typed hierarchy —
HierarchyResponsenow usesHierarchyEntity(wasserde_json::Value) - Enriched watchlists —
WatchlistCompaniesResponse.companiesincludes name/status/canton export_csv— new canonical name (export_excelkept as deprecated alias)
Response Metadata
Every response includes header metadata for credit tracking and rate limiting:
let resp = client.companies.get.await?;
println!; // X-Request-Id
println!; // X-Credits-Used
println!; // X-Credits-Remaining
println!; // X-Rate-Limit-Limit
println!; // X-RateLimit-Remaining
println!; // X-RateLimit-Reset
println!; // X-Data-Source
Example CLI
A full CLI example is included to demonstrate real-world SDK usage:
See examples/vynco_cli.rs for the full source.
Configuration
use Duration;
let client = builder
.base_url // default
.timeout // default: 30s
.max_retries // default: 2
.build?;
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 when present.
Error Handling
All API errors are mapped to typed variants:
use VyncoError;
match client.companies.get.await
Error bodies follow RFC 7807 Problem Details with
error_type, title, status, detail, and instance fields.
Feature Flags
| Feature | Default | Description |
|---|---|---|
rustls-tls |
Yes | Use rustls for TLS (no OpenSSL dependency) |
native-tls |
No | Use the platform's native TLS stack |
blocking |
No | Enable the synchronous blocking client |
Minimum Supported Rust Version
Rust 1.83 or later.
License
Apache-2.0