VECK API Documentation

API v1
Ask in:

Overview

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

PlanPeriodDefault limitNotes
freelifetime100 requests totalCounter never resets
paiddaily500 requests / UTC dayMay be overridden per account
unlimitedStaff / superuser accounts

Conventions

  • Versioning — paths use /v1/…. Discover endpoints via API Versions.
  • JSON bodies — use Content-Type: application/json for POST requests.
  • List responses — typically data plus optional pagination and meta.
  • 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.

GET/v1/cards/

Get Cards List

Paginated card list with sorting, filtering, and optional semantic search.

Main parameters

ParameterTypeDescription
limitintegerRecords per page (max 100, default 20)
offsetintegerOffset from start (default 0)
include_totalbooleanInclude total count in pagination (true by default). Set false to skip expensive count()
sortstringPreset (trending, recent, most_active) or custom field:direction. Default: latest_signal_date:desc
include_user_databooleanInclude favorites, notes, folders
viewstringdefault (full) or compact (lightweight)
fieldsstringComma-separated top-level fields, e.g. id,slug,name,image

Filters

ParameterTypeDescription
stagesstringStage slugs (OR). See Reference Data → Stages
roundsstringRound slugs (OR). See Reference Data → Rounds
categoriesstringCategory slugs (OR). See Reference Data → Categories
locationsstringLocation slugs (OR). See Reference Data → Locations
participantsstringParticipant slugs (OR)
source_typesstringSource-type slugs (OR). Filters by the first signal — same as Feed Settings → Source type. See Source types.
display_preferencestringweb3, web2, or all
filter_idintegerSaved filter ID
folder_idsstringComma-separated folder IDs
searchstringText search; with semantic=1 becomes semantic search
semanticstring1 / true / yes — enable semantic ranking (requires search)
min_similarityfloatCosine threshold for semantic search (default 0.3)
featuredbooleanFilter featured cards
newbooleanCards created in the last 7 days
trendingbooleanFilter trending cards
min_signalsintegerMinimum interactions count
max_signalsintegerMaximum interactions count
created_afterstringYYYY-MM-DD
created_beforestringYYYY-MM-DD
updated_afterstringYYYY-MM-DD
updated_beforestringYYYY-MM-DD
last_interaction_afterstringYYYY-MM-DD
last_interaction_beforestringYYYY-MM-DD
first_interaction_afterstringYYYY-MM-DD
first_interaction_beforestringYYYY-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
POST/v1/cards/

Get Cards List (POST)

Same behavior as GET, but parameters are sent as JSON. Use for large filter sets.
Lists are arrays in JSON, not comma-separated strings. All GET parameters are supported.
GET/v1/cards/example-founder/

Get Card by Slug

LinkedIn on cards: use linkedin_profile. linkedin_data is deprecated (temporary).
ParameterTypeDescription
include_user_databooleanInclude favorites, notes, folders
GET/v1/cards/example-founder/interactions/

Get Card Interactions

Full interaction history for a card with pagination.
ParameterTypeDescription
limitintegerPage size (max 200, default 50)
offsetintegerOffset from start
include_totalbooleanInclude total in pagination

Reference Data

Load slug and ID lists from meta endpoints for filters and UI.

GET/v1/cards/source-types/

Source types

Filter values for source_types=. Looks at the card's earliest signal; multiple values are OR'd.
LabelSlugDescription
Socialsocial_interactionsCards from tracked investor activity on social networks (follows, engagement, and similar interaction-based discovery)
Product Huntproduct_huntProduct Hunt leaderboard / upvote signals
LinkedInlinkedinLinkedIn discovery signal types
GitHubgithubGitHub Trending / Rising sources
New companynew_company_registrationNew company registration signal type
GET/v1/cards/categories/

Categories

Hierarchical categories for categories= filter.

GET/v1/cards/stages/

Stages

GET/v1/cards/rounds/

Rounds

GET/v1/cards/locations/

Locations

Hierarchical regions and cities for the locations= filter.
GET/v1/cards/folders/

User folders

Your folders and card counts. Use folder_ids= with list endpoints.
GET/v1/cards/filters/

Saved filters

Saved filter presets. Apply one with filter_id= on card list.

Participants

Funds, investors, angels — list, detail, and batch fetch. List supports semantic search.

GET/v1/participants/

Get Participants List

Paginated participant list with filtering and optional semantic search.

Main parameters

ParameterTypeDescription
limitintegerMax 200, default 50
offsetintegerOffset from start
include_totalbooleanInclude pagination total (true by default)
sortstringname (default) or most_active; or field:direction
include_user_databooleanInclude is_saved

Filters

ParameterTypeDescription
typestringParticipant type slug
web3booleanWeb3 focus filter
web2booleanWeb2 focus filter
saved_onlybooleanOnly saved participants
searchstringName/description search; with semantic=1 becomes semantic search
semanticstring1 / true / yes — enable semantic ranking (requires search)
min_similarityfloatCosine 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

GET/v1/participants/<slug>/

Get Participant by Slug

ParameterTypeDescription
include_user_databooleanInclude is_saved
GET/v1/participants/batch/

Get Multiple Participants

ParameterTypeDescription
slugsreqstringComma-separated slugs (max 100)
include_user_databooleanInclude is_saved
GET/v1/participants/types/

Participant Types

Type slugs for the type= filter.

LinkedIn Profiles

Restricted

Profile data processed by VECK — not the LinkedIn API. Requires additional permission.

Check capabilities.linkedin_profiles.allowed on Validate Token. Without permission: 403 permission_denied.
GET/v1/linkedin/profiles/Restricted

Get LinkedIn Profiles List

ParameterTypeDescription
limitintegerMax 200, default 50
offsetintegerOffset
include_totalbooleanPagination total
searchstringKeyword search
sortstringcreated_at:desc (default)
classificationstringstrong_potential_founder, …
pathstringdeclared_founder, imminent_founder
statusstringExact status match
tagsstringComma-separated tags (OR)
created_atstringCreated on/after (ISO date)
GET/v1/linkedin/profiles/5001/Restricted

Get LinkedIn Profile by ID

Same fields as a list item, wrapped in data.

Utilities

Discovery and token validation.

GET/

API Versions

No authentication required. Returns the public API catalog.
GET/v1/token/validate/

Validate Token

Confirm the token and inspect plan, rate limits, and capabilities.

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