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

# Create person

POST https://api.aventure.vc/v1/people/detail
Content-Type: application/json

Create a person. Duplicate conflicts return candidate details; override only after reviewing each candidate.

Reference: https://docs.aventure.vc/api-reference/a-venture-api/people/create-person-detail

## Authentication

- `Authorization` header (bearer token, required) — User bearer token: Supabase or Clerk session JWT, Clerk OAuth access token, or Clerk personal API key
- `X-API-Key` header (required) — Admin API key for system-to-system write operations

## Request

### Query parameters

- `sourceType` (enum, required) — Write provenance source type.
  - Allowed values: `requestChangeForm`, `newsArticle`, `blogArticle`, `firstPartyWebsite`, `relatedPartyWebsite`, `thirdPartyWebsite`, `llm`, `aventureStaff`
- `sourceDetail` (string, required) — Source detail or reviewer reference for the write.
- `sourceProvider` (string, optional) — Provider name for provider-native IDs or slugs.
- `sourceProviderId` (string, optional) — Provider-native source ID.
- `sourceProviderSlug` (string, optional) — Provider-native source slug.
- `actorType` (enum, optional) — Actor type; inferred as agent when agentChassis and agentModel are supplied, or as employee from an authenticated user JWT session.
  - Allowed values: `agent`, `employee`
- `agentChassis` (string, optional) — Agent chassis token for agent-authored writes.
- `agentModel` (string, optional) — Agent model id for agent-authored writes.
- `overrideGate` (enum, optional) — Gate to override from the prior ProblemDetail resolution.
  - Allowed values: `duplicate`, `entity-publication-requirements`, `square-logo-deletion`, `current-classification-removal`, `news-thumbnail-required`, `news-article-url-fetch`, `news-dated-slug`, `brand-match`, `type-structure-contradiction`
- `overrideReason` (string, optional) — Source-backed reason for overriding the returned gate requirement.
- `permitMonogram` (boolean, optional) — Permit monogram fallbacks

### Body (application/json)

- `person` (object, required) — Person fields to create.
  - `gender` (string, optional, nullable) — Gender
  - `image` (object, optional, nullable) — Profile image object
    - `picture` (string, optional, nullable) — Managed person picture path.
  - `nameFirst` (string, optional, nullable) — First name
  - `nameLast` (string, optional, nullable) — Last name
  - `nameMiddle` (string, optional, nullable) — Middle name
  - `newSlug` (string, optional, nullable) — Preferred detail-update slug rename field. Omit on create; when slug is also sent both fields must normalize to the same value.
  - `nickname` (string, optional, nullable) — Nickname
  - `slug` (string, optional, nullable) — Person URL slug. Required on create; detail updates may rename through this field or newSlug.
  - `source` (object, optional, nullable) — Source workflow metadata
    - `workflowStatus` (string, optional, nullable) — Workflow status label stored on the person source metadata
  - `status` (object, optional, nullable) — Visibility status object
    - `isHidden` (boolean, optional, nullable) — Set whether this person is hidden from public list and detail views.
    - `showOnSitemap` (boolean, optional, nullable) — Set whether this person is included in the public sitemap.
  - `suffix` (string, optional, nullable) — Name suffix
- `urlLink` (list of object, required) — URL links to create with the person; at least one is required
  - `crawlCdnProvider` (enum, optional, nullable) — CDN or hosting provider observed during crawl checks.
    - 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 observed during crawl checks.
    - Allowed values: `static`, `jsRequired`, `jsEnhanced`
  - `isCurrent` (boolean, optional, nullable) — Whether the owner currently uses this URL. Defaults true on create; update omits preserve the existing value. For terminal entity operatingStatus values (Acquired, Closed, Inactive), website rows must be written with isCurrent=false.
  - `isPrimary` (boolean, optional, nullable) — Whether this is the owner's primary URL for its urlType. Defaults true for current create rows; update omits preserve the existing value. Setting isCurrent=false forces isPrimary=false; terminal entities cannot have a current primary website row. Website primacy belongs to the homepage: while the owner has a current root-URL website row, a deep-path or query-carrying website URL cannot be primary — such a create is stored with isPrimary=false (even when requested true), and an update promoting one, or moving a primary row's URL across the root/deep boundary, is rejected (409).
  - `status` (string, optional, nullable) — Crawl/check status label, not lifecycle.
  - `statusChecked` (datetime, optional, nullable) — Last crawl/check timestamp.
  - `url` (string, optional, nullable) — Absolute owner URL (https://...), normalized before validation. Must be a page the owner actually operates. URL surface misclassification is rejected (422): news/press articles such as a dated article path or a techcrunch.com/businesswire.com/forbes.com article — record it through the owner's canonical news create surface, NEVER as a website link; domain-marketplace/for-sale pages (dan.com, hugedomains.com, ...); and binary assets (.png/.pdf/...). Eponymous Product/Service full-create may omit the entire URL link array when no distinct official page URL exists. Submit either `www.` or apex host form; after write the stored host form is normalized from live evidence — apex (no `www.`) when that route serves healthy without redirecting to `www.`, the `www.` form otherwise — so the persisted URL may differ from the submitted one by its `www.` label.
  - `urlType` (string, optional, nullable) — Canonical platform role for the URL, from EntityUrlType (website, linkedin, twitter, github, crunchbase, wikipedia, appstore, ...). Pick the platform the URL host belongs to for owner-specific platform paths. Platform host roots and first-party product pages stay `website`; security quote paths, social profiles, marketplace listings, and similar owner-specific platform paths use their platform type. Lifecycle (former domain, rebrand source) lives on isCurrent/isPrimary, never here. Required on create unless inferable from the URL host/path.

## Response

### 201

Created

- `association` (list of object, required) — Entity associations for this person
  - `associationId` (integer, required) — Integer person-entity association join row id, not a person or entity UUID
  - `entityAddress` (list of object, required) — Entity addresses carried on the association projection
    - `address` (integer, optional, nullable) — Legacy address row identifier
    - `addressLine1` (string, optional, nullable)
    - `addressLine2` (string, optional, nullable)
    - `association` (list of object, optional) — Role-period associations for this physical address
      - `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
    - `city` (object, optional, nullable) — City reference
      - `name` (string, required) — City name
      - `id` (integer, optional, nullable)
    - `country` (object, optional, nullable) — Country reference
      - `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)
    - `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` (object, optional, nullable) — State or region reference
      - `name` (string, required) — State or region name
      - `id` (integer, optional, nullable)
      - `stateAbbrev` (string, optional, nullable) — State or region abbreviation
    - `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
  - `entityId` (string, required) — Associated entity id
  - `entityLogo` (object, required) — Entity logo image projection
    - `isMonogram` (boolean, required) — Whether entity image monogram
    - `logo` (string, optional, nullable)
    - `logoSquare` (string, optional, nullable)
  - `entitySlug` (string, required) — Canonical lowercase URL slug for the resource
  - `entityUrlLink` (list of object, required) — Entity URL links carried on the association projection
    - `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`
    - `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` (object, 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.
      - `entityId` (string, optional, nullable) — Canonical entity UUID
      - `personId` (string, optional, nullable) — Canonical person UUID
    - `sourceId` (string, optional, nullable)
    - `status` (string, optional, nullable)
    - `statusChecked` (datetime, optional, nullable)
    - `updatedAt` (datetime, optional, nullable)
  - `personAddress` (list of object, required) — Person addresses carried on the association projection
    - `address` (integer, optional, nullable) — Legacy address row identifier
    - `addressLine1` (string, optional, nullable)
    - `addressLine2` (string, optional, nullable)
    - `association` (list of object, optional) — Role-period associations for this physical address
      - `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
    - `city` (object, optional, nullable) — City reference
      - `name` (string, required) — City name
      - `id` (integer, optional, nullable)
    - `country` (object, optional, nullable) — Country reference
      - `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)
    - `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` (object, optional, nullable) — State or region reference
      - `name` (string, required) — State or region name
      - `id` (integer, optional, nullable)
      - `stateAbbrev` (string, optional, nullable) — State or region abbreviation
    - `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
  - `personId` (string, required) — Associated person id
  - `personImage` (object, required) — Person image projection
    - `isMonogram` (boolean, required) — Whether person image monogram
    - `picture` (string, optional, nullable)
  - `personName` (string, required)
  - `personSlug` (string, required) — Canonical lowercase URL slug for the resource
  - `personUrlLink` (list of object, required) — Person URL links carried on the association projection
    - `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`
    - `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` (object, 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.
      - `entityId` (string, optional, nullable) — Canonical entity UUID
      - `personId` (string, optional, nullable) — Canonical person UUID
    - `sourceId` (string, optional, nullable)
    - `status` (string, optional, nullable)
    - `statusChecked` (datetime, optional, nullable)
    - `updatedAt` (datetime, optional, nullable)
  - `createdAt` (datetime, optional, nullable)
  - `creator` (string, optional, nullable) — Association creator label
  - `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
  - `updatedAt` (datetime, optional, nullable)
- `core` (object, required) — Canonical person core record
  - `id` (string, required) — Canonical person UUID
  - `image` (object, required) — Read projection: person image fields for detail/list responses
    - `isMonogram` (boolean, required) — Whether person image monogram
    - `picture` (string, optional, nullable)
  - `nameAlias` (list of object, required) — Display and search aliases for this person
    - `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`
  - `nameFull` (string, required)
  - `slug` (string, required) — Canonical lowercase URL slug for the resource
  - `source` (object, required) — Grouped source/provenance metadata for private v1 response fields
    - `changedAt` (datetime, optional, nullable)
    - `dataSourceUpdatedAt` (datetime, optional, nullable)
    - `detail` (string, optional, nullable)
    - `kind` (string, optional, nullable)
    - `pendingApproval` (integer, optional, nullable)
    - `sourceId` (string, optional, nullable)
    - `status` (string, optional, nullable)
  - `text` (object, required) — Grouped 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
  - `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` (object, optional, nullable) — Semantic embedding match evidence populated only for semantic people reads.
    - `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`
  - `suffix` (string, optional, nullable)
  - `updatedAt` (datetime, optional, nullable) — Last modification timestamp
- `enrichment` (object, required) — Supplemental person data — addresses and URL links
  - `address` (list of object, required) — Addresses associated with the person
    - `address` (integer, optional, nullable) — Legacy address row identifier
    - `addressLine1` (string, optional, nullable)
    - `addressLine2` (string, optional, nullable)
    - `association` (list of object, optional) — Role-period associations for this physical address
      - `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
    - `city` (object, optional, nullable) — City reference
      - `name` (string, required) — City name
      - `id` (integer, optional, nullable)
    - `country` (object, optional, nullable) — Country reference
      - `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)
    - `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` (object, optional, nullable) — State or region reference
      - `name` (string, required) — State or region name
      - `id` (integer, optional, nullable)
      - `stateAbbrev` (string, optional, nullable) — State or region abbreviation
    - `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
  - `urlLink` (list of object, required) — External and social URL links associated with the person
    - `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`
    - `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` (object, 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.
      - `entityId` (string, optional, nullable) — Canonical entity UUID
      - `personId` (string, optional, nullable) — Canonical person UUID
    - `sourceId` (string, optional, nullable)
    - `status` (string, optional, nullable)
    - `statusChecked` (datetime, optional, nullable)
    - `updatedAt` (datetime, optional, nullable)
- `investment` (list of object, required) — Investments associated with this person
  - `company` (object, required) — Company metadata associated with a person investment
    - `entity` (object, 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 thin-mode (?mode=thin) and alphabetical (?letter=X) list endpoints. Nested as .core inside EntityList for default list reads and EntityDetail for detail reads.
      - `id` (string, required) — Unique entity identifier
      - `image` (object, required) — Logo and monogram image metadata
        - `isMonogram` (boolean, required) — Whether entity image monogram
        - `logo` (string, optional, nullable)
        - `logoSquare` (string, optional, nullable)
      - `nameAlias` (list of object, 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.
        - `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`
      - `nameBrand` (string, required) — Resolved display brand name
      - `slug` (string, required) — URL-safe identifier
      - `createdAt` (datetime, optional, nullable) — Record creation timestamp
      - `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 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` (object, optional, nullable) — Sub-route eligibility, populated by the sitemap projection. Null on non-sitemap reads to keep thin payloads compact.
        - `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.
      - `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
  - `fundraiseTransactionId` (string, required) — Canonical fundraise transaction UUID
  - `id` (string, required)
  - `investmentDate` (datetime, required)
  - `amount` (double, optional, nullable)
  - `date` (datetime, optional, nullable)
  - `fundraiseTransaction` (object, optional, nullable) — Fundraise transaction metadata linked to a person investment
    - `id` (string, required) — Canonical fundraise transaction UUID
    - `image` (object, required) — 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)
    - `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)
  - `investorAttribution` (object, 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.
    - `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` (object, optional, nullable) — Round label for the attributed participation
      - `round` (string, required)
  - `round` (string, optional, nullable)
- `nameAlias` (list of object, required) — Display and search aliases for this person
  - `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`
- `articleCount` (integer, optional, nullable)
- `pendingApproval` (integer, optional, nullable)

## Examples

**Request**

```json
{
  "urlLink": [
    {}
  ]
}
```

**Response**

```json
{
  "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"
        }
      ],
      "createdAt": "2024-01-15T09:30:00Z",
      "creator": "string",
      "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",
      "updatedAt": "2024-01-15T09:30:00Z"
    }
  ],
  "core": {
    "id": "string",
    "image": {
      "isMonogram": true,
      "picture": "string"
    },
    "nameAlias": [
      {
        "name": "Bun",
        "displayable": true,
        "type": "nickname"
      }
    ],
    "nameFull": "string",
    "slug": "aventure-vc",
    "source": {
      "changedAt": "2024-01-15T09:30:00Z",
      "dataSourceUpdatedAt": "2024-01-15T09:30:00Z",
      "detail": "string",
      "kind": "string",
      "pendingApproval": 1,
      "sourceId": "string",
      "status": "string"
    },
    "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",
          "createdAt": "2024-01-15T09:30:00Z",
          "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,
  "pendingApproval": 1
}
```

**SDK Code**

```python
import requests

url = "https://api.aventure.vc/v1/people/detail"

querystring = {"actorType":"agent","agentChassis":"codex-cli","sourceDetail":"aventure.vc","sourceProvider":"TechCrunch","sourceProviderId":"tc-2026-05-20-example-round","sourceProviderSlug":"example-round","sourceType":"requestChangeForm"}

payload = { "urlLink": [{}] }
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://api.aventure.vc/v1/people/detail?actorType=agent&agentChassis=codex-cli&sourceDetail=aventure.vc&sourceProvider=TechCrunch&sourceProviderId=tc-2026-05-20-example-round&sourceProviderSlug=example-round&sourceType=requestChangeForm';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"urlLink":[{}]}'
};

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"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.aventure.vc/v1/people/detail?actorType=agent&agentChassis=codex-cli&sourceDetail=aventure.vc&sourceProvider=TechCrunch&sourceProviderId=tc-2026-05-20-example-round&sourceProviderSlug=example-round&sourceType=requestChangeForm"

	payload := strings.NewReader("{\n  \"urlLink\": [\n    {}\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	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/people/detail?actorType=agent&agentChassis=codex-cli&sourceDetail=aventure.vc&sourceProvider=TechCrunch&sourceProviderId=tc-2026-05-20-example-round&sourceProviderSlug=example-round&sourceType=requestChangeForm")

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

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"urlLink\": [\n    {}\n  ]\n}"

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.post("https://api.aventure.vc/v1/people/detail?actorType=agent&agentChassis=codex-cli&sourceDetail=aventure.vc&sourceProvider=TechCrunch&sourceProviderId=tc-2026-05-20-example-round&sourceProviderSlug=example-round&sourceType=requestChangeForm")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"urlLink\": [\n    {}\n  ]\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.aventure.vc/v1/people/detail?actorType=agent&agentChassis=codex-cli&sourceDetail=aventure.vc&sourceProvider=TechCrunch&sourceProviderId=tc-2026-05-20-example-round&sourceProviderSlug=example-round&sourceType=requestChangeForm', [
  'body' => '{
  "urlLink": [
    {}
  ]
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.aventure.vc/v1/people/detail?actorType=agent&agentChassis=codex-cli&sourceDetail=aventure.vc&sourceProvider=TechCrunch&sourceProviderId=tc-2026-05-20-example-round&sourceProviderSlug=example-round&sourceType=requestChangeForm");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"urlLink\": [\n    {}\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = ["urlLink": [[]]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.aventure.vc/v1/people/detail?actorType=agent&agentChassis=codex-cli&sourceDetail=aventure.vc&sourceProvider=TechCrunch&sourceProviderId=tc-2026-05-20-example-round&sourceProviderSlug=example-round&sourceType=requestChangeForm")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```