Last updated Dec 2025

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:direction or multiple fields field1:direction1,field2:direction2

    • Available fields for cards:
      created_at, updated_at, name, interactions_count, latest_signal_date

    • Directions: asc (ascending) or desc (descending)

    • Examples:

      • sort=name:asc — sort by name ascending

      • sort=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 here

  • rounds (string) — filter by rounds (comma-separated): rounds=raising_now,just_raised. Get available rounds here

  • categories (string) — filter by categories (comma-separated): categories=ai,saas. Get available categories here

  • locations (string) — filter by locations (comma-separated): locations=san_francisco_ca,bay_area. Get available locations here

  • participants (string) — filter by participants (comma-separated): participants=investor-fund. Get available participants here

  • display_preference (string) — filter by type: web3, web2, all

  • filter_id (integer) — apply saved user filter. Get available filters here

  • folder_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 date

  • last_interaction_after, last_interaction_before — filter by last interaction date

  • first_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 stages and rounds are specified, cards matching either the stage OR the round will be returned

  • When 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 stage seed OR round raising_now

    • stages=seed,series_a&categories=ai — returns cards with stage seed OR series_a, AND category ai

Example Request

GET /v1/cards/?limit=20&offset=0&sort=trending&categories=ai,saas&stages=seed
Authorization: Token <your_token>

Example Response — 200 OK

Example Response — 200 OK

Example Response — 200 OK

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)

  • sort sort (string) — sorting: trending, recent, most_active or custom format field:direction

  • include_user_data (boolean) — includes user data (favorites, notes, folders)

  • stages (array[string]) — filter by stages (array): ["seed","series_a"]. Get available stages here

  • rounds (array[string]) — filter by rounds (array): ["raising_now", "just_raised"]. Get available rounds here

  • categories (array[string]) — filter by categories (array): ["ai", "saas"]. Get available categories here

  • locations (array[string]) — filter by locations (array): ["san_francisco_ca", "bay_area"]. Get available locations here

  • participants (array[string]) — filter by participants (array): ["investor-fund"]. Get available participants here

  • display_preference (string) — filter by type: web3, web2, all

  • filter_id (integer) — apply saved user filter. Get available filters here

  • folder_ids (array[integer]) — filter by folders (array): [1, 2, 3]. Get available folders here

  • created_after, created_before (string) — filter by creation date (format: YYYY-MM-DD)

  • updated_after, updated_before (string) — filter by update date

  • last_interaction_after, last_interaction_before (string) — filter by last interaction date

  • first_interaction_after, first_interaction_before (string) — filter by first interaction date

Basic POST request

POST /v1/cards/
Content-Type: application/json
Authorization: Token <your_token>

POST with large filter volume

POST /v1/cards/
Content-Type: application/json
Authorization: Token <your_token>

POST with custom sorting

POST /v1/cards/
Content-Type: application/json
Authorization: Token <your_token>

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 /v1/cards/thinkymachines/?include_user_data=true
Authorization: Token <your_token>

Example Response — 200 OK

Example Response — 200 OK

Example Response — 200 OK

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

GET /v1/cards/thinkymachines/interactions/?limit=50&offset=0
Authorization: Token <your_token>

Example Response — 200 OK

Example Response — 200 OK

Example Response — 200 OK

Reference Data

Categories

GET /v1/cards/categories/

Get hierarchical structure of categories (parent and child categories).

Example Response — 200 OK

Example Response — 200 OK

Example Response — 200 OK

Stages

GET /v1/cards/stages/

Get list of project development stages (seed, series_a, series_b, etc.).

Example Response — 200 OK

Example Response — 200 OK

Example Response — 200 OK

Rounds

GET /v1/cards/rounds/

Get list of funding rounds (raising_now, just_raised, about_to_raise, etc.).

Example Response — 200 OK

Example Response — 200 OK

Example Response — 200 OK

Locations

GET /v1/cards/locations/

Get hierarchical structure of locations (regions and cities).

Example Response — 200 OK

Example Response — 200 OK

Example Response — 200 OK

User Folders

GET /v1/cards/folders/

Get list of user folders with card count in each.

Example Response — 200 OK

Example Response — 200 OK

Example Response — 200 OK

Saved Filters

GET /v1/cards/filters/

Get list of saved user filters (for applying via filter_id).

Example Response — 200 OK

Example Response — 200 OK

Example Response — 200 OK

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 list

  • search (string) — search by name and description

  • sort (string) — sorting: preset values or custom format

    • Preset values:

      • name (default) — sort by name ascending

      • most_active — sort by monthly signals (descending), then by name (ascending)

    • Custom format:
      field:direction or multiple fields field1:direction1,field2:direction2

    • Available fields for cards:
      name, monthly_signals

    • Directions: asc (ascending) or desc (descending)

    • Examples:

      • sort=name:asc — sort by name ascending

      • sort=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 here

  • web3 (boolean) — filter by web3 focus: web3=true

  • web2 (boolean) — filter by web2 focus: web2=true

  • saved_only (boolean) — show only saved participants

Example Request

GET /v1/participants/?limit=50&offset=0&type=fund&web3=true&sort=most_active
Authorization: Token <your_token>

Example Response — 200 OK

Example Response — 200 OK

Example Response — 200 OK

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 /v1/participants/a16z/?include_user_data=true
Authorization: Token <your_token>

Example Response — 200 OK

Example Response — 200 OK

Example Response — 200 OK

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,sequoia

  • include_user_data (boolean) — includes user data (is_saved)

Example Request

GET /v1/participants/batch/?slugs=a16z,ycombinator,sequoia
Authorization: Token <your_token>

Example Response — 200 OK

Example Response — 200 OK

Example Response — 200 OK

Participant Types

GET /v1/participants/types/

Get list of participant types (fund, investor, angel, founder, accelerator, etc.).

Example Response — 200 OK

Example Response — 200 OK

Example Response — 200 OK

Utilities

Validate Token

GET /v1/token/validate/

Validate authentication token.

Example Request

GET /v1/token/validate/
Authorization: Token <your_token>

Example Response — 200 OK

Example Response — 200 OK

Example Response — 200 OK

v1/validate/

Glossary

Complete description of all attributes returned by the API.

Card Attributes

Basic Fields

  • id (integer, required) — Unique identifier for the card

  • slug (string, required) — URL-friendly identifier used in API requests (e.g., thinkymachines)

  • name (string, required) — Project/company name or person name

  • public_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 description

  • image (string|null) — Absolute URL to project image/logo

  • url (string|null) — Project website URL or person account URL

Status & Metrics

  • interactions_count (integer, required) — Total number of signals/interactions for this card

  • trending (boolean, required) — Whether the card is currently trending (based on recent activity)

  • stage (object, required) — Project development stage

    • name (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 status

    • name (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 to

    • Each 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 information

    • formatted (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 name

    • state (string|null) — State/province code

    • country (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 in YYYY-MM-DD format (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 links

    • Each 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 user

    • is_liked (boolean) — Whether user has liked/favorited this card

    • has_note (boolean) — Whether user has created a note for this card

    • note (object|null) — User's note object (only present if has_note=true)

      • text (string) — Note text content

      • created_at (string) — ISO 8601 UTC datetime when note was created

      • updated_at (string) — ISO 8601 UTC datetime when note was last updated

    • folders (array[object]) — List of folders where this card is saved

      • Each item contains:

        • id (integer) — Folder ID

        • name (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 ID

      • created_at (string) — ISO 8601 UTC datetime of interaction

      • participant (object) — Main participant in interaction

        • name (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 address

  • image (string|null) — Absolute URL to participant image/logo

  • about (string|null) — Description/about text for the participant

Type & Focus

  • type (string, required) — Participant type identifier

    • Possible values: fund, investor, angel, founder, accelerator, etc.

    • Get available types here

  • web3 (boolean, required) — Whether participant has shown interest in web3/crypto projects

  • web2 (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., true for 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 links

    • Each 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 ID

  • created_at (string, required) — ISO 8601 UTC datetime when interaction occurred

  • participant (object, required) — Main participant in the interaction

    • name (string) — Participant name

    • slug (string) — Participant slug

    • type (string) — Participant type

  • associated_participant (object|null) — Associated participant (e.g., individual investor associated with a fund)

    • name (string) — Associated participant name

    • slug (string) — Associated participant slug

    • type (string) — Participant type

Pagination Attributes

Basic Fields

  • limit (integer) — Number of records per page

  • offset (integer) — Offset from the start of the list

  • total (integer) — Total number of records available

  • has_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 token

  • 404 Not Found — resource not found

  • 400 Bad Request — data validation error

  • 429 Too Many Requests— request limit exceeded

  • 500 Internal Server Error — internal server error

Example Response — 429

Example Response — 429

Example Response — 429

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)