> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryfundable.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Person

> Retrieve detailed person information using any supported identifier format.
The API intelligently detects the identifier type and queries accordingly.

Provide ONE of the following query parameters to identify the person:
- `id` - Person UUID
- `linkedin` - LinkedIn person URL
- `crunchbase` - Crunchbase person URL
- `twitter` - Twitter/X URL

Returns the same constant unified shape as the list endpoint, with **full**
employment and education history (no per-section limit).




## OpenAPI

````yaml openapi/openapi-people.yaml GET /person
openapi: 3.0.3
info:
  title: Fundable People API
  description: >
    API for searching and retrieving people (founders, executives, investors)
    with cross-type filtering.


    ## Authentication

    All API requests require authentication using an API key in the
    Authorization header.


    ## Rate Limits

    API usage is tracked and may be subject to monthly limits depending on your
    API key tier.


    ## Endpoint shape (POST)

    `POST /people` accepts a JSON body with four filter sections. There is no
    `type`

    discriminator — filter intent is implicit in which sections have data, so
    cross-type queries

    (e.g. "founders at fintech companies who also invested in AI startups") work
    natively.


    Filter sections:

    - `identifiers` — look up specific people by UUID, LinkedIn, Crunchbase, or
    Twitter

    - `person` — role, contact info available, job title, education, prior
    employers

    - `company` — current employer attributes (industry, location, IPO status,
    funding, etc.).
      Includes nested `company.latest_deal` for the current employer's most recent round.
    - `investor` — investor firm attributes for people who invest. Includes
    nested
      `investor.deals` covering both the person's deal activity (size, date, lead-only,
      angel/institutional) AND the attributes of the portfolio companies they've invested in
      (industry, location, IPO status, semantic search).

    Plus pagination/sort at the top level: `page`, `page_size`, `sort_by`.


    ## Implicit constraints

    The endpoint inspects which sections have data and emits implicit WHERE
    clauses:


    | When you set | Backend constraint |

    |---|---|

    | Any `company.*` field (including `company.latest_deal.*`) | Person must
    have a current employer |

    | Any `investor.*` field (including `investor.deals.*`) | Person must be an
    investor |

    | Both sides | Both apply (true cross-type query) |

    | Neither | No constraint — paginated everyone |


    The top-level `person_type` field (`"company"`, `"investor"`, or `"any"` —
    default `"any"`)

    explicitly forces one population regardless of which filter blocks are
    present. Use it when

    you want only company-people (founders/employees) or only investor-people
    without having to

    add a filter block to imply it.


    ## Semantic search

    Two independent natural-language search fields. Think of each as a flexible
    replacement for

    an industry tag: use them to target a **niche industry or specific product
    type** by

    describing what a company does — its product, technology, or business model
    — rather than

    other attributes like stage, location, or funding (apply those with the
    dedicated filter

    fields instead):

    - `company.search_query` — semantic match against the person's current
    employer

    - `investor.deals.search_query` — semantic match against companies the
    person has invested in


    Both can fire simultaneously. Each accepts an optional `min_relevance`
    (0..1) to filter out

    weak matches. When semantic search is active, results are ordered by
    relevance and any

    explicit `sort_by` is ignored.


    ## Response shape

    Every row carries every field. Investor-context aggregates (deal counts, top
    industries / locations / round types,

    most recent deal date) live under a single `investor_highlights` object. For
    non-investors,

    `investor_highlights` is `null` and `is_investor` / `is_angel` /
    `has_led_deal` are `false`.

    Pure employees and pure angels have the same shape — only the values differ.


    ## Person identifiers (for `/person`)

    Detail endpoint uses query parameters — exactly one of `?id=`, `?linkedin=`,

    `?crunchbase=`, or `?twitter=`. Examples:

    - `GET /person?id=550e8400-e29b-41d4-a716-446655440000`

    - `GET /person?linkedin=https://linkedin.com/in/jane-doe-12345`

    - `GET /person?crunchbase=https://crunchbase.com/person/jane-doe`

    - `GET /person?twitter=https://x.com/janedoe`


    ## Money units

    All monetary values in request and response are in **actual USD** (not
    millions). For example,

    `total_raised_min: 10000000` means $10M.
  version: 1.0.0
  contact:
    name: Fundable API Support
    url: jacob@tryfundable.ai
  license:
    name: Proprietary
    url: https://www.tryfundable.ai/terms/privacy/
servers:
  - url: https://www.tryfundable.ai/api/v1
    description: Production server
security:
  - bearerAuth: []
tags:
  - name: people
    description: People search and detail operations
paths:
  /person:
    get:
      summary: Get person details by identifier
      description: >
        Retrieve detailed person information using any supported identifier
        format.

        The API intelligently detects the identifier type and queries
        accordingly.


        Provide ONE of the following query parameters to identify the person:

        - `id` - Person UUID

        - `linkedin` - LinkedIn person URL

        - `crunchbase` - Crunchbase person URL

        - `twitter` - Twitter/X URL


        Returns the same constant unified shape as the list endpoint, with
        **full**

        employment and education history (no per-section limit).
      operationId: getPerson
      parameters:
        - name: id
          in: query
          required: false
          description: Person UUID
          schema:
            type: string
            format: uuid
          example: 550e8400-e29b-41d4-a716-446655440000
        - name: linkedin
          in: query
          required: false
          description: LinkedIn person URL
          schema:
            type: string
          example: https://www.linkedin.com/in/eladgil/
        - name: crunchbase
          in: query
          required: false
          description: Crunchbase person URL
          schema:
            type: string
          example: https://crunchbase.com/person/jane-doe
        - name: twitter
          in: query
          required: false
          description: Twitter/X URL
          schema:
            type: string
          example: https://x.com/janedoe
      responses:
        '200':
          description: Successful response with person data
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                  - data
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    type: object
                    required:
                      - person
                    properties:
                      person:
                        $ref: '#/components/schemas/PersonDetail'
                  meta:
                    type: object
                    properties:
                      page:
                        type: integer
                        example: 0
                      page_size:
                        type: integer
                        example: 1
                      credits_used:
                        type: integer
                        example: 1
                      credit_source:
                        type: string
                        nullable: true
                        enum:
                          - monthly
                          - purchased
                      monthly_credits_remaining:
                        type: integer
                        nullable: true
                      purchased_credits_remaining:
                        type: integer
                        nullable: true
        '400':
          description: >-
            Missing or invalid identifier (no query param provided, or invalid
            UUID / URL)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidIdentifierError'
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthError'
        '402':
          description: Insufficient credits to complete request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsufficientCreditsError'
        '404':
          description: Person not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '429':
          description: Rate limit exceeded (per-minute)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
          headers:
            Retry-After:
              schema:
                type: integer
                example: 60
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
components:
  schemas:
    PersonDetail:
      allOf:
        - $ref: '#/components/schemas/PersonSearchResult'
        - type: object
          description: >-
            Detail endpoint returns the same shape as search but with full
            (unbounded) employment and education history.
          properties:
            employment_history:
              type: array
              description: Full employment history (no item cap)
              items:
                $ref: '#/components/schemas/EmploymentRecord'
            education_history:
              type: array
              description: Full education history (no item cap)
              items:
                $ref: '#/components/schemas/EducationRecord'
    InvalidIdentifierError:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            code:
              type: string
              example: INVALID_IDENTIFIER
            message:
              type: string
            details:
              type: object
              properties:
                help:
                  type: string
    AuthError:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - AUTH_ERROR
                - INVALID_API_KEY
                - INACTIVE_API_KEY
            message:
              type: string
            details:
              type: object
              properties:
                help:
                  type: string
    InsufficientCreditsError:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            code:
              type: string
              example: INSUFFICIENT_CREDITS
            message:
              type: string
            details:
              type: object
              properties:
                credits_needed:
                  type: integer
                  nullable: true
                monthly_credits_remaining:
                  type: integer
                purchased_credits_remaining:
                  type: integer
                help:
                  type: string
      required:
        - error
    NotFoundError:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            code:
              type: string
              example: PERSON_NOT_FOUND
            message:
              type: string
              example: Person not found
            details:
              type: object
              properties:
                help:
                  type: string
    RateLimitError:
      type: object
      description: Per-minute API rate limit exceeded
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            code:
              type: string
              example: RATE_LIMIT_EXCEEDED
            message:
              type: string
              example: Rate limit exceeded. Maximum 200 requests per minute.
            details:
              type: object
              properties:
                limit:
                  type: integer
                  example: 200
                window:
                  type: string
                  example: 60 seconds
                help:
                  type: string
      required:
        - error
    ServerError:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            code:
              type: string
              example: INTERNAL_SERVER_ERROR
            message:
              type: string
    PersonSearchResult:
      type: object
      description: >
        Constant unified person shape — every row carries every field. Investor
        aggregates live

        under `investor_highlights` (null for non-investors); discriminator
        flags `is_investor` /

        `is_angel` / `has_led_deal` and `investment_firms` stay top-level.
        `employment_history`

        and `education_history` are capped at 3 in the search response; the
        detail endpoint

        returns the full lists.
      properties:
        id:
          type: string
          format: uuid
          example: 550e8400-e29b-41d4-a716-446655440000
        name:
          type: string
          nullable: true
          example: Jane Doe
        title:
          type: string
          nullable: true
          description: Current job title
          example: CEO
        linkedin_url:
          type: string
          nullable: true
          format: uri
          description: Canonical LinkedIn person URL
        crunchbase_url:
          type: string
          nullable: true
          format: uri
          description: Canonical Crunchbase person URL
        twitter_url:
          type: string
          nullable: true
          format: uri
          description: Canonical Twitter/X profile URL
        location:
          type: string
          nullable: true
          example: San Francisco, CA
        city:
          type: string
          nullable: true
        country_code:
          type: string
          nullable: true
          example: US
        about:
          type: string
          nullable: true
          description: LinkedIn bio/about section
        is_founder:
          type: boolean
        current_company:
          $ref: '#/components/schemas/PersonCurrentCompany'
        employment_history:
          type: array
          description: >-
            Recent employment (max 3 items in search; full list on detail
            endpoint)
          maxItems: 3
          items:
            $ref: '#/components/schemas/EmploymentRecord'
        education_history:
          type: array
          description: >-
            Education records (max 3 items in search; full list on detail
            endpoint)
          maxItems: 3
          items:
            $ref: '#/components/schemas/EducationRecord'
        is_investor:
          type: boolean
          description: Whether the person has any tracked investment activity
        is_angel:
          type: boolean
          description: Whether the person makes angel investments
        has_led_deal:
          type: boolean
          description: Whether the person has ever led a deal
        investment_firms:
          type: array
          description: Firms the person invests under (empty for pure angels)
          items:
            $ref: '#/components/schemas/Firm'
        investor_highlights:
          $ref: '#/components/schemas/InvestorHighlights'
          nullable: true
          description: Aggregated investor activity. Null when `is_investor` is false.
        filtered_deal_count:
          type: integer
          nullable: true
          description: >-
            Count of deals matching the `investor.deals.*` filters. Populated
            only when any `investor.deals.*` filter is present; otherwise null.
        filtered_lead_count:
          type: integer
          nullable: true
          description: >-
            Of the matching deals, how many the person/firm led. Populated only
            when any `investor.deals.*` filter is present.
        filtered_most_recent_date:
          type: string
          format: date
          nullable: true
          description: >-
            Most recent matching-deal date. Populated only when any
            `investor.deals.*` filter is present.
    EmploymentRecord:
      type: object
      properties:
        title:
          type: string
          nullable: true
        company_name:
          type: string
          nullable: true
        company_id:
          type: string
          nullable: true
        company_url:
          type: string
          nullable: true
          format: uri
        location:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        start_date:
          type: string
          format: date
          nullable: true
        end_date:
          type: string
          format: date
          nullable: true
          description: null if current position
        is_current:
          type: boolean
    EducationRecord:
      type: object
      properties:
        school_name:
          type: string
          nullable: true
        school_id:
          type: string
          nullable: true
        school_url:
          type: string
          nullable: true
          format: uri
        degree:
          type: string
          nullable: true
        field_of_study:
          type: string
          nullable: true
        start_date:
          type: string
          nullable: true
        end_date:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
    PersonCurrentCompany:
      type: object
      nullable: true
      description: Current employer summary. Null when the person has no current employer.
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          nullable: true
        permalink:
          type: string
          nullable: true
          description: Fundable permalink for the company
        domain:
          type: string
          nullable: true
    Firm:
      type: object
      description: Firm (parent investor) the person invests under
      properties:
        id:
          type: string
          nullable: true
          format: uuid
        name:
          type: string
          nullable: true
        permalink:
          type: string
          nullable: true
        domain:
          type: string
          nullable: true
        deal_count:
          type: integer
          description: Number of deals this person has done under this firm
        last_deal_date:
          type: string
          format: date
          nullable: true
    InvestorHighlights:
      type: object
      description: >-
        Aggregated investor activity. Counts dedupe by deal across angel + firm
        contributions.
      properties:
        total_deal_count:
          type: integer
          description: Total tracked deals for this person
          example: 12
        lead_deal_count:
          type: integer
          description: Total deals the person led
        deal_count_last_12_months:
          type: integer
          description: Deals in the last 12 months (any role)
        lead_deal_count_last_12_months:
          type: integer
          description: Lead deals in the last 12 months
        most_recent_deal_date:
          type: string
          format: date
          nullable: true
        top_industries:
          type: array
          description: Top portfolio industries by deal count (max 5)
          items:
            type: object
            properties:
              name:
                type: string
              permalink:
                type: string
              count:
                type: integer
        top_locations:
          type: array
          description: Top portfolio company cities by deal count (max 5)
          items:
            type: object
            properties:
              name:
                type: string
              full_name:
                type: string
              permalink:
                type: string
              type:
                type: string
                example: CITY
              count:
                type: integer
        top_round_types:
          type: array
          description: Top financing round types by deal count (max 5)
          items:
            type: object
            properties:
              type:
                type: string
                example: SERIES_A
              count:
                type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: |
        API key authentication using Bearer token format.
        Format: `Authorization: Bearer vg_your_api_key_here`

````