Version 1
VECK API Documentation
VECK API is a RESTful interface designed for seamless integration into venture capital monitoring systems. Access comprehensive data on investors, projects, key individuals, and market signals of interest from the venture ecosystem.
Base URL: https://api.theveck.com
Authentication: Authorization: Token <your_token>
All endpoints require authentication via token in the Authorization header.
Cards
Get Cards List
GET /v1/cards/
Get a list of signal cards (projects) with pagination, sorting, and filtering support.
Main Parameters
limit(integer) — number of records per page (maximum 100, default 20)offset(integer) — offset from the start of the list (default 0)sort(string) — sorting: preset values or custom format (default: latest_signal_date:desc)Preset values:
trending— sort by interactions count (descending), then by latest signal date (descending)recent— sort by creation date (descending)most_active— sort by update date (descending), then by interactions count (descending)
Custom format:
field:directionor multiple fieldsfield1:direction1,field2:direction2Available fields for cards:
created_at,updated_at,name,interactions_count,latest_signal_dateDirections:
asc(ascending) ordesc(descending)Examples:
sort=name:asc— sort by name ascendingsort=created_at:desc,interactions_count:desc— first by creation date (descending), then by interactions count (descending)
include_user_data(boolean) — includes user data (favorites, notes, folders)
Filters
stages(string) — filter by stages (comma-separated):stages=seed,series_a. Get available stages hererounds(string) — filter by rounds (comma-separated):rounds=raising_now,just_raised. Get available rounds herecategories(string) — filter by categories (comma-separated):categories=ai,saas. Get available categories herelocations(string) — filter by locations (comma-separated):locations=san_francisco_ca,bay_area. Get available locations hereparticipants(string) — filter by participants (comma-separated):participants=investor-fund. Get available participants heredisplay_preference(string) — filter by type:web3,web2,allfilter_id(integer) — apply saved user filter. Get available filters herefolder_ids(string) — filter by folders (comma-separated):folder_ids=1,2,3. Get available folders here
Date Filters
created_after,created_before— filter by creation date (format: YYYY-MM-DD)updated_after,updated_before— filter by update datelast_interaction_after,last_interaction_before— filter by last interaction datefirst_interaction_after,first_interaction_before— filter by first interaction date
Filtering Logic
Different filter groups are combined with AND (except stages and rounds)
Values within each group are combined with OR
Stages and rounds are combined with OR — if both
stagesandroundsare specified, cards matching either the stage OR the round will be returnedWhen a parent category is specified, all child categories are automatically included
When a region is specified, cards from all locations in that region are returned
Examples:
stages=seed&rounds=raising_now— returns cards with stageseedOR roundraising_nowstages=seed,series_a&categories=ai— returns cards with stageseedORseries_a, AND categoryai
Example Request
Get Cards List (POST)
POST /v1/cards/
Get a list of cards with filters via JSON body (useful for large filter volumes).
Important: POST method accepts the same parameters as GET, but in JSON body. This is useful for large filter volumes (thousands of categories, participants, etc.) that don't fit in the URL.
Request Parameters (JSON Body)
All parameters are the same as in GET method, but passed in JSON body. Lists are passed as arrays, not comma-separated strings:
limit(integer) — number of records per page (maximum 100, default 20)offset(integer) — offset from the start of the list (default 0)sortsort(string) — sorting:trending,recent,most_activeor custom formatfield:directioninclude_user_data(boolean) — includes user data (favorites, notes, folders)stages(array[string]) — filter by stages (array):["seed","series_a"]. Get available stages hererounds(array[string]) — filter by rounds (array):["raising_now", "just_raised"]. Get available rounds herecategories(array[string]) — filter by categories (array):["ai", "saas"]. Get available categories herelocations(array[string]) — filter by locations (array):["san_francisco_ca", "bay_area"]. Get available locations hereparticipants(array[string]) — filter by participants (array):["investor-fund"]. Get available participants heredisplay_preference(string) — filter by type:web3,web2,allfilter_id(integer) — apply saved user filter. Get available filters herefolder_ids(array[integer]) — filter by folders (array):[1, 2, 3]. Get available folders herecreated_after,created_before(string) — filter by creation date (format: YYYY-MM-DD)updated_after,updated_before(string) — filter by update datelast_interaction_after,last_interaction_before(string) — filter by last interaction datefirst_interaction_after,first_interaction_before(string) — filter by first interaction date
Basic POST request
POST with large filter volume
POST with custom sorting
Note: Custom sorting is passed as a string in format
"sort": "name:asc"— sort by name ascending"sort": "created_at:desc,interactions_count:desc"— first by creation date (descending), then by interactions count (descending)
Example Response
Response format is identical to GET method (see above).
Get Card by Slug
GET /v1/cards/<slug>/
Get detailed information about a specific card by its slug.
Parameters
include_user_data(boolean) — includes user data
Example Request
Get Card Interactions
GET /v1/cards/<slug>/interactions/
Get all interactions (signals) for a card with pagination.
Parameters
limit(integer) — number of records (maximum 200, default 50)offset(integer) — offset from the start of the list
Example Request
Reference Data
Categories
GET /v1/cards/categories/
Get hierarchical structure of categories (parent and child categories).
Stages
GET /v1/cards/stages/
Get list of project development stages (seed, series_a, series_b, etc.).
Rounds
GET /v1/cards/rounds/
Get list of funding rounds (raising_now, just_raised, about_to_raise, etc.).
Locations
GET /v1/cards/locations/
Get hierarchical structure of locations (regions and cities).
User Folders
GET /v1/cards/folders/
Get list of user folders with card count in each.
Saved Filters
GET /v1/cards/filters/
Get list of saved user filters (for applying via filter_id).
Participants
Get Participants List
GET /v1/participants/
Get list of participants (funds, investors, angels) with pagination and filtering.
Main Parameters
limit(integer) — number of records per page (maximum 200, default 50)offset(integer) — offset from the start of the listsearch(string) — search by name and descriptionsort(string) — sorting: preset values or custom formatPreset values:
name(default) — sort by name ascendingmost_active— sort by monthly signals (descending), then by name (ascending)
Custom format:
field:directionor multiple fieldsfield1:direction1,field2:direction2Available fields for cards:
name,monthly_signalsDirections:
asc(ascending) ordesc(descending)Examples:
sort=name:asc— sort by name ascendingsort=monthly_signals:desc,name:asc— first by monthly signals (descending), then by name (ascending)
include_user_data(boolean) — includes user data (is_saved)
Filters
type(string) — filter by type:fund,investor,angel, etc. Get available types hereweb3(boolean) — filter by web3 focus:web3=trueweb2(boolean) — filter by web2 focus:web2=truesaved_only(boolean) — show only saved participants
Example Request
Get Participant by Slug
GET /v1/participants/<slug>/
Get detailed information about a participant by slug.
Parameters
include_user_data(boolean) — includes user data (is_saved)
Example Request
Get Multiple Participants
GET /v1/participants/batch/
Get multiple participants by list of slugs (batch operation, maximum 100).
Parameters
slugs(string, required) — comma-separated list of slugs:slugs=a16z,ycombinator,sequoiainclude_user_data(boolean) — includes user data (is_saved)
Example Request
Participant Types
GET /v1/participants/types/
Get list of participant types (fund, investor, angel, founder, accelerator, etc.).
Utilities
Validate Token
GET /v1/token/validate/
Validate authentication token.
Example Request
v1/validate/
Glossary
Complete description of all attributes returned by the API.
Card Attributes
Basic Fields
id(integer, required) — Unique identifier for the cardslug(string, required) — URL-friendly identifier used in API requests (e.g.,thinkymachines)name(string, required) — Project/company name or person namepublic_url(string, required) — Public URL to view the card on the platform (e.g.,https://app.theveck.com/public/thinkymachines)description(string|null) — Detailed project descriptionimage(string|null) — Absolute URL to project image/logourl(string|null) — Project website URL or person account URL
Status & Metrics
interactions_count(integer, required) — Total number of signals/interactions for this cardtrending(boolean, required) — Whether the card is currently trending (based on recent activity)stage(object, required) — Project development stagename(string) — Human-readable stage name (e.g., "Seed", "Unknown")slug(string|null) — Stage identifier for filtering (e.g.,seed)Get available stages here
round(object, required) — Current funding round statusname(string) — Human-readable round name (e.g., "Unknown", "Raising Now")slug(string|null) — Round identifier for filtering (e.g.,unknown,raising_now)Get available rounds here
Categories
categories(array, required) — List of categories the project belongs toEach item contains:
name(string) — Category name (e.g., "AI", "Open Source")slug(string) — Category identifier for filtering (e.g.,ai,open-source-main)
Get available categories here
Categories are hierarchical (parent categories include all child categories when filtering)
Location
location(object, required) — Geographic location informationformatted(string|null) — Full formatted location string (e.g., "United States")slug(string|null) — Location identifier for filtering (e.g.,united_states)city(string|null) — City namestate(string|null) — State/province codecountry(string|null) — Country name (e.g., "United States")region(string|null) — Region name (e.g., "North America")region_slug(string|null) — Region identifier for filtering (e.g.,north_america)type(string|null) — Location type (e.g., "country", "city")Get available locations here
Dates
created_at(string, required) — ISO 8601 UTC datetime when card was created (e.g.,2025-02-18T19:31:19Z)updated_at(string, required) — ISO 8601 UTC datetime when card was last updated (e.g.,2025-07-21T14:04:01Z)last_round(string|null) — Date of last funding round inYYYY-MM-DDformat (e.g.,2025-06-20)last_interaction_at(string|null) — ISO 8601 UTC datetime of most recent signal/interaction (e.g.,2025-11-14T16:16:29Z)first_interaction_at(string|null) — ISO 8601 UTC datetime of first signal/interaction (e.g.,2025-02-18T19:30:18Z)
Social Links
social_links(array, required) — List of social media linksEach item contains:
key(string) — Normalized platform identifier (e.g., "twitter")name(string) — Platform name (e.g., "twitter")url(string) — Full URL to social profile (e.g.,https://x.com/thinkymachines)
User Data (when include_user_data=true)
user_data(object, optional) — User-specific data for authenticated useris_liked(boolean) — Whether user has liked/favorited this cardhas_note(boolean) — Whether user has created a note for this cardnote(object|null) — User's note object (only present ifhas_note=true)text(string) — Note text contentcreated_at(string) — ISO 8601 UTC datetime when note was createdupdated_at(string) — ISO 8601 UTC datetime when note was last updated
folders(array[object]) — List of folders where this card is savedEach item contains:
id(integer) — Folder IDname(string) — Folder name
Detail View Additional Fields
team_members(array) — List of team members (detail view only)more(object) — Additional project information (detail view only)employment_data(object) — Employment information (detail view only)interactions(array) — List of recent interactions/signals (up to 20 in detail view)Each item contains:
id(integer) — Interaction IDcreated_at(string) — ISO 8601 UTC datetime of interactionparticipant(object) — Main participant in interactionname(string) — Participant name (e.g., "Jack Zhang")slug(string) — Participant slug (e.g.,jcz42)type(string) — Participant type (e.g., "investor", "fund")
associated_participant(object|null) — Associated participant (if applicable)name(string) — Associated participant name (e.g., "Contrary")slug(string) — Associated participant slug (e.g.,contrary)type(string) — Participant type (e.g., "fund")
has_more_interactions(boolean) — Whether there are more than 20 interactions (use/cards/<slug>/interactions/endpoint to get all)
Participant Attributes
Basic Fields
slug(string, required) — URL-friendly identifier used in API requests (e.g.,a16z,jcz42)name(string, required) — Participant name (fund, investor, or individual name)alt_name(string|null) — Alternative/additional name (e.g., "VC" for a fund)email(string|null) — Contact email addressimage(string|null) — Absolute URL to participant image/logoabout(string|null) — Description/about text for the participant
Type & Focus
type(string, required) — Participant type identifierPossible values:
fund,investor,angel,founder,accelerator, etc.Get available types here
web3(boolean, required) — Whether participant has shown interest in web3/crypto projectsweb2(boolean, required) — Whether participant has shown interest in web2/traditional projects
Metrics
monthly_signals(integer, required) — Number of signals/interactions per month
Relationships
associated_with(object|null) — Parent organization (if participant is associated with a fund)slug(string) — Parent organization slug (e.g.,a16z)name(string) — Parent organization name (e.g., "a16z")
self_associated(boolean, required) — Whether participant is associated with itself (common for funds, e.g.,truefor a16z)
User Data (when include_user_data=true)
is_saved(boolean, optional) — Whether user has saved this participant
Detail View Additional Fields
sources(array) — List of social media/source linksEach item contains:
slug(string) — Source identifier (e.g.,a16z)type(string) — Source type (e.g., "twitter", "linkedin-company", "linkedin")link(string) — Full URL to source profile (e.g.,https://x.com/a16z)
Interaction Attributes
Basic Fields
id(integer, required) — Unique interaction/signal IDcreated_at(string, required) — ISO 8601 UTC datetime when interaction occurredparticipant(object, required) — Main participant in the interactionname(string) — Participant nameslug(string) — Participant slugtype(string) — Participant type
associated_participant(object|null) — Associated participant (e.g., individual investor associated with a fund)name(string) — Associated participant nameslug(string) — Associated participant slugtype(string) — Participant type
Pagination Attributes
Basic Fields
limit(integer) — Number of records per pageoffset(integer) — Offset from the start of the listtotal(integer) — Total number of records availablehas_next(boolean) — Whether there are more records available
Notes
Error Handling
All errors are returned in JSON format:
Main Error Codes
401 Unauthorized— authentication required or invalid token404 Not Found— resource not found400 Bad Request— data validation error429 Too Many Requests— request limit exceeded500 Internal Server Error— internal server error
Response Format
All successful responses contain a data field with data and an optional pagination field for lists:
Date Formats
Request parameters (date filters):
Use YYYY-MM-DD format (e.g., 2025-01-15)
Applies to: created_after, created_before, updated_after, updated_before, last_interaction_after, last_interaction_before, first_interaction_after, first_interaction_before
Response fields (date-time):
Use ISO 8601 UTC format with time (e.g., 2025-01-15T10:30:00Z)
Applies to: created_at, updated_at, last_interaction_at, first_interaction_at, and all datetime fields in responses
Exception: last_round field in responses uses YYYY-MM-DD format (date only, e.g., 2025-01-15)