> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.aventure.vc/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.aventure.vc/_mcp/server.

# List a company's investors

GET https://api.aventure.vc/v1/entities/{entityId}/investors

Lists entity investors with per-round investorAttribution rows. Use entityId for the fundraising/portfolio company being invested in, whose investors to list — always a company, never an investor fund or firm. amountInvested appears only inside investorAttribution, is a plain decimal number in the fundraise transaction currency, and is not added to amountRaised. Valid sort syntax is sort=amountInvested,desc or `--sort` amountInvested,desc; do not use investorAttribution.amountInvested, amount_invested, currency signs, currency codes, comma grouping, or abbreviated values.

Reference: https://docs.aventure.vc/api-reference/entity-fundraise/list-entity-investors

## Request

### Path parameters

- `entityId` (string, required) — Entity unique identifier (UUID).

### Query parameters

- `permitMonogram` (boolean, optional) — Permit generated monogram fallback
- `cursor` (string, optional) — Opaque URL-safe cursor token from X-Next-Cursor. Reuse the same filters and sort.
- `includePrivate` (boolean, optional) — Includes private fundraise data when the caller has private-visibility authority. Omit to use the caller's default visibility.
- `page` (integer, optional, default: 0) — Zero-based page index (0..N)
- `size` (integer, optional, default: 40) — The size of the page to be returned
- `sort` (list of string, optional) — Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.

## Response

### 200

OK

- `content` (list of EntityInvestorParticipation, optional)
- `empty` (boolean, optional)
- `first` (boolean, optional)
- `last` (boolean, optional)
- `number` (integer, optional)
- `numberOfElements` (integer, optional)
- `pageable` (PageableObject, optional)
- `size` (integer, optional)
- `sort` (SortObject, optional)
- `totalElements` (long, optional)
- `totalPages` (integer, optional)

## Errors

### 400 Bad Request Error

Bad Request

- `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted.
  - Allowed values: `NEW_COMPANY`, `UPDATE`, `NEW_PERSON`, `UPDATE_PERSON`, `ENTITY_VIEW`, `PERSON_VIEW`
- `circuitBreaker` (string, optional, nullable)
- `code` (enum, optional) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry.
  - Allowed values: `not_authorized`, `rateLimited`, `rate_limited`, `subscription_required`, `subscription_canceled`, `subscription_past_due`, `subscription_paused`, `billing_allowance_exhausted`, `billing_additional_usage_cap_reached`, `origin_detail_capacity`, `origin_detail_shutdown`, `suspectedShellStrip`, `suspected_shell_strip`, `url_surface_misclassification`, `JOBRUNR_DISABLED`, `jobrunr_disabled`, `JOBRUNR_STORAGE_UNAVAILABLE`, `jobrunr_storage_unavailable`, `rbac_lookup_unavailable`, `GEOCODE_PROVIDER_ERROR`, `geocode_provider_error`, `image_blocklist_match`, `image_monochrome`, `image_too_small`, `image_wrong_aspect`, `image_monogram`, `image_unreadable`, `image_processing_error`, `image_brand_mismatch`, `web_crawl_fetch_failed`, `primary_website_missing`, `news_rss_feed_fetch_failed`, `news_rss_article_fetch_failed`, `r2_fetch_failed`, `r2_delete_failed`, `r2_upload_failed`, `source_document_body_unavailable`, `source_document_capture_limit_exceeded`, `news_similarity_embedding_unavailable`, `search_provider_not_configured`, `search_provider_error`, `sec_edgar_fetch_failed`, `github_fetch_failed`, `INFERENCE_PROVIDER_ERROR`, `inference_provider_error`, `INFERENCE_PROVIDER_RESPONSE_EMPTY`, `inference_provider_response_empty`, `INFERENCE_PROVIDER_INVALID_JSON`, `inference_provider_invalid_json`, `INFERENCE_PROFILES_MISSING`, `inference_profiles_missing`, `INFERENCE_PROFILE_API_KEY_MISSING`, `inference_profile_api_key_missing`
- `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner
- `detail` (string, optional)
- `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent.
- `error` (map from string to string, optional, nullable)
- `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path
- `feId` (string, optional, nullable)
- `field` (string, optional, nullable)
- `hammingDistance` (long, optional, nullable)
- `hint` (string, optional, nullable)
- `instance` (string, optional)
- `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period.
- `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count.
  - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER`
- `matchedBlocklistKey` (string, optional, nullable)
- `mediaType` (string, optional, nullable)
- `moderationReason` (string, optional, nullable)
- `parseError` (string, optional, nullable)
- `path` (string, optional, nullable)
- `properties` (map from string to any, optional)
- `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative.
- `requiredRole` (string, optional, nullable)
- `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again.
- `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records.
- `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff.
- `spanId` (string, optional, nullable)
- `status` (integer, optional)
- `suggestion` (string, optional, nullable)
- `suggestions` (map from string to string, optional, nullable)
- `suspectedFragment` (string, optional, nullable)
- `title` (string, optional)
- `traceId` (string, optional, nullable)
- `type` (string, optional)
- `unknownParameters` (list of string, optional, nullable)
- `used` (long, optional, nullable) — Requests already charged against the limitType meter this period.
- `validParameters` (list of string, optional, nullable)
- `value` (string, optional, nullable)
- `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters.

### 404 Not Found Error

Not Found

- `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted.
  - Allowed values: `NEW_COMPANY`, `UPDATE`, `NEW_PERSON`, `UPDATE_PERSON`, `ENTITY_VIEW`, `PERSON_VIEW`
- `circuitBreaker` (string, optional, nullable)
- `code` (enum, optional) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry.
  - Allowed values: `not_authorized`, `rateLimited`, `rate_limited`, `subscription_required`, `subscription_canceled`, `subscription_past_due`, `subscription_paused`, `billing_allowance_exhausted`, `billing_additional_usage_cap_reached`, `origin_detail_capacity`, `origin_detail_shutdown`, `suspectedShellStrip`, `suspected_shell_strip`, `url_surface_misclassification`, `JOBRUNR_DISABLED`, `jobrunr_disabled`, `JOBRUNR_STORAGE_UNAVAILABLE`, `jobrunr_storage_unavailable`, `rbac_lookup_unavailable`, `GEOCODE_PROVIDER_ERROR`, `geocode_provider_error`, `image_blocklist_match`, `image_monochrome`, `image_too_small`, `image_wrong_aspect`, `image_monogram`, `image_unreadable`, `image_processing_error`, `image_brand_mismatch`, `web_crawl_fetch_failed`, `primary_website_missing`, `news_rss_feed_fetch_failed`, `news_rss_article_fetch_failed`, `r2_fetch_failed`, `r2_delete_failed`, `r2_upload_failed`, `source_document_body_unavailable`, `source_document_capture_limit_exceeded`, `news_similarity_embedding_unavailable`, `search_provider_not_configured`, `search_provider_error`, `sec_edgar_fetch_failed`, `github_fetch_failed`, `INFERENCE_PROVIDER_ERROR`, `inference_provider_error`, `INFERENCE_PROVIDER_RESPONSE_EMPTY`, `inference_provider_response_empty`, `INFERENCE_PROVIDER_INVALID_JSON`, `inference_provider_invalid_json`, `INFERENCE_PROFILES_MISSING`, `inference_profiles_missing`, `INFERENCE_PROFILE_API_KEY_MISSING`, `inference_profile_api_key_missing`
- `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner
- `detail` (string, optional)
- `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent.
- `error` (map from string to string, optional, nullable)
- `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path
- `feId` (string, optional, nullable)
- `field` (string, optional, nullable)
- `hammingDistance` (long, optional, nullable)
- `hint` (string, optional, nullable)
- `instance` (string, optional)
- `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period.
- `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count.
  - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER`
- `matchedBlocklistKey` (string, optional, nullable)
- `mediaType` (string, optional, nullable)
- `moderationReason` (string, optional, nullable)
- `parseError` (string, optional, nullable)
- `path` (string, optional, nullable)
- `properties` (map from string to any, optional)
- `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative.
- `requiredRole` (string, optional, nullable)
- `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again.
- `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records.
- `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff.
- `spanId` (string, optional, nullable)
- `status` (integer, optional)
- `suggestion` (string, optional, nullable)
- `suggestions` (map from string to string, optional, nullable)
- `suspectedFragment` (string, optional, nullable)
- `title` (string, optional)
- `traceId` (string, optional, nullable)
- `type` (string, optional)
- `unknownParameters` (list of string, optional, nullable)
- `used` (long, optional, nullable) — Requests already charged against the limitType meter this period.
- `validParameters` (list of string, optional, nullable)
- `value` (string, optional, nullable)
- `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters.

### 406 Not Acceptable Error

Not Acceptable

- `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted.
  - Allowed values: `NEW_COMPANY`, `UPDATE`, `NEW_PERSON`, `UPDATE_PERSON`, `ENTITY_VIEW`, `PERSON_VIEW`
- `circuitBreaker` (string, optional, nullable)
- `code` (enum, optional) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry.
  - Allowed values: `not_authorized`, `rateLimited`, `rate_limited`, `subscription_required`, `subscription_canceled`, `subscription_past_due`, `subscription_paused`, `billing_allowance_exhausted`, `billing_additional_usage_cap_reached`, `origin_detail_capacity`, `origin_detail_shutdown`, `suspectedShellStrip`, `suspected_shell_strip`, `url_surface_misclassification`, `JOBRUNR_DISABLED`, `jobrunr_disabled`, `JOBRUNR_STORAGE_UNAVAILABLE`, `jobrunr_storage_unavailable`, `rbac_lookup_unavailable`, `GEOCODE_PROVIDER_ERROR`, `geocode_provider_error`, `image_blocklist_match`, `image_monochrome`, `image_too_small`, `image_wrong_aspect`, `image_monogram`, `image_unreadable`, `image_processing_error`, `image_brand_mismatch`, `web_crawl_fetch_failed`, `primary_website_missing`, `news_rss_feed_fetch_failed`, `news_rss_article_fetch_failed`, `r2_fetch_failed`, `r2_delete_failed`, `r2_upload_failed`, `source_document_body_unavailable`, `source_document_capture_limit_exceeded`, `news_similarity_embedding_unavailable`, `search_provider_not_configured`, `search_provider_error`, `sec_edgar_fetch_failed`, `github_fetch_failed`, `INFERENCE_PROVIDER_ERROR`, `inference_provider_error`, `INFERENCE_PROVIDER_RESPONSE_EMPTY`, `inference_provider_response_empty`, `INFERENCE_PROVIDER_INVALID_JSON`, `inference_provider_invalid_json`, `INFERENCE_PROFILES_MISSING`, `inference_profiles_missing`, `INFERENCE_PROFILE_API_KEY_MISSING`, `inference_profile_api_key_missing`
- `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner
- `detail` (string, optional)
- `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent.
- `error` (map from string to string, optional, nullable)
- `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path
- `feId` (string, optional, nullable)
- `field` (string, optional, nullable)
- `hammingDistance` (long, optional, nullable)
- `hint` (string, optional, nullable)
- `instance` (string, optional)
- `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period.
- `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count.
  - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER`
- `matchedBlocklistKey` (string, optional, nullable)
- `mediaType` (string, optional, nullable)
- `moderationReason` (string, optional, nullable)
- `parseError` (string, optional, nullable)
- `path` (string, optional, nullable)
- `properties` (map from string to any, optional)
- `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative.
- `requiredRole` (string, optional, nullable)
- `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again.
- `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records.
- `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff.
- `spanId` (string, optional, nullable)
- `status` (integer, optional)
- `suggestion` (string, optional, nullable)
- `suggestions` (map from string to string, optional, nullable)
- `suspectedFragment` (string, optional, nullable)
- `title` (string, optional)
- `traceId` (string, optional, nullable)
- `type` (string, optional)
- `unknownParameters` (list of string, optional, nullable)
- `used` (long, optional, nullable) — Requests already charged against the limitType meter this period.
- `validParameters` (list of string, optional, nullable)
- `value` (string, optional, nullable)
- `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters.

### 422 Unprocessable Entity Error

Unprocessable Content

- `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted.
  - Allowed values: `NEW_COMPANY`, `UPDATE`, `NEW_PERSON`, `UPDATE_PERSON`, `ENTITY_VIEW`, `PERSON_VIEW`
- `circuitBreaker` (string, optional, nullable)
- `code` (enum, optional) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry.
  - Allowed values: `not_authorized`, `rateLimited`, `rate_limited`, `subscription_required`, `subscription_canceled`, `subscription_past_due`, `subscription_paused`, `billing_allowance_exhausted`, `billing_additional_usage_cap_reached`, `origin_detail_capacity`, `origin_detail_shutdown`, `suspectedShellStrip`, `suspected_shell_strip`, `url_surface_misclassification`, `JOBRUNR_DISABLED`, `jobrunr_disabled`, `JOBRUNR_STORAGE_UNAVAILABLE`, `jobrunr_storage_unavailable`, `rbac_lookup_unavailable`, `GEOCODE_PROVIDER_ERROR`, `geocode_provider_error`, `image_blocklist_match`, `image_monochrome`, `image_too_small`, `image_wrong_aspect`, `image_monogram`, `image_unreadable`, `image_processing_error`, `image_brand_mismatch`, `web_crawl_fetch_failed`, `primary_website_missing`, `news_rss_feed_fetch_failed`, `news_rss_article_fetch_failed`, `r2_fetch_failed`, `r2_delete_failed`, `r2_upload_failed`, `source_document_body_unavailable`, `source_document_capture_limit_exceeded`, `news_similarity_embedding_unavailable`, `search_provider_not_configured`, `search_provider_error`, `sec_edgar_fetch_failed`, `github_fetch_failed`, `INFERENCE_PROVIDER_ERROR`, `inference_provider_error`, `INFERENCE_PROVIDER_RESPONSE_EMPTY`, `inference_provider_response_empty`, `INFERENCE_PROVIDER_INVALID_JSON`, `inference_provider_invalid_json`, `INFERENCE_PROFILES_MISSING`, `inference_profiles_missing`, `INFERENCE_PROFILE_API_KEY_MISSING`, `inference_profile_api_key_missing`
- `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner
- `detail` (string, optional)
- `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent.
- `error` (map from string to string, optional, nullable)
- `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path
- `feId` (string, optional, nullable)
- `field` (string, optional, nullable)
- `hammingDistance` (long, optional, nullable)
- `hint` (string, optional, nullable)
- `instance` (string, optional)
- `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period.
- `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count.
  - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER`
- `matchedBlocklistKey` (string, optional, nullable)
- `mediaType` (string, optional, nullable)
- `moderationReason` (string, optional, nullable)
- `parseError` (string, optional, nullable)
- `path` (string, optional, nullable)
- `properties` (map from string to any, optional)
- `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative.
- `requiredRole` (string, optional, nullable)
- `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again.
- `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records.
- `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff.
- `spanId` (string, optional, nullable)
- `status` (integer, optional)
- `suggestion` (string, optional, nullable)
- `suggestions` (map from string to string, optional, nullable)
- `suspectedFragment` (string, optional, nullable)
- `title` (string, optional)
- `traceId` (string, optional, nullable)
- `type` (string, optional)
- `unknownParameters` (list of string, optional, nullable)
- `used` (long, optional, nullable) — Requests already charged against the limitType meter this period.
- `validParameters` (list of string, optional, nullable)
- `value` (string, optional, nullable)
- `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters.

### 429 Too Many Requests Error

Too Many Requests

- `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted.
  - Allowed values: `NEW_COMPANY`, `UPDATE`, `NEW_PERSON`, `UPDATE_PERSON`, `ENTITY_VIEW`, `PERSON_VIEW`
- `circuitBreaker` (string, optional, nullable)
- `code` (enum, optional) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry.
  - Allowed values: `not_authorized`, `rateLimited`, `rate_limited`, `subscription_required`, `subscription_canceled`, `subscription_past_due`, `subscription_paused`, `billing_allowance_exhausted`, `billing_additional_usage_cap_reached`, `origin_detail_capacity`, `origin_detail_shutdown`, `suspectedShellStrip`, `suspected_shell_strip`, `url_surface_misclassification`, `JOBRUNR_DISABLED`, `jobrunr_disabled`, `JOBRUNR_STORAGE_UNAVAILABLE`, `jobrunr_storage_unavailable`, `rbac_lookup_unavailable`, `GEOCODE_PROVIDER_ERROR`, `geocode_provider_error`, `image_blocklist_match`, `image_monochrome`, `image_too_small`, `image_wrong_aspect`, `image_monogram`, `image_unreadable`, `image_processing_error`, `image_brand_mismatch`, `web_crawl_fetch_failed`, `primary_website_missing`, `news_rss_feed_fetch_failed`, `news_rss_article_fetch_failed`, `r2_fetch_failed`, `r2_delete_failed`, `r2_upload_failed`, `source_document_body_unavailable`, `source_document_capture_limit_exceeded`, `news_similarity_embedding_unavailable`, `search_provider_not_configured`, `search_provider_error`, `sec_edgar_fetch_failed`, `github_fetch_failed`, `INFERENCE_PROVIDER_ERROR`, `inference_provider_error`, `INFERENCE_PROVIDER_RESPONSE_EMPTY`, `inference_provider_response_empty`, `INFERENCE_PROVIDER_INVALID_JSON`, `inference_provider_invalid_json`, `INFERENCE_PROFILES_MISSING`, `inference_profiles_missing`, `INFERENCE_PROFILE_API_KEY_MISSING`, `inference_profile_api_key_missing`
- `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner
- `detail` (string, optional)
- `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent.
- `error` (map from string to string, optional, nullable)
- `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path
- `feId` (string, optional, nullable)
- `field` (string, optional, nullable)
- `hammingDistance` (long, optional, nullable)
- `hint` (string, optional, nullable)
- `instance` (string, optional)
- `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period.
- `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count.
  - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER`
- `matchedBlocklistKey` (string, optional, nullable)
- `mediaType` (string, optional, nullable)
- `moderationReason` (string, optional, nullable)
- `parseError` (string, optional, nullable)
- `path` (string, optional, nullable)
- `properties` (map from string to any, optional)
- `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative.
- `requiredRole` (string, optional, nullable)
- `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again.
- `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records.
- `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff.
- `spanId` (string, optional, nullable)
- `status` (integer, optional)
- `suggestion` (string, optional, nullable)
- `suggestions` (map from string to string, optional, nullable)
- `suspectedFragment` (string, optional, nullable)
- `title` (string, optional)
- `traceId` (string, optional, nullable)
- `type` (string, optional)
- `unknownParameters` (list of string, optional, nullable)
- `used` (long, optional, nullable) — Requests already charged against the limitType meter this period.
- `validParameters` (list of string, optional, nullable)
- `value` (string, optional, nullable)
- `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters.

### 500 Internal Server Error

Internal Server Error

- `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted.
  - Allowed values: `NEW_COMPANY`, `UPDATE`, `NEW_PERSON`, `UPDATE_PERSON`, `ENTITY_VIEW`, `PERSON_VIEW`
- `circuitBreaker` (string, optional, nullable)
- `code` (enum, optional) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry.
  - Allowed values: `not_authorized`, `rateLimited`, `rate_limited`, `subscription_required`, `subscription_canceled`, `subscription_past_due`, `subscription_paused`, `billing_allowance_exhausted`, `billing_additional_usage_cap_reached`, `origin_detail_capacity`, `origin_detail_shutdown`, `suspectedShellStrip`, `suspected_shell_strip`, `url_surface_misclassification`, `JOBRUNR_DISABLED`, `jobrunr_disabled`, `JOBRUNR_STORAGE_UNAVAILABLE`, `jobrunr_storage_unavailable`, `rbac_lookup_unavailable`, `GEOCODE_PROVIDER_ERROR`, `geocode_provider_error`, `image_blocklist_match`, `image_monochrome`, `image_too_small`, `image_wrong_aspect`, `image_monogram`, `image_unreadable`, `image_processing_error`, `image_brand_mismatch`, `web_crawl_fetch_failed`, `primary_website_missing`, `news_rss_feed_fetch_failed`, `news_rss_article_fetch_failed`, `r2_fetch_failed`, `r2_delete_failed`, `r2_upload_failed`, `source_document_body_unavailable`, `source_document_capture_limit_exceeded`, `news_similarity_embedding_unavailable`, `search_provider_not_configured`, `search_provider_error`, `sec_edgar_fetch_failed`, `github_fetch_failed`, `INFERENCE_PROVIDER_ERROR`, `inference_provider_error`, `INFERENCE_PROVIDER_RESPONSE_EMPTY`, `inference_provider_response_empty`, `INFERENCE_PROVIDER_INVALID_JSON`, `inference_provider_invalid_json`, `INFERENCE_PROFILES_MISSING`, `inference_profiles_missing`, `INFERENCE_PROFILE_API_KEY_MISSING`, `inference_profile_api_key_missing`
- `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner
- `detail` (string, optional)
- `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent.
- `error` (map from string to string, optional, nullable)
- `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path
- `feId` (string, optional, nullable)
- `field` (string, optional, nullable)
- `hammingDistance` (long, optional, nullable)
- `hint` (string, optional, nullable)
- `instance` (string, optional)
- `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period.
- `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count.
  - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER`
- `matchedBlocklistKey` (string, optional, nullable)
- `mediaType` (string, optional, nullable)
- `moderationReason` (string, optional, nullable)
- `parseError` (string, optional, nullable)
- `path` (string, optional, nullable)
- `properties` (map from string to any, optional)
- `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative.
- `requiredRole` (string, optional, nullable)
- `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again.
- `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records.
- `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff.
- `spanId` (string, optional, nullable)
- `status` (integer, optional)
- `suggestion` (string, optional, nullable)
- `suggestions` (map from string to string, optional, nullable)
- `suspectedFragment` (string, optional, nullable)
- `title` (string, optional)
- `traceId` (string, optional, nullable)
- `type` (string, optional)
- `unknownParameters` (list of string, optional, nullable)
- `used` (long, optional, nullable) — Requests already charged against the limitType meter this period.
- `validParameters` (list of string, optional, nullable)
- `value` (string, optional, nullable)
- `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters.

### 503 Service Unavailable Error

Service Unavailable

- `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted.
  - Allowed values: `NEW_COMPANY`, `UPDATE`, `NEW_PERSON`, `UPDATE_PERSON`, `ENTITY_VIEW`, `PERSON_VIEW`
- `circuitBreaker` (string, optional, nullable)
- `code` (enum, optional) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry.
  - Allowed values: `not_authorized`, `rateLimited`, `rate_limited`, `subscription_required`, `subscription_canceled`, `subscription_past_due`, `subscription_paused`, `billing_allowance_exhausted`, `billing_additional_usage_cap_reached`, `origin_detail_capacity`, `origin_detail_shutdown`, `suspectedShellStrip`, `suspected_shell_strip`, `url_surface_misclassification`, `JOBRUNR_DISABLED`, `jobrunr_disabled`, `JOBRUNR_STORAGE_UNAVAILABLE`, `jobrunr_storage_unavailable`, `rbac_lookup_unavailable`, `GEOCODE_PROVIDER_ERROR`, `geocode_provider_error`, `image_blocklist_match`, `image_monochrome`, `image_too_small`, `image_wrong_aspect`, `image_monogram`, `image_unreadable`, `image_processing_error`, `image_brand_mismatch`, `web_crawl_fetch_failed`, `primary_website_missing`, `news_rss_feed_fetch_failed`, `news_rss_article_fetch_failed`, `r2_fetch_failed`, `r2_delete_failed`, `r2_upload_failed`, `source_document_body_unavailable`, `source_document_capture_limit_exceeded`, `news_similarity_embedding_unavailable`, `search_provider_not_configured`, `search_provider_error`, `sec_edgar_fetch_failed`, `github_fetch_failed`, `INFERENCE_PROVIDER_ERROR`, `inference_provider_error`, `INFERENCE_PROVIDER_RESPONSE_EMPTY`, `inference_provider_response_empty`, `INFERENCE_PROVIDER_INVALID_JSON`, `inference_provider_invalid_json`, `INFERENCE_PROFILES_MISSING`, `inference_profiles_missing`, `INFERENCE_PROFILE_API_KEY_MISSING`, `inference_profile_api_key_missing`
- `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner
- `detail` (string, optional)
- `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent.
- `error` (map from string to string, optional, nullable)
- `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path
- `feId` (string, optional, nullable)
- `field` (string, optional, nullable)
- `hammingDistance` (long, optional, nullable)
- `hint` (string, optional, nullable)
- `instance` (string, optional)
- `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period.
- `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count.
  - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER`
- `matchedBlocklistKey` (string, optional, nullable)
- `mediaType` (string, optional, nullable)
- `moderationReason` (string, optional, nullable)
- `parseError` (string, optional, nullable)
- `path` (string, optional, nullable)
- `properties` (map from string to any, optional)
- `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative.
- `requiredRole` (string, optional, nullable)
- `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again.
- `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records.
- `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff.
- `spanId` (string, optional, nullable)
- `status` (integer, optional)
- `suggestion` (string, optional, nullable)
- `suggestions` (map from string to string, optional, nullable)
- `suspectedFragment` (string, optional, nullable)
- `title` (string, optional)
- `traceId` (string, optional, nullable)
- `type` (string, optional)
- `unknownParameters` (list of string, optional, nullable)
- `used` (long, optional, nullable) — Requests already charged against the limitType meter this period.
- `validParameters` (list of string, optional, nullable)
- `value` (string, optional, nullable)
- `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters.

## Types

### EntityInvestorParticipation

Entity investor with round participation and enrichment data (addresses, URLs)

- `entity` (EntityDetail, required) — Full entity detail response: core entity, enrichment, governed research, relationships, external identifiers, fundraising, news, people, and sitemap eligibility. Core identity and naming fields live under core.
- `investorAttribution` (list of FundraiseInvestmentAttribution, required)
- `round` (list of RoundLabel, required)
- `roundCount` (integer, required)

### PageableObject

- `offset` (long, optional)
- `pageNumber` (integer, optional)
- `pageSize` (integer, optional)
- `paged` (boolean, optional)
- `sort` (SortObject, optional)
- `unpaged` (boolean, optional)

### SortObject

- `empty` (boolean, optional)
- `sorted` (boolean, optional)
- `unsorted` (boolean, optional)

### CurrentSlugOwner

Current slug owner

- `id` (string, required)
- `isHidden` (boolean, required)
- `resourceType` (enum, required) — Resource type whose slug is being changed
  - Allowed values: `entity`, `person`, `news`, `blog`, `content`
- `showOnSitemap` (boolean, required)
- `slug` (string, required)
- `deletedAt` (datetime, optional, nullable)
- `nameBrand` (string, optional, nullable)

### DomainConflictDetails

Polymorphic envelope for RFC 9457 ProblemDetail.details on HTTP 409 responses. The concrete variant depends on the conflict kind: URL ownership collisions return UrlDuplicateConflict; ambiguous strict URL lookups return StrictUrlLookupConflict; create-time duplicate review gates return DuplicateCreateReview; classification writes that touch an inactive tag bucket return ClassificationInactiveTagDetails; news publication+URL uniqueness violations return NewsSourceUrlConflict. Inspect ProblemDetail.code/type and the field set present on details to identify the variant.

### RedirectSlugPath

Redirect slug path

- `oldUrl` (string, required)
- `newUrl` (string, optional, nullable)
- `targetCurrentSlug` (string, optional, nullable)
- `targetId` (string, optional, nullable)
- `targetResourceType` (enum, optional, nullable) — Resource type whose slug is being changed
  - Allowed values: `entity`, `person`, `news`, `blog`, `content`

### ProblemResolution

Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records.

- `action` (enum, required) — Next action category for the client or agent.
  - Allowed values: `setField`, `setParameter`, `removeParameter`, `useEndpoint`, `reviewCandidates`, `authenticate`
- `acceptedValue` (list of string, optional, nullable) — Accepted values for the field or parameter, when enumerable.
- `endpoint` (string, optional, nullable) — Endpoint to call for the next action, when applicable.
- `fieldPath` (string, optional, nullable) — Request-body field path that needs attention, when applicable.
- `parameter` (string, optional, nullable) — Query parameter that needs attention, when applicable.
- `retryable` (boolean, optional, nullable) — Whether the same logical request can be retried after the next action.

### EntityDetail

Full entity detail response: core entity, enrichment, governed research, relationships, external identifiers, fundraising, news, people, and sitemap eligibility. Core identity and naming fields live under core.

- `core` (Entity, required) — Core entity identity, naming, status, image, and source metadata.
- `enrichment` (EntityEnrichment, required) — Entity enrichment: addresses, classification, funding summary, text, and URL links.
- `fundraiseRound` (list of EntityFundraiseTransaction, required) — Fundraise rounds associated with this entity.
- `newsArticle` (list of News, required) — News articles associated with this entity.
- `person` (list of PersonDetail, required) — People associated with this entity.
- `relationship` (list of EntityRelationship, required) — Entity relationships.
- `research` (EntityResearch, required) — Combined research disclosure: governed detail rows, snippets, and accelerator participation.
- `sitemap` (EntitySitemap, required) — Sub-route eligibility computed once at the persistence boundary.
- `uniqueId` (list of UniqueId, required) — External registry identifiers associated with this entity.
- `publicUrl` (string, optional, nullable) — Absolute canonical public URL when this detail has a renderable public route.

### FundraiseInvestmentAttribution

Investor-specific attribution for one fundraise participation row

- `attributionType` (enum, required) — How this attribution row participates in the investor view.
  - Allowed values: `direct`, `managedFund`
- `joinId` (string, required) — Fundraise investor join identifier
- `leadInvestor` (boolean, required) — Whether this investor is the lead investor for the round — the lead/anchor investor that set the round terms or made the primary commitment.
- `transactionId` (string, required) — Fundraise transaction identifier
- `amountInvested` (double, optional, nullable) — Investor-level attributed amount invested in the fundraise transaction currency. Serialized as a plain JSON number such as 220000 or 123456.78; no currency sign, currency code, comma grouping, or abbreviated amount text is valid.
- `beneficialEntityId` (string, optional, nullable) — Investment firm entity receiving the rollup attribution.
- `fundManagerRelationshipId` (integer, optional, nullable) — Fund-manager relationship id when the attribution rolls up through a managed fund.
- `recordedEntityId` (string, optional, nullable) — Entity recorded directly on the fundraise investor join.
- `round` (RoundLabel, optional, nullable) — Round label for the attributed participation

### RoundLabel

Round participation label - shared by entity and person investor participation

- `round` (string, required)

### UrlDuplicateConflict

Typed extension on ProblemDetail.details for HTTP 409 when a create/update attempts to set a URL with urlType=website (or another exclusive urlType) that is already a current URL on a different entity or person. The existingJoin list names every current owner of the normalized URL; resolve by demoting the existing owner (isCurrent=false, isPrimary=false) before promoting the new owner.

- `existingJoin` (list of UrlDuplicateJoin, required) — Every current owner that already holds the normalized URL with this urlType. Non-empty when this conflict is emitted.
- `fragmentIgnored` (boolean, required) — True when URL fragment differences were ignored during duplicate matching (i.e., the conflict ignores everything after '#').
- `guidance` (string, required) — Human-readable guidance on how to resolve the conflict. Defaults to the standard inspect-then-demote/promote sequence.
- `requestedOwner` (EntityPersonOwner, required) — Owner the caller attempted to attach the URL to.
- `url` (string, required) — Raw URL as submitted by the caller (pre-normalization).
- `urlType` (string, required) — URL type submitted by the caller (e.g., 'website', 'twitter'). The conflict applies only within this urlType.
- `normalizedUrl` (string, optional, nullable) — Normalized URL match key used for duplicate detection. Null when normalization could not produce a stable key (e.g., malformed input).

### StrictUrlLookupConflict

Typed extension on ProblemDetail.details for HTTP 409 when a strict URL lookup (GET /v1/entities/lookup?url=...) resolves to more than one current owner. The candidate lists return every current owner that matches the normalized URL key; the caller must add disambiguating signals (urlType, typeRecord, slug) to resolve to a single owner.

- `candidateEntityId` (list of string, required) — Every entity id that currently owns the normalized URL. May be empty when the conflict is between persons; combined with candidatePersonId always > 1.
- `candidatePersonId` (list of string, required) — Every person id that currently owns the normalized URL. May be empty when the conflict is between entities; combined with candidateEntityId always > 1.
- `hint` (string, required) — Human-readable hint describing which disambiguating query parameters to add.
- `url` (string, required) — Raw URL the caller queried.
- `normalizedUrl` (string, optional, nullable) — Normalized URL match key the lookup resolved against. Null when normalization could not produce a stable key.
- `urlType` (string, optional, nullable) — URL type the caller specified, or null if the lookup did not constrain by urlType.

### DuplicateCreateReview

Candidate-review conflict details returned in ProblemDetail.details for create gates and deterministic lookup ambiguity. The returned candidates are the decision surface: update the matching candidate, create with duplicate override only when every candidate is distinct from the source-backed target, or block when identity is unresolved. score and threshold rank review priority; they are not proof that the requested record is absent.

- `threshold` (integer, required) — Review threshold used by duplicate scoring. Scores below this value can still be useful candidate context; this value does not prove absence or authorize create.
- `candidate` (list of SearchDuplicateCandidateScore, optional, nullable) — Entity/person candidates returned by lookup or create duplicate review. If a candidate is the requested record, read/update that candidate by id. Create with duplicate override only after every candidate is reviewed as distinct.
- `newsCandidate` (list of NewsCandidateScore, optional, nullable) — News candidates returned by lookup or create duplicate review. If a candidate is the requested article, read/update that article by id. Otherwise block until source evidence proves a distinct article.
- `overridePath` (string, optional, nullable) — Create endpoint to retry only after reviewing the returned candidates and supplying overrideGate=duplicate and overrideReason as query parameters. Null for detail lookup ambiguity, where the next action is review/update/block.

### ClassificationInactiveTagDetails

ProblemDetail.details for HTTP 409 when a classification value exists but is inactive.

- `availableOverrides` (list of enum, required) — Allowed inactiveTagOverride values for this conflict
  - Allowed values: `REACTIVATE`, `ATTACH_INACTIVE`
- `slug` (string, required) — Existing dormant value slug or lookup key
- `tagId` (integer, required) — Existing tag id in res_type_ref

### NewsSourceUrlConflict

Typed extension on ProblemDetail.details for HTTP 409 when a news mutation's publication + newsUrlOriginal pair already belongs to another article. The returned fields identify the existing article so the caller can read/update it instead of creating a duplicate.

- `conflictingArticleId` (integer, required) — Existing article id (NewsId.value) that already owns this publication + URL pair.
- `conflictingArticleSlug` (string, required) — Existing article slug, or empty string when the existing article has no slug. Use with GET /v1/news/lookup?slug= to fetch the conflicting article.
- `conflictingArticleTitle` (string, required) — Existing article title for human-readable diagnostics.

### Entity

Flat entity core record — identity, naming, status, image, and source metadata. An entity is our umbrella record for organizations such as companies, funds, investment firms and investors, accelerators, nonprofits, and government agencies, plus products and services connected to those organizations. Returned directly by GET /v1/sitemap/entities and the alphabetical (?letter=X) list. Nested as .core inside EntityList for default list reads and EntityDetail for detail reads.

- `id` (string, required) — Unique entity identifier
- `image` (EntityImage, required) — Logo and monogram image metadata
- `nameAlias` (list of EntityNameAliasEntityAliasType, required) — All names this entity has been known by — current alternates, DBAs, former names, and rebrand-source identities. Naming history (e.g. `Metaphor Systems` for the current `Exa` entity) lives here; never as a separate relationship type or `formerName` field.
- `nameBrand` (string, required) — Resolved display brand name
- `slug` (string, required) — URL-safe identifier
- `defaultCurrency` (string, optional, nullable) — Default currency code (ISO 4217)
- `foundedYear` (integer, optional, nullable) — Year the entity was founded
- `lastModifiedAt` (datetime, optional, nullable) — Provenance-grounded last-modified watermark (schema.org dateModified). Advances only when a real, consumer-meaningful data point changes via a recorded provenance event — never on timestamp-only writes, migrations, or index refreshes. Pairs with createdAt (dateCreated) and grounds the sitemap lastmod.
- `nameLegal` (string, optional, nullable) — Registered legal name
- `operatingStatus` (string, optional, nullable) — Current operating status. Use Acquired Subsidiary when the entity was acquired and still operates; use Closed (Acquihire) when the entity was acquired for its team and shut down, rendering like Closed everywhere; use Acquired only when it is terminal, folded, or closed.
- `publicId` (string, optional, nullable) — Stable, immutable public handle (e.g. `eV1StGXR8Z5a`). Never changes once assigned, unlike the slug. Null on projections that do not select it and on rows still awaiting handle backfill.
- `publicUrl` (string, optional, nullable) — Absolute public profile URL on the aVenture front-end, e.g. `https://aventure.vc/non-profits/{slug}`, derived from the typeRecord's canonical route family. Null when the route needs relationship context or the record has no direct public SSR route (Business Line, Organization, Product, Service, or a non-public slug). EntityDetail.publicUrl resolves Business Line parent context. Product/Service pages are provider-nested: compose the provider entity's publicUrl + `/products-services/` + this record's slug, or consume the sitemap-urls slot paths, which already emit the composed child routes.
- `sitemap` (EntitySitemap, optional, nullable) — Sub-route eligibility, populated by the sitemap projection. Null on non-sitemap reads to keep thin payloads compact.
- `typeRecord` (enum, optional, nullable) — Entity type classification
  - Allowed values: `Company`, `Investment Firm`, `Fund`, `Nonprofit`, `Government`, `Organization`, `Business Line`, `Product`, `Service`
- `updatedAt` (datetime, optional, nullable) — Last modification timestamp

### EntityEnrichment

Supplemental entity data — addresses, classification tags, funding, text content, and URL links

- `address` (list of Address, required)
- `classification` (EntityClassification, required) — Entity classification join projection for this read surface. Single-detail and full-detail batch reads include full history; list, default batch, and similar-entity reads may filter to current joins. Use GET /v1/entities/\{entityId}/classifications?includeInactive=true for authoritative join history.
- `text` (EntityTextBundle, required) — Grouped entity/person text content
- `urlLink` (list of EntityUrlLink, required) — URL link filter values
- `fundingDetail` (EntityFundingDetail, optional, nullable) — Aggregate view of an entity's fundraising activity

### EntityFundraiseTransaction

Canonical fundraise transaction view. ONE row per discrete round. An entity that raised pre-seed, seed, and Series A is THREE rows. Combined or rolled-up totals are never modeled here — total raised is a sum across rows.

- `id` (string, required) — Canonical fundraise transaction UUID
- `sourceAttribution` (list of FundraiseInvestmentAttribution, required)
- `amountRaised` (long, optional, nullable)
- `createdAt` (datetime, optional, nullable)
- `currency` (string, optional, nullable)
- `dataConfidence` (enum, optional, nullable) — Data confidence level
  - Allowed values: `High`, `Medium`, `Low`, `Verified`
- `dateAnnounced` (datetime, optional, nullable)
- `dateFundingComplete` (datetime, optional, nullable)
- `dateInvestorExit` (datetime, optional, nullable)
- `entity` (EntityFundraiseTransactionEntity, optional, nullable) — Entity projection used inside FundraiseTransaction responses
- `investorAttribution` (FundraiseInvestmentAttribution, optional, nullable) — Investor-specific attribution when returned from investor-perspective investment views. amountInvested is not added to amountRaised; it is the selected investor's attributed participation amount for this round.
- `investorCount` (integer, optional, nullable) — Source-reported number of investors in the round. This can exceed the identified investor joins when a source reports a total without naming every investor.
- `round` (string, optional, nullable)
- `updatedAt` (datetime, optional, nullable)
- `valuationPostMoney` (long, optional, nullable)
- `valuationPreMoney` (long, optional, nullable)

### News

Canonical news owner for list and core semantics

- `id` (integer, required) — Type-safe identifier for news articles
- `title` (string, required) — Article headline; the headline field is title
- `author` (string, optional, nullable)
- `category` (string, optional, nullable)
- `createdAt` (datetime, optional, nullable)
- `excerpt` (string, optional, nullable) — Article summary from the source publication feed; null means the feed supplied no description (expected absence, not an error) — full text is NewsDetail.content
- `externalNewsArticle` (boolean, optional, nullable)
- `newsImageThumbnail` (string, optional, nullable)
- `newsUrlOriginal` (string, optional, nullable)
- `publication` (string, optional, nullable)
- `publishedAt` (datetime, optional, nullable)
- `slug` (string, optional, nullable) — Canonical lowercase URL slug for the resource
- `updatedAt` (datetime, optional, nullable)

### PersonDetail

Composed person wrapper: core identity + enrichment + associations + investments. Access core fields via .core (for example .core.slug or .core.nameFull).

- `association` (list of EntityPersonAssociation, required) — Entity associations for this person
- `core` (Person, required) — Canonical person core record
- `enrichment` (PersonEnrichment, required) — Supplemental person data — addresses and URL links
- `investment` (list of PersonInvestment, required) — Investments associated with this person
- `nameAlias` (list of EntityNameAliasPersonAliasType, required) — Display and search aliases for this person
- `articleCount` (integer, optional, nullable)

### EntityRelationship

Domain record for entity relationships - oriented from the requested entity to the joined entity

- `entity` (Entity, required) — Joined entity on the other side of this relationship — read-only display projection. Writes identify both sides only via the flat sourceEntityId and targetEntityId UUIDs, never a nested entity object.
- `relationship` (list of EntityRelationship, required) — Nested relationships for the joined entity
- `relationshipType` (string, required) — Canonical relationship type, one of: acceleratorParticipant, acquirer, affinity, calculated, competingProductService, competitor, customer, fundManagerFirm, parent, productService, serviceProvider, similarCompany, spinOffFrom, successor. Similarity endpoint rows use stored relationship types when a curation row exists and calculated when the row comes from semantic/vector similarity.
- `asOf` (date, optional, nullable) — Effective date for this relationship when known
- `comparisonSignals` (EntityComparisonSignals, optional, nullable) — Competitive comparison signals for the joined entity when it is a product/service provider — sells-to, pricing model, ownership, funding, and website. Null for every other joined entity. Lets comparison surfaces render provider columns without a second per-provider fetch.
- `createdAt` (datetime, optional, nullable)
- `detail` (string, optional, nullable) — Relationship-specific detail. acceleratorParticipant rows use `batch=<label>`, or `program=<name>; batch=<label>` only for a distinct sub-program. program= never repeats the accelerator name or the batch, and batch= never contains the accelerator name — the row already points to the accelerator entity.
- `id` (integer, optional, nullable) — Integer entity_relationship.id row id, not an entity UUID
- `isCurrent` (boolean, optional, nullable) — Current-state curation flag for this relationship row. Default relationship reads return only rows where isCurrent=true and isPrimary=true.
- `isPrimary` (boolean, optional, nullable) — Primary/renderable curation flag for this relationship row. isCurrent=false or isPrimary=false hides the row from default relationship reads.
- `source` (string, optional, nullable) — Source URL or compact source label copied to the relationship row
- `sourceEntityId` (string, optional, nullable) — Canonical source entity UUID stored on the relationship row. Compare with the requested entity id and `/v1/entities/relationships/types` sourceRole/targetRole to orient directional relationships such as parent.
- `targetEntityId` (string, optional, nullable) — Canonical target entity UUID stored on the relationship row. Compare with the requested entity id and `/v1/entities/relationships/types` sourceRole/targetRole to orient directional relationships such as parent.
- `updatedAt` (datetime, optional, nullable)

### EntityResearch

Combined entity research disclosure: governed detail rows, research text snippets, and joined accelerator participation.

- `acceleratorParticipation` (list of EntityAcceleratorParticipation, required) — Joined accelerator participation derived from governed accelerator research rows
- `detail` (list of EntityResearchDetail, required) — Flat governed research detail rows filtered by visibility
- `snippet` (list of EntityResearchSnippet, required) — Research text snippets for this entity

### EntitySitemap

Sub-route eligibility GATE for sitemap.xml emission, not a write receipt. Each boolean is true only when the underlying rows EXIST AND every entity that sub-route renders (this entity and any counterpart, e.g. the acquired/acquirer company behind `hasAcquisitions`) currently passes publication visibility (not hidden, on sitemap). A `false` flag when you know the data exists means an unmet visibility prerequisite -- publish the hidden entity -- confirmed against the owning command-side read; it is an active gate result, not refresh lag, and a flag being `false` says nothing succeeded-and-is-fine. Served from a materialized projection (`mv_entity_sitemap_url_slots`) refreshed asynchronously, so a `true` flag can trail a gate that was just satisfied, but a successful write alone does not flip any flag.

- `hasAnalysis` (boolean, required) — Whether the profile Analysis sub-route should be emitted.
- `hasEmployees` (boolean, required) — Whether the profile Employees sub-route should be emitted.
- `hasFundraising` (boolean, required) — Whether the profile Fundraising sub-route should be emitted.
- `hasNews` (boolean, required) — Whether the profile News sub-route should be emitted.
- `productServiceSlug` (list of string, required) — Slugs of related Product/Service entities that should each get their own `/companies/<slug>/products-services/<productSlug>` URL, capped at `MAX_PRODUCT_SERVICE_SLUGS` server-side. Derived from current `productService` relationships in either stored direction; the entity relationships resource is the authoritative, read-your-writes view of those joins.
- `hasAcquisitions` (boolean, optional, default: false) — Whether `/companies/<slug>/acquisitions` should be emitted. True only when an acquisition relationship exists AND both the acquired and acquirer entities are publicly visible. A confirmed acquisition relationship row with this flag `false` (or with `entities acquisitions list` returning zero rows) means a counterpart entity is still hidden -- publish it -- it is a visibility gate, not list lag.

### UniqueId

External identifier mapped to one owner (entity or person): for example a company's EIN, SEC CIK, or ticker symbol. Owner carries exactly one entityId or personId.

- `createdAt` (datetime, required) — Row creation timestamp.
- `id` (integer, required) — Unique-id row id.
- `idType` (enum, required) — Identifier type.
  - Allowed values: `ein`, `secCik`, `ticker`, `lei`, `duns`, `isin`, `cusip`, `crd`, `orcid`
- `identifier` (string, required) — Identifier value as issued by the registry (normalized per type).
- `owner` (EntityPersonOwner, required) — Owning entity or person id; exactly one nested id is present.
- `updatedAt` (datetime, required) — Row update timestamp.
- `source` (string, optional, nullable) — Attribution source label for the mapping, when recorded.

### UrlDuplicateJoin

URL ownership join row identifying which entity or person currently owns a normalized URL.

- `owner` (EntityPersonOwner, required) — Owner of the URL: either entityId or personId is populated depending on the owner kind. Use the populated id to read or update the owner's URL.
- `urlId` (integer, required) — Internal URL row id (res_weburl.id) — opaque to API clients.

### EntityPersonOwner

Exactly one of entityId or personId is set; ids only, no name fields. Resolve display names with GET /v1/entities/detail or GET /v1/people/\{personId}.

- `entityId` (string, optional, nullable) — Canonical entity UUID
- `personId` (string, optional, nullable) — Canonical person UUID

### SearchDuplicateCandidateScore

Duplicate candidate scoring result. Use id/name/slug/typeRecord/reason to decide whether the candidate is the requested record. score ranks review priority; it does not prove absence.

- `id` (string, required) — Candidate id to read or update when this candidate is the requested record.
- `reason` (list of string, required) — Match reasons such as name-exact, slug-exact, url-match, url-current, url-type, or precomputed-similarity. url-match proves the supplied URL/domain matched; url-current additionally proves the candidate still holds that address today, so a candidate with url-match but no url-current matched only through a URL it no longer uses, such as an acquisition redirect. url-type only means the candidate has the same URL category and is review context, not URL identity evidence.
- `score` (integer, required) — Ranking score for duplicate review. It is not an absence proof; a low score can still be the intended record when reason/name/slug/typeRecord match.
- `externalId` (string, optional, nullable) — Matched external identifier when duplicate scoring used one.
- `name` (string, optional, nullable) — Candidate display name from the existing record.
- `operatingStatus` (string, optional, nullable) — Current operating status for entity candidates.
- `publicPath` (string, optional, nullable) — Public API/UI path for the candidate when available.
- `slug` (string, optional, nullable) — Candidate slug from the existing record.
- `typeRecord` (enum, optional, nullable) — Candidate entity type from the existing record.
  - Allowed values: `Company`, `Investment Firm`, `Fund`, `Nonprofit`, `Government`, `Organization`, `Business Line`, `Product`, `Service`

### NewsCandidateScore

Duplicate candidate scoring result for news articles. Use id/slug/externalId/reason to decide whether the candidate is the requested article. score ranks review priority; it does not prove absence.

- `id` (integer, required) — News article id to read or update when this candidate is the requested article.
- `reason` (list of string, required) — Match reasons for reviewing the candidate. Exact reasons are decision signals regardless of whether score crosses the review threshold.
- `score` (integer, required) — Ranking score for duplicate review. It is not an absence proof; a low score can still be the intended article when reason/slug/externalId match.
- `externalId` (string, optional, nullable) — Matched external article identifier when duplicate scoring used one.
- `slug` (string, optional, nullable) — Candidate article slug from the existing record.

### EntityImage

Grouped entity image fields for square, standard, and monogram logo state

- `isMonogram` (boolean, required) — Whether entity image monogram
- `logo` (string, optional, nullable)
- `logoSquare` (string, optional, nullable)

### EntityNameAliasEntityAliasType

Alternate name used for search and display

- `name` (string, required) — Alternate name text
- `displayable` (boolean, optional, nullable) — Show this alias in public name displays.
- `type` (enum, optional, nullable) — Alias type classification
  - Allowed values: `alternativeDba`, `relatedLegal`

### Address

Canonical address record for entity and person payloads

- `address` (integer, optional, nullable) — Legacy address row identifier
- `addressLine1` (string, optional, nullable)
- `addressLine2` (string, optional, nullable)
- `association` (list of AddressAssociation, optional) — Role-period associations for this physical address
- `city` (AddressCity, optional, nullable) — City reference
- `country` (AddressCountry, optional, nullable) — Country reference
- `countryAbbrev` (string, optional, nullable)
- `createdAt` (datetime, optional, nullable)
- `fullAddress` (string, optional, nullable) — Single-line formatted address
- `id` (integer, optional, nullable) — Address record identifier
- `latitude` (double, optional, nullable)
- `longitude` (double, optional, nullable)
- `postalCode` (string, optional, nullable)
- `state` (AddressState, optional, nullable) — State or region reference
- `stateAbbrev` (string, optional, nullable)
- `street` (string, optional, nullable)
- `updatedAt` (datetime, optional, nullable)
- `isCurrent` (boolean, optional, nullable, deprecated) — Deprecated aggregate compatibility flag; true when any association is current
- `isHq` (boolean, optional, nullable, deprecated) — Deprecated legacy flag marking the headquarters or legal/registered address
- `isPrimary` (boolean, optional, nullable, deprecated) — Deprecated legacy flag marking the primary display address

### EntityClassification

Entity classification join rows grouped by bucket; default reads include only current joins, and includeInactive=true adds inactive/historical joins.

- `geoLocationExposure` (list of EntityTag, optional, default: []) — Geographic markets where the entity earns revenue and serves customers (e.g. North America, EMEA, APAC). This is the sales/market footprint classification — NOT the HQ or office location. HQ and office locations belong on the address record (enrichment.address), not this bucket. A London-headquartered company selling globally should have North America and EMEA here, not United Kingdom.
- `industry` (list of EntityTag, optional, default: []) — Industry filter values
- `mainProduct` (list of EntityTag, optional, default: []) — Main product filter values
- `standardizedClassification` (list of StandardizedClassification, optional, default: []) — Standardized classification joins from res_classification_ref. Rows are join-existing-only and carry category/code metadata.
- `tag` (list of EntityTag, optional, default: []) — Tag filter values
- `typeCustomer` (list of EntityTag, optional, default: []) — Type customer filter values
- `typeModel` (list of EntityTag, optional, default: []) — Type model filter values
- `typeOwnership` (list of EntityTag, optional, default: []) — Type ownership filter values
- `typeRevenue` (list of EntityTag, optional, default: []) — Type revenue filter values
- `typeTechnologyUsed` (list of EntityTag, optional, default: []) — Type technology used filter values

### EntityTextBundle

Grouped entity/person text content

- `expanded` (string, optional, nullable) — Expanded summary text
- `generatedDescription` (string, optional, nullable) — Generated SEO meta description text
- `short` (string, optional, nullable) — Short summary text

### EntityUrlLink

Canonical URL link resource with owner, status, crawl, and source metadata. Lifecycle state (current vs former, primary vs secondary) is encoded by `isCurrent` and `isPrimary` — `urlType` is the canonical platform role only and MUST be one of the closed `EntityUrlType` values. To record a rebrand or domain migration, retain the prior URL with the same `urlType` (typically `website`) and set `isCurrent=false, isPrimary=false`; do not propose new enum values.

- `url` (string, required) — Canonical absolute HTTP URL value - validates scheme + host at construction
- `urlType` (enum, required) — Canonical URL platform type such as website, linkedin, twitter, or github. Lifecycle facts belong on link flags such as isCurrent and isPrimary.
  - Allowed values: `website`, `linkedin`, `twitter`, `github`, `facebook`, `instagram`, `tiktok`, `youtube`, `subreddit`, `forum`, `documentation`, `support`, `statuspage`, `changelog`, `roadmap`, `discord`, `crunchbase`, `wellfound`, `angellist`, `glassdoor`, `theorg`, `ycombinator`, `wikipedia`, `pitchbook`, `morningstar`, `bloomberg`, `nyse`, `nasdaq`, `g2`, `producthunt`, `trustpilot`, `alternativeto`, `gartnerpeerinsights`, `getapp`, `sourceforge`, `appstore`, `googleplay`, `capterra`, `trustradius`, `hubspotmarketplace`, `slackappdirectory`, `awsmarketplace`, `salesforceappexchange`, `chromewebstore`, `vscodemarketplace`, `npm`, `pypi`, `maven`, `dockerhub`, `homebrew`, `crates`, `huggingface`
- `crawlCdnProvider` (enum, optional, nullable) — CDN or hosting provider fronting a web URL.
  - Allowed values: `cloudflare`, `akamai`, `fastly`, `awsCloudfront`, `vercel`, `netlify`, `sucuri`, `incapsula`, `bunny`, `keycdn`, `cdn77`, `gcore`, `cdnetworks`, `azureCdn`, `leaseweb`, `digitalocean`, `stackpath`, `googlecloudCdn`, `none`, `unknown`
- `crawlRenderMode` (enum, optional, nullable) — JavaScript rendering requirement for crawl checks.
  - Allowed values: `static`, `jsRequired`, `jsEnhanced`
- `createdAt` (datetime, optional, nullable)
- `id` (integer, optional, nullable)
- `isCurrent` (boolean, optional, nullable) — `true` = owner currently uses this URL; `false` = historical/former (rebrand source domain, deprecated platform handle). The lifecycle state lives here, NEVER in the `urlType` discriminator.
- `isPrimary` (boolean, optional, nullable) — `true` = canonical/primary URL of this `urlType` for this owner. Only one row per (owner, urlType) may be `isCurrent=true` AND `isPrimary=true`.
- `owner` (EntityPersonOwner, optional, nullable) — Owning record, nested ids only: owner.entityId or owner.personId — exactly one is set, and no name fields. Writes are scoped by the owning entity/person route; owner is never a write field.
- `sourceId` (string, optional, nullable)
- `status` (string, optional, nullable)
- `statusChecked` (datetime, optional, nullable)
- `updatedAt` (datetime, optional, nullable)

### EntityFundingDetail

Aggregate view of an entity's fundraising activity

- `fundingRoundCount` (integer, required)
- `investorCount` (integer, required)
- `totalRaised` (double, required)
- `currency` (string, optional, nullable) — ISO 4217 currency of totalRaised, latestValuation, and mostRecentAmount: the one currency every round uses, else the entity's own currency when rounds carry none. Null when rounds use more than one currency or no fundraise rollup exists, so these amounts have no single currency.
- `latestValuation` (double, optional, nullable)
- `mostRecentAmount` (double, optional, nullable)
- `mostRecentDate` (date, optional, nullable)
- `stage` (enum, optional, nullable) — Canonical inferred equity, entity-type, or Company operating-status stage emitted by the entity fundraise rollup. Transaction classifications such as Debt, IPO, and Acquisition are not entity stages.
  - Allowed values: `Angel`, `Pre-Seed`, `Seed`, `Series A`, `Series B`, `Series C`, `Series D`, `Series E`, `Series F`, `Series G`, `Series H`, `Series I`, `Series J`, `Series K`, `Series L`, `Series M`, `Series N`, `Series O`, `Series P`, `Series Q`, `Series R`, `Series S`, `Series T`, `Series U`, `Series V`, `Series W`, `Series X`, `Series Y`, `Series Z`, `Investment Firm`, `Fund`, `Nonprofit`, `Government`, `Public`, `Acquired`, `Acquired Subsidiary`

### EntityFundraiseTransactionEntity

Entity projection used inside FundraiseTransaction responses

- `core` (Entity, required) — Flat entity core record — identity, naming, status, image, and source metadata. An entity is our umbrella record for organizations such as companies, funds, investment firms and investors, accelerators, nonprofits, and government agencies, plus products and services connected to those organizations. Returned directly by GET /v1/sitemap/entities and the alphabetical (?letter=X) list. Nested as .core inside EntityList for default list reads and EntityDetail for detail reads.
- `fundingDetail` (EntityFundingDetail, optional, nullable) — Aggregate view of an entity's fundraising activity

### EntityPersonAssociation

One entity↔person association, naming both sides

- `associationId` (integer, required) — Integer person-entity association join row id, not a person or entity UUID
- `entityAddress` (list of Address, required) — Entity addresses carried on the association projection
- `entityId` (string, required) — Associated entity id
- `entityLogo` (EntityImage, required) — Entity logo image projection
- `entitySlug` (string, required) — Canonical lowercase URL slug for the resource
- `entityUrlLink` (list of EntityUrlLink, required) — Entity URL links carried on the association projection
- `personAddress` (list of Address, required) — Person addresses carried on the association projection
- `personId` (string, required) — Associated person id
- `personImage` (PersonImage, required) — Person image projection
- `personName` (string, required)
- `personSlug` (string, required) — Canonical lowercase URL slug for the resource
- `personUrlLink` (list of EntityUrlLink, required) — Person URL links carried on the association projection
- `endDate` (datetime, optional, nullable) — Association period end timestamp
- `entityName` (string, optional, nullable)
- `entityOperatingStatus` (string, optional, nullable)
- `entityType` (enum, optional, nullable) — Entity type classification
  - Allowed values: `Company`, `Investment Firm`, `Fund`, `Nonprofit`, `Government`, `Organization`, `Business Line`, `Product`, `Service`
- `isCurrent` (boolean, optional, nullable)
- `score` (integer, optional, nullable)
- `startDate` (datetime, optional, nullable) — Association period start timestamp
- `titleFunction` (string, optional, nullable) — Read-side corporate title function for the association row
- `titleId` (integer, optional, nullable) — Corporate title id for the association row
- `titleLevel` (string, optional, nullable) — Read-side corporate title level for the association row
- `titleName` (string, optional, nullable) — Read-side corporate title text for the association row

### Person

Canonical person core record

- `id` (string, required) — Canonical person UUID
- `image` (PersonImage, required) — Read projection: person image fields for detail/list responses
- `nameAlias` (list of EntityNameAliasPersonAliasType, required) — Display and search aliases for this person
- `nameFull` (string, required)
- `slug` (string, required) — Canonical lowercase URL slug for the resource
- `text` (EntityTextBundle, required) — Grouped person text content
- `createdAt` (datetime, optional, nullable) — Record creation timestamp
- `gender` (string, optional, nullable)
- `lastModifiedAt` (datetime, optional, nullable) — Provenance-grounded last-modified watermark (schema.org dateModified): the latest effective time across all writes attributed to this person.
- `nameFirst` (string, optional, nullable)
- `nameLast` (string, optional, nullable)
- `nameMiddle` (string, optional, nullable)
- `nickname` (string, optional, nullable)
- `publicId` (string, optional, nullable) — Stable, immutable public handle (e.g. `pV1StGXR8Z5ab`). Never changes once assigned, unlike the slug. Null on projections that do not select it and on rows still awaiting handle backfill.
- `semanticMatch` (ContentEmbeddingMatch, optional, nullable) — Semantic embedding match evidence populated only for semantic people reads.
- `suffix` (string, optional, nullable)
- `updatedAt` (datetime, optional, nullable) — Last modification timestamp

### PersonEnrichment

Supplemental person data — addresses and URL links

- `address` (list of Address, required) — Addresses associated with the person
- `urlLink` (list of EntityUrlLink, required) — External and social URL links associated with the person

### PersonInvestment

Domain model for a person's investment in an entity (fundraise transaction)

- `company` (PersonInvestedCompany, required) — Company metadata associated with a person investment
- `fundraiseTransactionId` (string, required) — Canonical fundraise transaction UUID
- `id` (string, required)
- `investmentDate` (datetime, required)
- `amount` (double, optional, nullable)
- `date` (datetime, optional, nullable)
- `fundraiseTransaction` (EntityFundraise, optional, nullable) — Fundraise transaction metadata linked to a person investment
- `investorAttribution` (FundraiseInvestmentAttribution, optional, nullable) — Investor-specific attribution for this person's participation in the fundraise round. amountInvested is a plain decimal number in the fundraise transaction currency and is not added to amount.
- `round` (string, optional, nullable)

### EntityNameAliasPersonAliasType

Alternate name used for search and display

- `name` (string, required) — Alternate name text
- `displayable` (boolean, optional, nullable) — Show this alias in public name displays.
- `type` (enum, optional, nullable) — Alias type classification
  - Allowed values: `nickname`, `maidenName`, `formerName`, `stageName`

### EntityComparisonSignals

Competitive comparison signals for a provider entity — sells-to customers, pricing model, ownership, funding stage, total raised, and website. Projected from entity enrichment for side-by-side comparison; founded year rides the entity core.

- `ownership` (list of string, required) — Provider ownership structure (current typeOwnership tags)
- `pricingModel` (list of string, required) — Provider pricing/revenue model (current typeRevenue tags)
- `sellsTo` (list of string, required) — Customer types the provider sells to (current typeCustomer tags)
- `fundingStage` (enum, optional, nullable) — Latest funding stage when known
  - Allowed values: `Angel`, `Pre-Seed`, `Seed`, `Series A`, `Series B`, `Series C`, `Series D`, `Series E`, `Series F`, `Series G`, `Series H`, `Series I`, `Series J`, `Series K`, `Series L`, `Series M`, `Series N`, `Series O`, `Series P`, `Series Q`, `Series R`, `Series S`, `Series T`, `Series U`, `Series V`, `Series W`, `Series X`, `Series Y`, `Series Z`, `Investment Firm`, `Fund`, `Nonprofit`, `Government`, `Public`, `Acquired`, `Acquired Subsidiary`
- `totalRaised` (double, optional, nullable) — Total capital raised when known
- `website` (string, optional, nullable) — Provider website URL when known

### EntityAcceleratorParticipation

Flattened accelerator participation derived from acceleratorParticipant relationship rows and joined to the canonical accelerator entity.

- `accelerator` (Entity, required) — Canonical thin accelerator entity from the acceleratorParticipant relationship
- `acceleratorName` (string, required) — Full accelerator participation name, including program detail
- `asOfDate` (datetime, required) — Participation effective timestamp
- `id` (string, required) — Stable participation identifier anchored to the contributing acceleratorParticipant relationship
- `batch` (string, optional, nullable) — Accelerator batch or cohort
- `program` (string, optional, nullable) — Accelerator program name, when the source distinguishes one
- `status` (string, optional, nullable) — Accelerator participation status

### EntityResearchDetail

Canonical research detail row for research.res_entity_detail

- `entityId` (string, required) — Canonical entity UUID
- `id` (integer, required)
- `typeResearchDetail` (string, required)
- `valueType` (enum, required) — Output kind for governed research detail values
  - Allowed values: `text`, `numeric`, `monetary`, `percentage`, `date`
- `asOfDate` (datetime, optional, nullable)
- `derivedRange` (ResearchDerivedRange, optional, nullable) — Read-only range derived only for targetDateAbsolute detail rows
- `discreteValue` (double, optional, nullable)
- `textValue` (string, optional, nullable)
- `updatedAt` (datetime, optional, nullable)
- `valueResearchDetail` (string, optional, nullable)

### EntityResearchSnippet

Persisted research snippet row for one entity.

- `entityId` (string, required) — Canonical entity UUID
- `id` (integer, required)
- `text` (string, required)
- `textType` (string, required)
- `compliance` (ContentCompliance, optional, nullable) — Derived character/word counts and governed-contract compliance for this snippet row; null when not evaluated.
- `updatedAt` (datetime, optional, nullable)

### AddressAssociation

One role and effective period for a physical address association

- `id` (integer, required) — Address association row identifier
- `isCurrent` (boolean, required) — Whether this role is currently relevant
- `endDate` (date, optional, nullable) — Last known day this role applied
- `role` (enum, optional, nullable) — Address association role; null means unclassified
  - Allowed values: `domicile`, `dominant`, `origin`
- `startDate` (date, optional, nullable) — First known day this role applied

### AddressCity

City reference used inside an address

- `name` (string, required) — City name
- `id` (integer, optional, nullable)

### AddressCountry

Country reference used inside an address

- `name` (string, required) — Country name
- `countryCodeChar2` (string, optional, nullable) — Two-letter country code
- `countryCodeChar3` (string, optional, nullable) — Three-letter country code
- `id` (integer, optional, nullable)
- `unRegion` (string, optional, nullable)
- `unSubregion` (string, optional, nullable)

### AddressState

State or region reference used inside an address

- `name` (string, required) — State or region name
- `id` (integer, optional, nullable)
- `stateAbbrev` (string, optional, nullable) — State or region abbreviation

### EntityTag

Canonical classification tag projection. Catalog/search responses describe registry tags; entity-classification responses include classificationId plus join state.

- `creatable` (boolean, required)
- `name` (string, required) — Display name. Capped to the standardized taxonomy storage limit because this shared read contract covers NAICS/SIC/ISIC-style classification labels as well as editorial tags.
- `writable` (boolean, required)
- `creatable` (boolean, required) — Whether this bucket permits creating missing values by type plus name.
- `id` (integer, required) — Classification tag registry id from res_type_ref; use as EntityClassificationMutation.tagId.
- `name` (string, required) — Name
- `type` (string, required) — Canonical tag classification type
- `writable` (boolean, required) — Whether this existing tag can be joined through tagId.
- `isCurrent` (boolean, optional, nullable)
- `isPrimary` (boolean, optional, nullable)
- `bucket` (string, optional, nullable) — Canonical entity-classification bucket key. Use this as EntityClassificationMutation.type when creating by type plus name; `type` remains the registry wire value for tag search and catalog round-trips.
- `classificationId` (integer, optional, nullable) — Entity classification join row id for update/delete; present on entity classification responses and null on discovery responses.
- `createdAt` (datetime, optional, nullable) — Registry tag creation timestamp, not the entity join timestamp.
- `isCurrent` (boolean, optional, nullable) — Current-state flag for this context: registry active flag in discovery, entity join current flag in entity-classification responses.
- `isPrimary` (boolean, optional, nullable) — Entity join primary flag within its bucket; null on catalog/tag discovery.
- `slug` (string, optional, nullable) — Slug
- `updatedAt` (datetime, optional, nullable) — Registry tag update timestamp; join updates return isCurrent/isPrimary but no join updatedAt.

### StandardizedClassification

Canonical standardized classification projection backed by res_classification_ref. Rows are join-existing-only; creatable is false until a taxonomy writer exists.

- `creatable` (boolean, required)
- `name` (string, required) — Display name. Capped to the standardized taxonomy storage limit because this shared read contract covers NAICS/SIC/ISIC-style classification labels as well as editorial tags.
- `writable` (boolean, required)
- `category` (string, required) — Standardized category token.
- `creatable` (boolean, required) — Standardized taxonomy rows are join-existing-only.
- `id` (integer, required) — Standardized classification registry id from res_classification_ref; use as EntityClassificationMutation.classificationId.
- `name` (string, required) — Name
- `writable` (boolean, required) — Existing standardized rows can be joined through classificationId.
- `isCurrent` (boolean, optional, nullable)
- `isPrimary` (boolean, optional, nullable)
- `code` (integer, optional, nullable) — Standardized classification code when present.
- `createdAt` (datetime, optional, nullable) — Registry row creation timestamp.
- `entityClassificationId` (integer, optional, nullable) — Entity classification join row id for update/delete; present on entity classification responses and null on discovery responses.
- `isCurrent` (boolean, optional, nullable) — Standardized reference rows are current by definition.
- `isPrimary` (boolean, optional, nullable) — Entity join primary flag within this standardized category.
- `level` (integer, optional, nullable) — Hierarchy level when present.
- `updatedAt` (datetime, optional, nullable) — Registry row update timestamp.

### PersonImage

Read projection: person image fields for detail/list responses

- `isMonogram` (boolean, required) — Whether person image monogram
- `picture` (string, optional, nullable)

### ContentEmbeddingMatch

Nearest-neighbor content embedding match evidence.

- `computedAt` (datetime, required) — Timestamp when the embedding row was computed.
- `cosineDistance` (double, required) — pgvector cosine distance where lower is closer.
- `cosineScore` (double, required) — Cosine similarity score where higher is closer.
- `modelVersion` (string, required) — Embedding model/profile version for this row.
- `rank` (integer, required) — One-based semantic rank within the returned ANN candidate set.
- `sourceHash` (string, required) — SHA-256 hash of the source content.
- `sourceId` (string, required) — Content embedding source identifier.
- `sourceJson` (string, required) — Serialized JSONB source document stored for the embedding row.
- `sourceText` (string, required) — Source text used to compute the stored embedding.
- `sourceType` (enum, required) — Stored content embedding source partition.
  - Allowed values: `entity`, `person`, `newsArticle`, `blogPost`, `text`, `classificationTag`, `classificationCode`, `product`, `service`, `agentHelpDoc`

### PersonInvestedCompany

Company metadata associated with a person investment

- `entity` (Entity, required) — Flat entity core record — identity, naming, status, image, and source metadata. An entity is our umbrella record for organizations such as companies, funds, investment firms and investors, accelerators, nonprofits, and government agencies, plus products and services connected to those organizations. Returned directly by GET /v1/sitemap/entities and the alphabetical (?letter=X) list. Nested as .core inside EntityList for default list reads and EntityDetail for detail reads.

### EntityFundraise

Fundraise transaction metadata linked to a person investment

- `id` (string, required) — Canonical fundraise transaction UUID
- `image` (EntityImage, required) — Grouped entity image fields for square, standard, and monogram logo state
- `nameBrand` (string, required)
- `amountRaised` (double, optional, nullable)
- `dateAnnounced` (datetime, optional, nullable)
- `investorCount` (integer, optional, nullable)
- `round` (string, optional, nullable)
- `status` (string, optional, nullable)
- `valuationPostMoney` (double, optional, nullable)

### ResearchDerivedRange

Read-only derived range projection for targetDateAbsolute detail rows

- `asOfDate` (datetime, required) — Observation timestamp from the source detail row
- `bucket` (enum, required) — Derived bucket using inclusive 0, 3, 6, 12, and 24 month boundaries
  - Allowed values: `pastDue`, `withinThreeMonths`, `threeToSixMonths`, `sixToTwelveMonths`, `twelveToTwentyFourMonths`, `beyondTwoYears`
- `monthsFromNow` (integer, required) — Whole months from now() to targetDate
- `targetDate` (datetime, required) — Absolute target date stored for a targetDateAbsolute detail row

### ContentCompliance

Derived character/word counts and whether the row text meets its governed type contract (word/character limits and paragraph shape). violation lists each unmet rule and is empty when the row is compliant.

- `characterCount` (integer, required) — Character count of the row text (UTF-16 units).
- `meetsRequirements` (boolean, required) — Whether the text satisfies every governed contract rule.
- `violation` (list of string, required) — One human-readable reason per unmet rule; empty when compliant.
- `wordCount` (integer, required) — Word count of the row text (whitespace-separated tokens).

## Examples

**Response**

```json
{
  "content": [
    {
      "entity": {
        "core": {
          "id": "string",
          "image": {
            "isMonogram": true,
            "logo": "string",
            "logoSquare": "string"
          },
          "nameAlias": [
            {
              "name": "Bun",
              "displayable": true,
              "type": "alternativeDba"
            }
          ],
          "nameBrand": "string",
          "slug": "aventure-vc",
          "defaultCurrency": "string",
          "foundedYear": 1,
          "lastModifiedAt": "2024-01-15T09:30:00Z",
          "nameLegal": "string",
          "operatingStatus": "string",
          "publicId": "eV1StGXR8Z5a",
          "publicUrl": "string",
          "sitemap": {
            "hasAnalysis": true,
            "hasEmployees": true,
            "hasFundraising": true,
            "hasNews": true,
            "productServiceSlug": [
              "string"
            ],
            "hasAcquisitions": false
          },
          "typeRecord": "Company",
          "updatedAt": "2024-01-15T09:30:00Z"
        },
        "enrichment": {
          "address": [
            {
              "address": 456,
              "addressLine1": "string",
              "addressLine2": "string",
              "association": [
                {
                  "id": 123,
                  "isCurrent": true,
                  "endDate": "2023-01-15",
                  "role": "domicile",
                  "startDate": "2023-01-15"
                }
              ],
              "city": {
                "name": "Boston",
                "id": 1
              },
              "country": {
                "name": "United States",
                "countryCodeChar2": "US",
                "countryCodeChar3": "USA",
                "id": 1,
                "unRegion": "string",
                "unSubregion": "string"
              },
              "countryAbbrev": "string",
              "createdAt": "2024-01-15T09:30:00Z",
              "fullAddress": "123 Main St, Boston, MA 02110, USA",
              "id": 123,
              "latitude": 1.1,
              "longitude": 1.1,
              "postalCode": "string",
              "state": {
                "name": "Massachusetts",
                "id": 1,
                "stateAbbrev": "MA"
              },
              "stateAbbrev": "string",
              "street": "string",
              "updatedAt": "2024-01-15T09:30:00Z",
              "isCurrent": true,
              "isHq": true,
              "isPrimary": true
            }
          ],
          "classification": {
            "geoLocationExposure": [
              {
                "creatable": true,
                "name": "string",
                "writable": true,
                "id": 1,
                "type": "industry",
                "isCurrent": true,
                "isPrimary": true,
                "bucket": "string",
                "classificationId": 1,
                "createdAt": "2024-01-15T09:30:00Z",
                "slug": "aventure-vc",
                "updatedAt": "2024-01-15T09:30:00Z"
              }
            ],
            "industry": [
              {
                "creatable": true,
                "name": "string",
                "writable": true,
                "id": 1,
                "type": "industry",
                "isCurrent": true,
                "isPrimary": true,
                "bucket": "string",
                "classificationId": 1,
                "createdAt": "2024-01-15T09:30:00Z",
                "slug": "aventure-vc",
                "updatedAt": "2024-01-15T09:30:00Z"
              }
            ],
            "mainProduct": [
              {
                "creatable": true,
                "name": "string",
                "writable": true,
                "id": 1,
                "type": "industry",
                "isCurrent": true,
                "isPrimary": true,
                "bucket": "string",
                "classificationId": 1,
                "createdAt": "2024-01-15T09:30:00Z",
                "slug": "aventure-vc",
                "updatedAt": "2024-01-15T09:30:00Z"
              }
            ],
            "standardizedClassification": [
              {
                "creatable": true,
                "name": "string",
                "writable": true,
                "category": "string",
                "id": 1,
                "isCurrent": true,
                "isPrimary": true,
                "code": 1,
                "createdAt": "2024-01-15T09:30:00Z",
                "entityClassificationId": 1,
                "level": 1,
                "updatedAt": "2024-01-15T09:30:00Z"
              }
            ],
            "tag": [
              {
                "creatable": true,
                "name": "string",
                "writable": true,
                "id": 1,
                "type": "industry",
                "isCurrent": true,
                "isPrimary": true,
                "bucket": "string",
                "classificationId": 1,
                "createdAt": "2024-01-15T09:30:00Z",
                "slug": "aventure-vc",
                "updatedAt": "2024-01-15T09:30:00Z"
              }
            ],
            "typeCustomer": [
              {
                "creatable": true,
                "name": "string",
                "writable": true,
                "id": 1,
                "type": "industry",
                "isCurrent": true,
                "isPrimary": true,
                "bucket": "string",
                "classificationId": 1,
                "createdAt": "2024-01-15T09:30:00Z",
                "slug": "aventure-vc",
                "updatedAt": "2024-01-15T09:30:00Z"
              }
            ],
            "typeModel": [
              {
                "creatable": true,
                "name": "string",
                "writable": true,
                "id": 1,
                "type": "industry",
                "isCurrent": true,
                "isPrimary": true,
                "bucket": "string",
                "classificationId": 1,
                "createdAt": "2024-01-15T09:30:00Z",
                "slug": "aventure-vc",
                "updatedAt": "2024-01-15T09:30:00Z"
              }
            ],
            "typeOwnership": [
              {
                "creatable": true,
                "name": "string",
                "writable": true,
                "id": 1,
                "type": "industry",
                "isCurrent": true,
                "isPrimary": true,
                "bucket": "string",
                "classificationId": 1,
                "createdAt": "2024-01-15T09:30:00Z",
                "slug": "aventure-vc",
                "updatedAt": "2024-01-15T09:30:00Z"
              }
            ],
            "typeRevenue": [
              {
                "creatable": true,
                "name": "string",
                "writable": true,
                "id": 1,
                "type": "industry",
                "isCurrent": true,
                "isPrimary": true,
                "bucket": "string",
                "classificationId": 1,
                "createdAt": "2024-01-15T09:30:00Z",
                "slug": "aventure-vc",
                "updatedAt": "2024-01-15T09:30:00Z"
              }
            ],
            "typeTechnologyUsed": [
              {
                "creatable": true,
                "name": "string",
                "writable": true,
                "id": 1,
                "type": "industry",
                "isCurrent": true,
                "isPrimary": true,
                "bucket": "string",
                "classificationId": 1,
                "createdAt": "2024-01-15T09:30:00Z",
                "slug": "aventure-vc",
                "updatedAt": "2024-01-15T09:30:00Z"
              }
            ]
          },
          "text": {
            "expanded": "Canonical expanded summary for grouped text assertions.",
            "generatedDescription": "Acme AI builds AI copilots for growth teams.",
            "short": "Canonical short summary"
          },
          "urlLink": [
            {
              "url": "https://example.com",
              "urlType": "website",
              "crawlCdnProvider": "cloudflare",
              "crawlRenderMode": "static",
              "createdAt": "2024-01-15T09:30:00Z",
              "id": 1,
              "isCurrent": true,
              "isPrimary": true,
              "owner": {
                "entityId": "string",
                "personId": "string"
              },
              "sourceId": "string",
              "status": "string",
              "statusChecked": "2024-01-15T09:30:00Z",
              "updatedAt": "2024-01-15T09:30:00Z"
            }
          ],
          "fundingDetail": {
            "fundingRoundCount": 1,
            "investorCount": 1,
            "totalRaised": 1.1,
            "currency": "string",
            "latestValuation": 1.1,
            "mostRecentAmount": 1.1,
            "mostRecentDate": "2023-01-15",
            "stage": "Angel"
          }
        },
        "fundraiseRound": [
          {
            "id": "string",
            "sourceAttribution": [
              {
                "attributionType": "direct",
                "joinId": "string",
                "leadInvestor": true,
                "transactionId": "string",
                "amountInvested": 1.1,
                "beneficialEntityId": "string",
                "fundManagerRelationshipId": 1,
                "recordedEntityId": "string",
                "round": {
                  "round": "string"
                }
              }
            ],
            "amountRaised": 1,
            "createdAt": "2024-01-15T09:30:00Z",
            "currency": "string",
            "dataConfidence": "High",
            "dateAnnounced": "2024-01-15T09:30:00Z",
            "dateFundingComplete": "2024-01-15T09:30:00Z",
            "dateInvestorExit": "2024-01-15T09:30:00Z",
            "entity": {
              "core": {
                "id": "string",
                "image": {
                  "isMonogram": true,
                  "logo": "string",
                  "logoSquare": "string"
                },
                "nameAlias": [
                  {
                    "name": "Bun",
                    "displayable": true,
                    "type": "alternativeDba"
                  }
                ],
                "nameBrand": "string",
                "slug": "aventure-vc",
                "defaultCurrency": "string",
                "foundedYear": 1,
                "lastModifiedAt": "2024-01-15T09:30:00Z",
                "nameLegal": "string",
                "operatingStatus": "string",
                "publicId": "eV1StGXR8Z5a",
                "publicUrl": "string",
                "sitemap": {
                  "hasAnalysis": true,
                  "hasEmployees": true,
                  "hasFundraising": true,
                  "hasNews": true,
                  "productServiceSlug": [
                    "string"
                  ],
                  "hasAcquisitions": false
                },
                "typeRecord": "Company",
                "updatedAt": "2024-01-15T09:30:00Z"
              },
              "fundingDetail": {
                "fundingRoundCount": 1,
                "investorCount": 1,
                "totalRaised": 1.1,
                "currency": "string",
                "latestValuation": 1.1,
                "mostRecentAmount": 1.1,
                "mostRecentDate": "2023-01-15",
                "stage": "Angel"
              }
            },
            "investorAttribution": {
              "attributionType": "direct",
              "joinId": "string",
              "leadInvestor": true,
              "transactionId": "string",
              "amountInvested": 1.1,
              "beneficialEntityId": "string",
              "fundManagerRelationshipId": 1,
              "recordedEntityId": "string",
              "round": {
                "round": "string"
              }
            },
            "investorCount": 1,
            "round": "string",
            "updatedAt": "2024-01-15T09:30:00Z",
            "valuationPostMoney": 1,
            "valuationPreMoney": 1
          }
        ],
        "newsArticle": [
          {
            "id": 1,
            "title": "string",
            "author": "string",
            "category": "string",
            "createdAt": "2024-01-15T09:30:00Z",
            "excerpt": "string",
            "externalNewsArticle": true,
            "newsImageThumbnail": "string",
            "newsUrlOriginal": "string",
            "publication": "string",
            "publishedAt": "2024-01-15T09:30:00Z",
            "slug": "aventure-vc",
            "updatedAt": "2024-01-15T09:30:00Z"
          }
        ],
        "person": [
          {
            "association": [
              {
                "associationId": 1,
                "entityAddress": [
                  {
                    "address": 456,
                    "addressLine1": "string",
                    "addressLine2": "string",
                    "association": [
                      {
                        "id": 123,
                        "isCurrent": true,
                        "endDate": "2023-01-15",
                        "role": "domicile",
                        "startDate": "2023-01-15"
                      }
                    ],
                    "city": {
                      "name": "Boston",
                      "id": 1
                    },
                    "country": {
                      "name": "United States",
                      "countryCodeChar2": "US",
                      "countryCodeChar3": "USA",
                      "id": 1,
                      "unRegion": "string",
                      "unSubregion": "string"
                    },
                    "countryAbbrev": "string",
                    "createdAt": "2024-01-15T09:30:00Z",
                    "fullAddress": "123 Main St, Boston, MA 02110, USA",
                    "id": 123,
                    "latitude": 1.1,
                    "longitude": 1.1,
                    "postalCode": "string",
                    "state": {
                      "name": "Massachusetts",
                      "id": 1,
                      "stateAbbrev": "MA"
                    },
                    "stateAbbrev": "string",
                    "street": "string",
                    "updatedAt": "2024-01-15T09:30:00Z",
                    "isCurrent": true,
                    "isHq": true,
                    "isPrimary": true
                  }
                ],
                "entityId": "string",
                "entityLogo": {
                  "isMonogram": true,
                  "logo": "string",
                  "logoSquare": "string"
                },
                "entitySlug": "aventure-vc",
                "entityUrlLink": [
                  {
                    "url": "https://example.com",
                    "urlType": "website",
                    "crawlCdnProvider": "cloudflare",
                    "crawlRenderMode": "static",
                    "createdAt": "2024-01-15T09:30:00Z",
                    "id": 1,
                    "isCurrent": true,
                    "isPrimary": true,
                    "owner": {
                      "entityId": "string",
                      "personId": "string"
                    },
                    "sourceId": "string",
                    "status": "string",
                    "statusChecked": "2024-01-15T09:30:00Z",
                    "updatedAt": "2024-01-15T09:30:00Z"
                  }
                ],
                "personAddress": [
                  {
                    "address": 456,
                    "addressLine1": "string",
                    "addressLine2": "string",
                    "association": [
                      {
                        "id": 123,
                        "isCurrent": true,
                        "endDate": "2023-01-15",
                        "role": "domicile",
                        "startDate": "2023-01-15"
                      }
                    ],
                    "city": {
                      "name": "Boston",
                      "id": 1
                    },
                    "country": {
                      "name": "United States",
                      "countryCodeChar2": "US",
                      "countryCodeChar3": "USA",
                      "id": 1,
                      "unRegion": "string",
                      "unSubregion": "string"
                    },
                    "countryAbbrev": "string",
                    "createdAt": "2024-01-15T09:30:00Z",
                    "fullAddress": "123 Main St, Boston, MA 02110, USA",
                    "id": 123,
                    "latitude": 1.1,
                    "longitude": 1.1,
                    "postalCode": "string",
                    "state": {
                      "name": "Massachusetts",
                      "id": 1,
                      "stateAbbrev": "MA"
                    },
                    "stateAbbrev": "string",
                    "street": "string",
                    "updatedAt": "2024-01-15T09:30:00Z",
                    "isCurrent": true,
                    "isHq": true,
                    "isPrimary": true
                  }
                ],
                "personId": "string",
                "personImage": {
                  "isMonogram": true,
                  "picture": "string"
                },
                "personName": "string",
                "personSlug": "aventure-vc",
                "personUrlLink": [
                  {
                    "url": "https://example.com",
                    "urlType": "website",
                    "crawlCdnProvider": "cloudflare",
                    "crawlRenderMode": "static",
                    "createdAt": "2024-01-15T09:30:00Z",
                    "id": 1,
                    "isCurrent": true,
                    "isPrimary": true,
                    "owner": {
                      "entityId": "string",
                      "personId": "string"
                    },
                    "sourceId": "string",
                    "status": "string",
                    "statusChecked": "2024-01-15T09:30:00Z",
                    "updatedAt": "2024-01-15T09:30:00Z"
                  }
                ],
                "endDate": "2024-01-15T09:30:00Z",
                "entityName": "string",
                "entityOperatingStatus": "string",
                "entityType": "Company",
                "isCurrent": true,
                "score": 1,
                "startDate": "2024-01-15T09:30:00Z",
                "titleFunction": "string",
                "titleId": 1,
                "titleLevel": "string",
                "titleName": "string"
              }
            ],
            "core": {
              "id": "string",
              "image": {
                "isMonogram": true,
                "picture": "string"
              },
              "nameAlias": [
                {
                  "name": "Bun",
                  "displayable": true,
                  "type": "nickname"
                }
              ],
              "nameFull": "string",
              "slug": "aventure-vc",
              "text": {
                "expanded": "Canonical expanded summary for grouped text assertions.",
                "generatedDescription": "Acme AI builds AI copilots for growth teams.",
                "short": "Canonical short summary"
              },
              "createdAt": "2024-01-15T09:30:00Z",
              "gender": "string",
              "lastModifiedAt": "2024-01-15T09:30:00Z",
              "nameFirst": "string",
              "nameLast": "string",
              "nameMiddle": "string",
              "nickname": "string",
              "publicId": "pV1StGXR8Z5ab",
              "semanticMatch": {
                "computedAt": "2024-01-15T09:30:00Z",
                "cosineDistance": 1.1,
                "cosineScore": 1.1,
                "modelVersion": "string",
                "rank": 1,
                "sourceHash": "string",
                "sourceId": "string",
                "sourceJson": "string",
                "sourceText": "string",
                "sourceType": "entity"
              },
              "suffix": "string",
              "updatedAt": "2024-01-15T09:30:00Z"
            },
            "enrichment": {
              "address": [
                {
                  "address": 456,
                  "addressLine1": "string",
                  "addressLine2": "string",
                  "association": [
                    {
                      "id": 123,
                      "isCurrent": true,
                      "endDate": "2023-01-15",
                      "role": "domicile",
                      "startDate": "2023-01-15"
                    }
                  ],
                  "city": {
                    "name": "Boston",
                    "id": 1
                  },
                  "country": {
                    "name": "United States",
                    "countryCodeChar2": "US",
                    "countryCodeChar3": "USA",
                    "id": 1,
                    "unRegion": "string",
                    "unSubregion": "string"
                  },
                  "countryAbbrev": "string",
                  "createdAt": "2024-01-15T09:30:00Z",
                  "fullAddress": "123 Main St, Boston, MA 02110, USA",
                  "id": 123,
                  "latitude": 1.1,
                  "longitude": 1.1,
                  "postalCode": "string",
                  "state": {
                    "name": "Massachusetts",
                    "id": 1,
                    "stateAbbrev": "MA"
                  },
                  "stateAbbrev": "string",
                  "street": "string",
                  "updatedAt": "2024-01-15T09:30:00Z",
                  "isCurrent": true,
                  "isHq": true,
                  "isPrimary": true
                }
              ],
              "urlLink": [
                {
                  "url": "https://example.com",
                  "urlType": "website",
                  "crawlCdnProvider": "cloudflare",
                  "crawlRenderMode": "static",
                  "createdAt": "2024-01-15T09:30:00Z",
                  "id": 1,
                  "isCurrent": true,
                  "isPrimary": true,
                  "owner": {
                    "entityId": "string",
                    "personId": "string"
                  },
                  "sourceId": "string",
                  "status": "string",
                  "statusChecked": "2024-01-15T09:30:00Z",
                  "updatedAt": "2024-01-15T09:30:00Z"
                }
              ]
            },
            "investment": [
              {
                "company": {
                  "entity": {
                    "id": "string",
                    "image": {
                      "isMonogram": true,
                      "logo": "string",
                      "logoSquare": "string"
                    },
                    "nameAlias": [
                      {
                        "name": "Bun",
                        "displayable": true,
                        "type": "alternativeDba"
                      }
                    ],
                    "nameBrand": "string",
                    "slug": "aventure-vc",
                    "defaultCurrency": "string",
                    "foundedYear": 1,
                    "lastModifiedAt": "2024-01-15T09:30:00Z",
                    "nameLegal": "string",
                    "operatingStatus": "string",
                    "publicId": "eV1StGXR8Z5a",
                    "publicUrl": "string",
                    "sitemap": {
                      "hasAnalysis": true,
                      "hasEmployees": true,
                      "hasFundraising": true,
                      "hasNews": true,
                      "productServiceSlug": [
                        "string"
                      ],
                      "hasAcquisitions": false
                    },
                    "typeRecord": "Company",
                    "updatedAt": "2024-01-15T09:30:00Z"
                  }
                },
                "fundraiseTransactionId": "string",
                "id": "string",
                "investmentDate": "2024-01-15T09:30:00Z",
                "amount": 1.1,
                "date": "2024-01-15T09:30:00Z",
                "fundraiseTransaction": {
                  "id": "string",
                  "image": {
                    "isMonogram": true,
                    "logo": "string",
                    "logoSquare": "string"
                  },
                  "nameBrand": "string",
                  "amountRaised": 1.1,
                  "dateAnnounced": "2024-01-15T09:30:00Z",
                  "investorCount": 1,
                  "round": "string",
                  "status": "string",
                  "valuationPostMoney": 1.1
                },
                "investorAttribution": {
                  "attributionType": "direct",
                  "joinId": "string",
                  "leadInvestor": true,
                  "transactionId": "string",
                  "amountInvested": 1.1,
                  "beneficialEntityId": "string",
                  "fundManagerRelationshipId": 1,
                  "recordedEntityId": "string",
                  "round": {
                    "round": "string"
                  }
                },
                "round": "string"
              }
            ],
            "nameAlias": [
              {
                "name": "Bun",
                "displayable": true,
                "type": "nickname"
              }
            ],
            "articleCount": 1
          }
        ],
        "relationship": [
          {
            "entity": {
              "id": "string",
              "image": {
                "isMonogram": true,
                "logo": "string",
                "logoSquare": "string"
              },
              "nameAlias": [
                {
                  "name": "Bun",
                  "displayable": true,
                  "type": "alternativeDba"
                }
              ],
              "nameBrand": "string",
              "slug": "aventure-vc",
              "defaultCurrency": "string",
              "foundedYear": 1,
              "lastModifiedAt": "2024-01-15T09:30:00Z",
              "nameLegal": "string",
              "operatingStatus": "string",
              "publicId": "eV1StGXR8Z5a",
              "publicUrl": "string",
              "sitemap": {
                "hasAnalysis": true,
                "hasEmployees": true,
                "hasFundraising": true,
                "hasNews": true,
                "productServiceSlug": [
                  "string"
                ],
                "hasAcquisitions": false
              },
              "typeRecord": "Company",
              "updatedAt": "2024-01-15T09:30:00Z"
            },
            "relationship": [
              null
            ],
            "relationshipType": "string",
            "asOf": "2023-01-15",
            "comparisonSignals": {
              "ownership": [
                "string"
              ],
              "pricingModel": [
                "string"
              ],
              "sellsTo": [
                "string"
              ],
              "fundingStage": "Angel",
              "totalRaised": 1.1,
              "website": "string"
            },
            "createdAt": "2024-01-15T09:30:00Z",
            "detail": "string",
            "id": 1,
            "isCurrent": true,
            "isPrimary": true,
            "source": "string",
            "sourceEntityId": "string",
            "targetEntityId": "string",
            "updatedAt": "2024-01-15T09:30:00Z"
          }
        ],
        "research": {
          "acceleratorParticipation": [
            {
              "accelerator": {
                "id": "string",
                "image": {
                  "isMonogram": true,
                  "logo": "string",
                  "logoSquare": "string"
                },
                "nameAlias": [
                  {
                    "name": "Bun",
                    "displayable": true,
                    "type": "alternativeDba"
                  }
                ],
                "nameBrand": "string",
                "slug": "aventure-vc",
                "defaultCurrency": "string",
                "foundedYear": 1,
                "lastModifiedAt": "2024-01-15T09:30:00Z",
                "nameLegal": "string",
                "operatingStatus": "string",
                "publicId": "eV1StGXR8Z5a",
                "publicUrl": "string",
                "sitemap": {
                  "hasAnalysis": true,
                  "hasEmployees": true,
                  "hasFundraising": true,
                  "hasNews": true,
                  "productServiceSlug": [
                    "string"
                  ],
                  "hasAcquisitions": false
                },
                "typeRecord": "Company",
                "updatedAt": "2024-01-15T09:30:00Z"
              },
              "acceleratorName": "string",
              "asOfDate": "2024-01-15T09:30:00Z",
              "id": "string",
              "batch": "string",
              "program": "string",
              "status": "string"
            }
          ],
          "detail": [
            {
              "entityId": "string",
              "id": 1,
              "typeResearchDetail": "string",
              "valueType": "text",
              "asOfDate": "2024-01-15T09:30:00Z",
              "derivedRange": {
                "asOfDate": "2024-01-15T09:30:00Z",
                "bucket": "pastDue",
                "monthsFromNow": 1,
                "targetDate": "2024-01-15T09:30:00Z"
              },
              "discreteValue": 1.1,
              "textValue": "string",
              "updatedAt": "2024-01-15T09:30:00Z",
              "valueResearchDetail": "string"
            }
          ],
          "snippet": [
            {
              "entityId": "string",
              "id": 1,
              "text": "string",
              "textType": "string",
              "compliance": {
                "characterCount": 1,
                "meetsRequirements": true,
                "violation": [
                  "string"
                ],
                "wordCount": 1
              },
              "updatedAt": "2024-01-15T09:30:00Z"
            }
          ]
        },
        "sitemap": {
          "hasAnalysis": true,
          "hasEmployees": true,
          "hasFundraising": true,
          "hasNews": true,
          "productServiceSlug": [
            "string"
          ],
          "hasAcquisitions": false
        },
        "uniqueId": [
          {
            "createdAt": "2024-01-15T09:30:00Z",
            "id": 1,
            "idType": "ein",
            "identifier": "string",
            "owner": {
              "entityId": "string",
              "personId": "string"
            },
            "updatedAt": "2024-01-15T09:30:00Z",
            "source": "string"
          }
        ],
        "publicUrl": "string"
      },
      "investorAttribution": [
        {
          "attributionType": "direct",
          "joinId": "string",
          "leadInvestor": true,
          "transactionId": "string",
          "amountInvested": 1.1,
          "beneficialEntityId": "string",
          "fundManagerRelationshipId": 1,
          "recordedEntityId": "string",
          "round": {
            "round": "string"
          }
        }
      ],
      "round": [
        {
          "round": "string"
        }
      ],
      "roundCount": 1
    }
  ],
  "empty": true,
  "first": true,
  "last": true,
  "number": 1,
  "numberOfElements": 1,
  "pageable": {
    "offset": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "paged": true,
    "sort": {
      "empty": true,
      "sorted": true,
      "unsorted": true
    },
    "unpaged": true
  },
  "size": 1,
  "sort": {
    "empty": true,
    "sorted": true,
    "unsorted": true
  },
  "totalElements": 1,
  "totalPages": 1
}
```

**SDK Code**

```python
import requests

url = "https://api.aventure.vc/v1/entities/04e2bf9c-a100-72ad-83ff-ba69c647b30b/investors"

response = requests.get(url)

print(response.json())
```

```javascript
const url = 'https://api.aventure.vc/v1/entities/04e2bf9c-a100-72ad-83ff-ba69c647b30b/investors';
const options = {method: 'GET'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.aventure.vc/v1/entities/04e2bf9c-a100-72ad-83ff-ba69c647b30b/investors"

	req, _ := http.NewRequest("GET", url, nil)

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.aventure.vc/v1/entities/04e2bf9c-a100-72ad-83ff-ba69c647b30b/investors")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.aventure.vc/v1/entities/04e2bf9c-a100-72ad-83ff-ba69c647b30b/investors")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.aventure.vc/v1/entities/04e2bf9c-a100-72ad-83ff-ba69c647b30b/investors');

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.aventure.vc/v1/entities/04e2bf9c-a100-72ad-83ff-ba69c647b30b/investors");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://api.aventure.vc/v1/entities/04e2bf9c-a100-72ad-83ff-ba69c647b30b/investors")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```