API Reference
Complete REST API documentation for the VynCo Swiss corporate intelligence platform
https://vynco.ch/api/v1Official SDKs
VynCo publishes first-party client libraries for Python, TypeScript, Rust, and .NET. All SDKs are open source (Apache-2.0 or MIT) and kept in sync with the latest API version.
Authentication
Write endpoints require a Bearer token in the Authorization header; most read endpoints work unauthenticated against the Free tier. Two token types are supported:
Generated in the dashboard. Use vc_live_* for production and vc_test_* for sandbox. Stored as Argon2id hashes.
JWT tokens issued by the magic-link verify endpoint (and, for Enterprise tenants with SSO enabled, by the configured IdP). Same Bearer format, resolved to a team context automatically.
Example Request
curl "https://vynco.ch/api/v1/companies?search=Nestl%C3%A9" \ -H "Authorization: Bearer vc_live_abc123..."Response Headers
Every API response includes per-group rate-limit headers and a request ID for support and tracing. The full per-group ledger is exposed via these headers — there is no usage info in the response body.
| Header | Description | Example |
|---|---|---|
x-ratelimit-group | Which rate-limit bucket this request consumed | search_read |
x-ratelimit-window | Window duration for the bucket | 1h |
x-ratelimit-limit | Total requests allowed in the window for this bucket on the caller's tier | 600 |
x-ratelimit-remaining | Requests remaining in the current window | 599 |
x-ratelimit-reset | Seconds until the window resets | 3540 |
x-request-id | Per-request UUID for support tickets and tracing | abc123-… |
Companies
Search and retrieve enriched Swiss company records from the registry. The dataset covers 790'000+ active companies — 41 fields per record including registry data, address, geolocation, NOGA classification, sanctions flags, and translations.
/v1/companiesSearch Swiss companies by name, canton, or legal form
This is a demo playground. No real API calls are made.
Changes
Track registry mutations — address changes, auditor changes, capital increases, board member updates. Reads consume the standard_read group; see the Rate Limits section for per-tier quotas.
Persons
Look up individuals and their board memberships across the registry. Reads consume the standard_read group.
Dossiers
Generate citation-anchored AI dossiers. The LLM emits [[obl:...]] tags resolved against the methodology knowledge graph, so every claim links back to a registered obligation or evidence row. Available on the Professional tier (methodology_read group).
Analytics
Run machine-learning analytics on the full Swiss company registry — clustering, anomaly detection, cohort analysis. All analytics endpoints require Starter tier or above (analytics_read group).
Relationships
Navigate parent/subsidiary corporate structures. Reads consume the standard_read group.
News & Reports
Fetch company news from SIX and public sources, plus parsed annual financial reports. Reads consume the standard_read group.
Classification & Fingerprint
Retrieve industry classifications (GICS-style hierarchy) and computed company fingerprints with key metrics, size category, and profile summary.
Comparison
Compare two or more companies side-by-side in a single request (2–10 companies).
Watches & Notifications
Watch companies to receive notifications when registry changes are detected. Watch management and notification retrieval are part of the account group.
Notification Preferences
Screening
Screen entities against SECO sanctions, OpenSanctions (PEP lists), and FINMA regulated entities in a single request. Returns a risk level and any matched hits.
Auditor Intelligence
Query auditor tenure data across the Swiss commercial registry. Identify companies with long auditor tenures for ISS rotation analysis, or retrieve the full auditor appointment history for a specific company. These endpoints are public and do not require authentication.
Company Events
Retrieve historical change events for a company including auditor changes, capital changes, officer changes, and more. Events follow the CloudEvents specification and include severity and category metadata. Public read endpoint.
Saved Searches
Save search filters for quick re-use and schedule them to run automatically on a daily, weekly, or monthly cadence. Scheduled searches generate notifications when new results are found.
Beneficial Ownership
Trace the full beneficial-ownership chain for any Swiss company. The endpoint recursively resolves parent entities and returns ownership percentages at each level. Circular ownership structures are detected and flagged automatically. Available on the Professional tier (methodology_read group).
Risk v2
Methodology-team risk score: 9-factor Beta-Bernoulli posteriors with FATF-aligned priors. Each factor exposes its prior, posterior, weight, and supporting evidence; the composite score is the weighted log-odds. Available on the Professional tier (methodology_read group).
AI Intelligence
AI-powered endpoints for due diligence dossier generation, natural-language company search, and multi-signal risk assessment. Dossier and search endpoints use LLM inference; algorithmic risk scoring is multi-factor. AI generation is metered against the expensive_ai group.
AI Comparative
Generate AI-powered multi-company comparative analysis with board-overlap detection, governance scoring, and competitive positioning. Compare up to 10 companies in a single request. Metered against the expensive_ai group.
Bulk Operations
Perform operations on multiple entities at once. Bulk screening checks multiple entities against sanctions lists in a single request. CSV watchlist import lets you add companies in bulk. Field-selected export lets you choose exactly which columns to include in your download. Metered against the bulk group (Enterprise tier).
Bulk Exports
Submit asynchronous bulk export jobs in NDJSON or CSV format. Poll the job status endpoint until the export completes, then retrieve the data inline (up to 10 MB). Supports filtering by canton, status, and row limits. Metered against the bulk group.
Company PDF
Generate a downloadable PDF profile for any Swiss company. The document includes registry overview, change history, board composition, auditor details, and risk indicators. Select which sections to include via query parameter.
Embeddable Widget
Embed live company summary cards on partner websites. Two integration methods are supported: a JavaScript auto-loader that scans the page for data-vynco-uid attributes, or a direct iframe embed. Both options support light and dark themes. No authentication required for public widgets.
Integration Examples
Option 1: Script tag (auto-initialise)
<script src="https://vynco.ch/api/v1/widget/embed.js"></script><div data-vynco-uid="CHE-105.962.875"></div>Option 2: Direct iframe
<iframe src="https://vynco.ch/api/v1/widget/company/CHE-105.962.875?theme=light&fields=name,canton,capital,status" width="400" height="200" frameborder="0"></iframe>Industry Reports
Access AI-generated industry intelligence reports with LLM narrative, key statistics, top companies, and trend analysis. Reports cover GICS-based industry sectors across the Swiss registry. List available industries or retrieve a detailed report for a specific sector. Metered against the expensive_ai group.
Blog
Public blog endpoints for listing and retrieving published posts. No authentication required. Filter by tag or retrieve a single post by slug.
Export
Export company data as Excel spreadsheets. Supports filtered exports with customisable field selection. Available on the Professional tier (bulk group).
OpenAPI Specification
The full OpenAPI 3.0 specification (140+ endpoints) is available for self-discovery, SDK generation, and integration with tools like Postman, Insomnia, or Swagger UI. No authentication is required to fetch the spec.
OpenAPI endpoint
curl "https://api.vynco.ch/api/v1/openapi.json"Management
Team, API key, and usage management endpoints. These reads are part of the account group and have a generous per-tier limit.
Teams
API Keys
Usage
Error Reference
All error responses follow the RFC 7807 Problem Details format with consistent structure across all endpoints. The example below shows a 429 Too Many Requests response — the most common failure mode under the per-group rate-limit model.
HTTP/1.1 429 Too Many RequestsRetry-After: 3540x-ratelimit-group: methodology_readx-ratelimit-window: 1hx-ratelimit-limit: 600x-ratelimit-remaining: 0x-ratelimit-reset: 3540{ "type": "https://api.vynco.ch/errors/rate-limit-exceeded", "title": "Too Many Requests", "status": 429, "detail": "Rate limit exceeded for the methodology_read group on the Professional tier (600/h). Honour the Retry-After header.", "instance": "/v1/dossiers/CHE-109.322.551", "group": "methodology_read", "window": "1h", "limit": 600, "retryAfterSeconds": 3540}HTTP Status Codes
| Status | Title | Description |
|---|---|---|
| 400 | Bad Request | The request body or parameters are invalid |
| 401 | Unauthorized | Missing or invalid API key / JWT token |
| 403 | Forbidden | Endpoint group not unlocked on the caller's tier (e.g. methodology on Starter) |
| 404 | Not Found | The requested resource does not exist |
| 429 | Too Many Requests | Per-group rate limit exceeded — honour the Retry-After header |
| 500 | Internal Server Error | An unexpected error occurred on our end |
Rate Limits
API requests are rate-limited per endpoint group, per tier. Limits are exposed via the x-ratelimit-* response headers and reset at the end of each window. When a request exceeds its bucket, the API returns 429 Too Many Requests with a Retry-After header.
| Group | What it covers | Free | Starter | Professional | Enterprise |
|---|---|---|---|---|---|
search_read | Company search & lookup | 60/h | 600/h | 6,000/h | 60,000/h |
standard_read | Per-company detail tabs | 60/h | 600/h | 6,000/h | 60,000/h |
analytics_read | Aggregate analytics | — | 60/h | 600/h | 6,000/h |
methodology_read | Risk v2, compliance, audit playbook, UBO | — | — | 600/h | 6,000/h |
expensive_ai | AI generation (dossier, summary) | — | — | 20/day | 200/day |
bulk | Bulk processing & exports | — | — | — | 100/day |
Rate-limit ladder mirrors the pricing page. Free reads are unauthenticated; paid tiers require a Bearer token. Per-tier limits stack across groups — e.g. Starter unlocks search_read, standard_read, and analytics_read independently.