> ## 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.

# Person Profile API

> Retrieve full person detail including employment and education history by any identifier.



## OpenAPI

````yaml openapi.json GET /person
openapi: 3.0.3
info:
  title: Fundable API
  description: >-
    Canonical OpenAPI specification for the Fundable API. This file bundles the
    Deals, Companies, Investors, People, Alerts, Location, and Industry
    endpoints.
  version: 2.0.0
  contact:
    name: Fundable API Support
    url: mailto: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: deals
    description: Venture capital deals data
  - name: companies
    description: Company data, search, and discovery operations
  - name: investors
    description: Investor data and search operations
  - name: people
    description: People search and detail operations
  - name: alerts
    description: Saved alert configurations and deal data
  - name: locations
    description: Location search and utility operations
  - name: industries
    description: Industry and super category search 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/PeopleAuthError'
        '402':
          description: Insufficient credits to complete request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PeopleInsufficientCreditsError'
        '404':
          description: Person not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PeopleNotFoundError'
        '429':
          description: Rate limit exceeded (per-minute)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PeopleRateLimitError'
          headers:
            Retry-After:
              schema:
                type: integer
                example: 60
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PeopleServerError'
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
    PeopleAuthError:
      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
    PeopleInsufficientCreditsError:
      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
    PeopleNotFoundError:
      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
    PeopleRateLimitError:
      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
    PeopleServerError:
      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 provided as a Bearer token

````