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

# Get acquisition for an entity

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

VISIBILITY-GATED READ: a row is returned only when BOTH the acquired and acquirer entities are publicly visible. An acquisition relationship that already exists (and is visible in the entity relationships resource) but returns 404 here means one counterpart entity is still hidden -- publish that entity (statusSitemapShow=true, statusHidePage=false) -- it is an unmet visibility prerequisite, not data-layer inconsistency or projection lag. A gated miss on an existing row returns 404 with title 'Acquisition Exists but a Counterpart Entity Is Not Public'. The acquired/acquirer roles in each row are always declared explicitly in the response via the acquiredEntity and acquirerEntity fields. The role query parameter only selects which side the path entity occupies in the WHERE clause: acquired (default) lists acquisitions where the path entity was bought; acquirer lists acquisitions where the path entity was the buyer; all lists or reads both sides in one response. Writes (POST/PUT/PATCH/DELETE) ignore role and always treat the path entity as acquired.

Reference: https://docs.aventure.vc/api-reference/a-venture-api/entity-acquisitions/get-acquisition

## Authentication

- `X-Client-Secret` header (required) — Client secret for read-only service-to-service access (no writes)

## Request

### Path parameters

- `entityId` (string, required) — Entity UUID whose acquisition rows are being read or written.
- `relationshipId` (integer, required) — Acquisition relationship row id (entity_relationship.id).

### Query parameters

- `role` (enum, optional) — Selects which side the path entity occupies in the WHERE clause: `acquired` (default) lists rows where the path entity was bought; `acquirer` lists rows where the path entity was the buyer; `all` reads either side.
  - Allowed values: `acquired`, `acquirer`, `all`

## Response

### 200

OK

- `acquiredEntity` (object, required) — Acquired company — read-only nested display projection of the scoped path entity.
  - `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
- `acquirerEntity` (object, required) — Buyer — read-only nested display projection. Mutations identify the buyer only via the flat acquirerEntityId UUID, never a nested entity object.
  - `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
- `evidence` (object, required) — Booleans confirming each managed row written by the acquisition endpoint.
  - `fundraiseInvestorJoin` (boolean, required)
  - `fundraiseTransaction` (boolean, required)
  - `operatingStatus` (boolean, required)
  - `relationship` (boolean, required)
- `relationshipId` (integer, required)
- `status` (enum, required) — Read stage, not transactionStatus: Acquisition before operating-status change; Acquired Subsidiary for active completed acquisitions; Acquired for terminal/folded/closed.
  - Allowed values: `Acquisition`, `Acquired`, `Acquired Subsidiary`
- `amount` (long, optional, nullable)
- `announcedAt` (datetime, optional, nullable)
- `asOf` (date, optional, nullable)
- `completedAt` (datetime, optional, nullable)
- `createdAt` (datetime, optional, nullable)
- `currency` (string, optional, nullable)
- `dataConfidence` (enum, optional, nullable) — Fundraise data confidence label
  - Allowed values: `High`, `Medium`, `Low`, `Verified`
- `fundraiseTransactionId` (string, optional, nullable) — Canonical fundraise transaction UUID
- `investorJoinId` (string, optional, nullable) — Type-safe identifier for fundraise investor joins
- `source` (string, optional, nullable)
- `transactionStatus` (enum, optional, nullable) — Fundraise transaction status label
  - Allowed values: `Announced`, `Announced; subject to approvals and closing conditions`, `Active`, `Closed`, `Completed`, `In Progress`, `Open`
- `updatedAt` (datetime, optional, nullable)

## Examples

**Response**

```json
{
  "acquiredEntity": {
    "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"
  },
  "acquirerEntity": {
    "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"
  },
  "evidence": {
    "fundraiseInvestorJoin": true,
    "fundraiseTransaction": true,
    "operatingStatus": true,
    "relationship": true
  },
  "relationshipId": 1,
  "status": "Acquisition",
  "amount": 1,
  "announcedAt": "2024-01-15T09:30:00Z",
  "asOf": "2023-01-15",
  "completedAt": "2024-01-15T09:30:00Z",
  "createdAt": "2024-01-15T09:30:00Z",
  "currency": "string",
  "dataConfidence": "High",
  "fundraiseTransactionId": "string",
  "investorJoinId": "string",
  "source": "string",
  "transactionStatus": "Announced",
  "updatedAt": "2024-01-15T09:30:00Z"
}
```

**SDK Code**

```python
import requests

url = "https://api.aventure.vc/v1/entities/entityId/acquisitions/1"

headers = {"X-Client-Secret": "<apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.aventure.vc/v1/entities/entityId/acquisitions/1';
const options = {method: 'GET', headers: {'X-Client-Secret': '<apiKey>'}};

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/entityId/acquisitions/1"

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

	req.Header.Add("X-Client-Secret", "<apiKey>")

	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/entityId/acquisitions/1")

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

request = Net::HTTP::Get.new(url)
request["X-Client-Secret"] = '<apiKey>'

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/entityId/acquisitions/1")
  .header("X-Client-Secret", "<apiKey>")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.aventure.vc/v1/entities/entityId/acquisitions/1', [
  'headers' => [
    'X-Client-Secret' => '<apiKey>',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.aventure.vc/v1/entities/entityId/acquisitions/1");
var request = new RestRequest(Method.GET);
request.AddHeader("X-Client-Secret", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["X-Client-Secret": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.aventure.vc/v1/entities/entityId/acquisitions/1")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

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