VECK API Documentation
API v1Overview
REST API for venture capital monitoring: cards (projects / signals), participants, interactions, and reference data. All routes are versioned under /v1/.
Quick start
Base URL: https://api.theveck.com
Header: Authorization: Token <your_token> on every request
Example: GET https://api.theveck.com/v1/cards/?limit=10
Authentication
Every endpoint requires a valid API token in the Authorization header using the Token scheme. Invalid or missing credentials return 401. Use Validate Token to inspect plan, rate limits, and capabilities.
Rate Limits
| Plan | Period | Default limit | Notes |
|---|---|---|---|
| free | lifetime | 100 requests total | Counter never resets |
| paid | daily | 500 requests / UTC day | May be overridden per account |
| unlimited | — | — | Staff / superuser accounts |
Conventions
- Versioning — paths use
/v1/…. Discover endpoints via API Versions. - JSON bodies — use
Content-Type: application/jsonfor POST requests. - List responses — typically
dataplus optionalpaginationandmeta. - Field semantics — required fields are always present; optional values may be
null. - Restricted endpoints — marked in catalog and token capabilities (e.g. LinkedIn profiles).
Cards
List and inspect cards (projects / signals): pagination, filters, semantic search, detail and interactions.
/v1/cards/Get Cards List
Main parameters
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Records per page (max 100, default 20) |
| offset | integer | Offset from start (default 0) |
| include_total | boolean | Include total count in pagination (true by default). Set false to skip expensive count() |
| sort | string | Preset (trending, recent, most_active) or custom field:direction. Default: latest_signal_date:desc |
| include_user_data | boolean | Include favorites, notes, folders |
| view | string | default (full) or compact (lightweight) |
| fields | string | Comma-separated top-level fields, e.g. id,slug,name,image |
Filters
| Parameter | Type | Description |
|---|---|---|
| stages | string | Stage slugs (OR). See Reference Data → Stages |
| rounds | string | Round slugs (OR). See Reference Data → Rounds |
| categories | string | Category slugs (OR). See Reference Data → Categories |
| locations | string | Location slugs (OR). See Reference Data → Locations |
| participants | string | Participant slugs (OR) |
| source_types | string | Source-type slugs (OR). Filters by the first signal — same as Feed Settings → Source type. See Source types. |
| display_preference | string | web3, web2, or all |
| filter_id | integer | Saved filter ID |
| folder_ids | string | Comma-separated folder IDs |
| search | string | Text search; with semantic=1 becomes semantic search |
| semantic | string | 1 / true / yes — enable semantic ranking (requires search) |
| min_similarity | float | Cosine threshold for semantic search (default 0.3) |
| featured | boolean | Filter featured cards |
| new | boolean | Cards created in the last 7 days |
| trending | boolean | Filter trending cards |
| min_signals | integer | Minimum interactions count |
| max_signals | integer | Maximum interactions count |
| created_after | string | YYYY-MM-DD |
| created_before | string | YYYY-MM-DD |
| updated_after | string | YYYY-MM-DD |
| updated_before | string | YYYY-MM-DD |
| last_interaction_after | string | YYYY-MM-DD |
| last_interaction_before | string | YYYY-MM-DD |
| first_interaction_after | string | YYYY-MM-DD |
| first_interaction_before | string | YYYY-MM-DD |
Semantic search
With semantic=1 and search, cards are ranked by cosine similarity. Other filters apply first. Each result may include similarity (0.0–1.0). Default min_similarity=0.3.
Filtering logic
- Different filter groups combine with AND (except stages and rounds)
- Values within a group combine with OR
- Stages and rounds combine with OR between each other
- source_types=linkedin,github&categories=ai — first signal is LinkedIn OR GitHub, AND category ai
/v1/cards/Get Cards List (POST)
/v1/cards/example-founder/Get Card by Slug
linkedin_profile. linkedin_data is deprecated (temporary).| Parameter | Type | Description |
|---|---|---|
| include_user_data | boolean | Include favorites, notes, folders |
/v1/cards/example-founder/interactions/Get Card Interactions
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Page size (max 200, default 50) |
| offset | integer | Offset from start |
| include_total | boolean | Include total in pagination |
Reference Data
Load slug and ID lists from meta endpoints for filters and UI.
/v1/cards/source-types/Source types
| Label | Slug | Description |
|---|---|---|
| Social | social_interactions | Cards from tracked investor activity on social networks (follows, engagement, and similar interaction-based discovery) |
| Product Hunt | product_hunt | Product Hunt leaderboard / upvote signals |
| LinkedIn discovery signal types | ||
| GitHub | github | GitHub Trending / Rising sources |
| New company | new_company_registration | New company registration signal type |
/v1/cards/categories/Categories
Hierarchical categories for categories= filter.
/v1/cards/stages/Stages
/v1/cards/rounds/Rounds
/v1/cards/locations/Locations
/v1/cards/folders/User folders
/v1/cards/filters/Saved filters
Participants
Funds, investors, angels — list, detail, and batch fetch. List supports semantic search.
/v1/participants/Get Participants List
Main parameters
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Max 200, default 50 |
| offset | integer | Offset from start |
| include_total | boolean | Include pagination total (true by default) |
| sort | string | name (default) or most_active; or field:direction |
| include_user_data | boolean | Include is_saved |
Filters
| Parameter | Type | Description |
|---|---|---|
| type | string | Participant type slug |
| web3 | boolean | Web3 focus filter |
| web2 | boolean | Web2 focus filter |
| saved_only | boolean | Only saved participants |
| search | string | Name/description search; with semantic=1 becomes semantic search |
| semantic | string | 1 / true / yes — enable semantic ranking (requires search) |
| min_similarity | float | Cosine threshold for semantic search (default 0.3) |
Semantic search
With semantic=1 and search, participants are ranked by cosine similarity to the query — useful for queries like "web3 venture fund" even when those exact words are not in the profile. Other filters (type, web3, web2, saved_only) apply first. Each result may include similarity (0.0–1.0). Response meta.semantic echoes enabled, min_similarity, and ranking. Default min_similarity=0.3. If embeddings are unavailable, the API may return 503 with semantic_unavailable.
Example: GET /v1/participants/?search=web3+fund&semantic=1&limit=20
/v1/participants/<slug>/Get Participant by Slug
| Parameter | Type | Description |
|---|---|---|
| include_user_data | boolean | Include is_saved |
/v1/participants/batch/Get Multiple Participants
| Parameter | Type | Description |
|---|---|---|
| slugsreq | string | Comma-separated slugs (max 100) |
| include_user_data | boolean | Include is_saved |
/v1/participants/types/Participant Types
Type slugs for the type= filter.
LinkedIn Profiles
RestrictedProfile data processed by VECK — not the LinkedIn API. Requires additional permission.
capabilities.linkedin_profiles.allowed on Validate Token. Without permission: 403 permission_denied./v1/linkedin/profiles/RestrictedGet LinkedIn Profiles List
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Max 200, default 50 |
| offset | integer | Offset |
| include_total | boolean | Pagination total |
| search | string | Keyword search |
| sort | string | created_at:desc (default) |
| classification | string | strong_potential_founder, … |
| path | string | declared_founder, imminent_founder |
| status | string | Exact status match |
| tags | string | Comma-separated tags (OR) |
| created_at | string | Created on/after (ISO date) |
/v1/linkedin/profiles/5001/RestrictedGet LinkedIn Profile by ID
Same fields as a list item, wrapped in data.
Utilities
Discovery and token validation.
/API Versions
/v1/token/validate/Validate Token
Glossary
Field reference for JSON payloads. Presence: required, optional, nullable, semantic only.
Card attributes
List (default view): id, slug, name, public_url, interactions_count, trending, stage, round, categories, created_at, updated_at, social_links, open_to_intro, has_intro_request. Optional/nullable: description, image, url, location, last_round, interaction timestamps. With semantic=1: similarity on each item.
Detail only: people, linkedin_profile (recommended), linkedin_data (deprecated), interactions (up to 20), has_more_interactions, more, employment_data.
linkedin_profile: id, name, headline, summary, location, linkedin (url, image_url, urn), education [{school, degree}], experience [{title, company, startDate, endDate, location, description}], notable_achievements, new_company, tags. Omits classification/path/status/timestamps (those are on LinkedIn Profiles API).
Participant attributes
slug, name, type, web3, web2, monthly_signals; optional alt_name, email, image, about, associated_with, sources (detail). With include_user_data: is_saved on the participant object. With semantic=1: similarity on each list item; see Semantic search.
Interaction attributes
id, created_at, participant (name, slug, type), associated_participant (nullable).
Pagination attributes
limit, offset, total (null when include_total=false), has_next.
Notes
Error Handling
Errors are JSON: { "error", "message" }
- 401 — invalid or missing token
- 403 — permission_denied
- 404 — not found
- 429 — rate limit exceeded
- 503 — semantic_unavailable
Response Format
Successful responses contain data. Lists may include pagination and meta.
Date Formats
- Request filters: YYYY-MM-DD
- Response datetimes: ISO 8601 UTC
- last_round: YYYY-MM-DD only