# Business Radar API reference

Source: https://help.businessradar.com/api
OpenAPI schema: https://api.businessradar.com/ext/v3/schema
Schema version: 0.0.1 (v3)
Base URL: https://api.businessradar.com
Endpoints: 39

## Overview

The Business Radar API provides powerful tools to screen & monitor companies using news & compliance, allowing you to integrate real-time insights into your own applications.

#### Getting Started
To use this API, you need an API Key. Please contact [support@businessradar.com](mailto:support@businessradar.com) to request your key. Once you have a key, you can enter it by clicking the **Authorize** button on the right to start making requests directly from this documentation.

#### Authentication
The API key can be provided through the `Authorization` header when making raw requests. For our SDKs, the API key can also be saved as an environmental variable. In this documentation, each endpoint shows the full request, including headers, when invoked.

#### SDKs
We offer officially supported SDKs to help you get started quickly:
- **Python**: [businessradar-sdk-python](https://github.com/businessradar/businessradar-sdk-python)
- **TypeScript / JavaScript**: [businessradar-sdk-typescript](https://github.com/businessradar/businessradar-sdk-typescript)
- **PHP**: [businessradar-sdk-php](https://github.com/businessradar/businessradar-sdk-php)

#### Pagination
The API uses cursor-based pagination for high performance and reliability. When a request returns more results than the page limit, a `next_key` is included in the response. To fetch the next set of results, include this `next_key` as a query parameter in your next request. If `next_key` is `null`, it means you have reached the end of the available results. The `total_results` field provides the total count of matches found for your query.

#### Asynchronous Processing
Several endpoints in the Business Radar API are asynchronous. This means that once a request is posted, Business Radar processes it in the background. To check the progress and/or retrieve the final result, you can use the equivalent GET endpoint for that resource.

#### Webhooks
Webhooks allow Business Radar to push real-time event notifications to your application the moment something changes, without polling. When an event occurs, Business Radar sends an HTTP POST request containing a JSON payload to the URL you registered.

**Payload envelope**

Every delivery body carries an `event_type` field identifying the subscription that triggered it, alongside the event-specific payload under a named field (see the table below):

```json
{"event_type": "compliance_check.status_changed", "compliance_check": { ... }}
```

`event_type` always matches the subscription, and the payload field (e.g. `compliance_check`, `registration`) holds the event data.

**Setup**

Create a webhook and subscribe to one or more event types via the `/ext/v3/webhooks/` endpoints. Each webhook has a secret used to sign deliveries so you can verify they originated from Business Radar.

**Event types**

| Event type | Trigger | Payload field | Field schema |
|---|---|---|---|
| `compliance_check.status_changed` | Every status update on a compliance check | `compliance_check` | [ComplianceCheckList](#schema-ComplianceCheckList) |
| `compliance_check.status_completed` | Compliance check reaches `completed` status | `compliance_check` | [ComplianceCheckList](#schema-ComplianceCheckList) |
| `compliance_check.results.new` | New compliance results identified during monitoring | `compliance_check` | [ComplianceCheckList](#schema-ComplianceCheckList) |
| `company_registration.status_changed` | Every status update on a company registration | `registration` | [Registration](#schema-Registration) |
| `company_registration.status_registered` | Registration reaches `registered` status | `registration` | [Registration](#schema-Registration) |
| `company.updated` | A tracked company's attributes change (e.g. a D&B refresh) | `company`, `attribute_changes` | [Company](#schema-Company), [CompanyAttributeChange](#schema-CompanyAttributeChange) |

`company.updated` subscriptions are **portfolio-scoped**: provide a `portfolio` when subscribing, and the event fires only for changes to companies in that portfolio.

**Payload verification**

Every delivery includes an `X-Signature-SHA256` header of the form `sha256=<hex>`. To verify authenticity, compute `HMAC-SHA256` over the raw request body using your webhook secret and compare it to the value after `sha256=`. Reject any delivery where the signatures do not match.

The secret is shown once when you create the webhook and once each time you call the `regenerate_secret` endpoint. **Rotating the secret immediately invalidates the old one** — update your verification code with the new value before rotating, or deliveries will start failing signature checks.

<details>
<summary>Python verification example</summary>

```python
import hashlib
import hmac

def verify_signature(raw_body: bytes, secret: str, header: str) -> bool:
    """Return True if the X-Signature-SHA256 header is valid."""
    digest = hmac.new(secret.encode(), raw_body, hashlib.sha256)
    expected = digest.hexdigest()
    received = header.removeprefix("sha256=")
    return hmac.compare_digest(expected, received)
```

In a Django view:

```python
import json

def webhook(request):
    if not verify_signature(
        request.body,
        secret=YOUR_WEBHOOK_SECRET,
        header=request.headers.get("X-Signature-SHA256", ""),
    ):
        return HttpResponse(status=400)
    payload = json.loads(request.body)
    event_type = payload["event_type"]
    # payload also holds the event-specific field, e.g. payload["compliance_check"]
    # process event ...
```

</details>

**Retries**

If your endpoint does not respond with a 2xx status code, Business Radar retries the delivery up to 3 times with exponential back-off. After all retries are exhausted the delivery is marked `failed`. Deliveries are deduplicated — the same event is never delivered more than once per subscription.

## Authentication

### tokenAuth

Send the token in the `Authorization` header: `Authorization: Bearer <token>`.

Use your API token. Example: Authorization: Bearer <token>

## Endpoints

- Articles: `GET /ext/v3/articles`, `GET /ext/v3/articles/{article_id}/related/`, `GET /ext/v3/articles/analytics/dates/`, `POST /ext/v3/articles/export/`, `GET /ext/v3/articles/export/{external_id}`, `POST /ext/v3/articles/feedback/`, `GET /ext/v3/saved_article_filters`
- Companies: `GET /ext/v3/companies`, `POST /ext/v3/companies`, `GET /ext/v3/companies/{external_id}`, `GET /ext/v3/companies/attribute_changes`, `POST /ext/v3/companies/feedback/`, `GET /ext/v3/companies/investigations`, `POST /ext/v3/companies/investigations`, `GET /ext/v3/companies/investigations/{external_id}`, `GET /ext/v3/companies/match/`, `GET /ext/v3/registrations/{registration_id}`
- Compliance: `GET /ext/v3/compliance`, `POST /ext/v3/compliance`, `GET /ext/v3/compliance/{external_id}`, `GET /ext/v3/compliance/{external_id}/results`
- Portfolios: `GET /ext/v3/portfolios`, `POST /ext/v3/portfolios`, `GET /ext/v3/portfolios/{portfolio_id}/companies`, `POST /ext/v3/portfolios/{portfolio_id}/companies`, `DELETE /ext/v3/portfolios/{portfolio_id}/companies/{external_id}`
- Webhooks: `GET /ext/v3/webhooks/`, `POST /ext/v3/webhooks/`, `GET /ext/v3/webhooks/{webhook_external_id}/`, `PUT /ext/v3/webhooks/{webhook_external_id}/`, `PATCH /ext/v3/webhooks/{webhook_external_id}/`, `DELETE /ext/v3/webhooks/{webhook_external_id}/`, `GET /ext/v3/webhooks/{webhook_external_id}/deliveries/`, `POST /ext/v3/webhooks/{webhook_external_id}/deliveries/test/`, `POST /ext/v3/webhooks/{webhook_external_id}/regenerate_secret/`, `GET /ext/v3/webhooks/{webhook_external_id}/subscriptions/`, `POST /ext/v3/webhooks/{webhook_external_id}/subscriptions/`, `DELETE /ext/v3/webhooks/{webhook_external_id}/subscriptions/{subscription_external_id}/`, `GET /ext/v3/webhooks/event_types/`

### Articles

<a id="operation-ext_v3_articles_list"></a>

#### `GET /ext/v3/articles`

Operation ID: `ext_v3_articles_list`

##### Search News Articles

Retrieve articles matching the specified search criteria. Advanced queries and
incremental checks (using publication/creation dates) are supported.

Return `results`, `total_results`, and a `next_key` for continuation.
`page_size` defaults to 30 and accepts integers from 1 through 100.
Invalid page sizes, filters, or undecodable cursors raise `ValidationError`
(400). Company-specific filters also enforce available company credits,
raising `CreditsExhausted` (403) when blocked.

Query parse and tokenizer errors from OpenSearch become
`InvalidArticleFiltersError` (400); other search errors propagate.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `category` | query | array of string (uuid) | no | Filter by article Category IDs (UUIDs). |
| `company` | query | array of string (uuid) | no | Filter by internal Company UUIDs. |
| `country` | query | array of string | no | Filter by ISO 2-letter Country Codes (e.g., 'US', 'GB'). |
| `disable_company_article_deduplication` | query | boolean | no | By default, companies with the same trade names are grouped and the best match is selected. Enable this to see all associated companies. Default: `false`. |
| `duns_number` | query | array of string | no | Filter by one or more 9-digit Dun & Bradstreet Numbers. |
| `global_ultimate` | query | array of string | no | Filter by Global Ultimate DUNS Numbers. |
| `include_clustered_articles` | query | boolean | no | Include articles that are part of a cluster (reprints or similar articles). Default: `false`. |
| `is_material` | query | boolean | no | Filter by materiality flag (relevance to business risk). |
| `language` | query | array of string | no | Filter by ISO 2-letter Language Codes (e.g., 'en', 'nl'). |
| `max_creation_date` | query | string (date-time) | no | Filter articles added to our database at or before this date/time. |
| `max_publication_date` | query | string (date-time) | no | Filter articles published at or before this date/time. |
| `min_creation_date` | query | string (date-time) | no | Filter articles added to our database at or after this date/time. |
| `min_publication_date` | query | string (date-time) | no | Filter articles published at or after this date/time. |
| `next_key` | query | string | no | A cursor value used for pagination. Include the `next_key` value from your previous request to retrieve the subsequent page of results. If this value is `null`, the first page of results is returned. |
| `page_size` | query | integer | no | Number of results per page. Default 30, max 100. |
| `portfolio_id` | query | array of string (uuid) | no | Filter articles related to companies in specific Portfolios (UUIDs). |
| `query` | query | string | no | Full-text search query for filtering articles by content. |
| `registration_number` | query | array of string | no | Filter by local company registration numbers. |
| `saved_article_filter_id` | query | string (uuid) | no | Apply a previously saved set of article filters (UUID). |
| `sentiment` | query | boolean | no | Filter by sentiment: `true` for positive, `false` for negative. |
| `sorting` | query | string | no | Sort articles. Use 'priority' to sort primarily by category priority (publication date as tiebreaker), surfacing the most important articles across the whole result set regardless of date. Lower numeric priority values indicate higher priority, so use sorting_order=asc for best-first ordering. One of: `creation_date`, `priority`, `publication_date_clustering`, `publication_date_priority`, `publication_date_source_references`, `publication_datetime`. Default: `"publication_datetime"`. |
| `sorting_order` | query | string | no | Sort order. One of: `asc`, `desc`. Default: `"desc"`. |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [PaginatedArticleList](#schema-PaginatedArticleList) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.news.articles.list()` · TypeScript: `client.news.articles.list()`

<a id="operation-ext_v3_articles_related_list"></a>

#### `GET /ext/v3/articles/{article_id}/related/`

Operation ID: `ext_v3_articles_related_list`

##### Find Related Articles

Retrieve a list of articles that are semantically similar to the specified article,
ranked by similarity distance.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `article_id` | path | string (uuid) | yes |  |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | array of [RelatedArticle](#schema-RelatedArticle) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.news.articles.retrieve_related()` · TypeScript: `client.news.articles.retrieveRelated()`

<a id="operation-ext_v3_articles_analytics_dates_list"></a>

#### `GET /ext/v3/articles/analytics/dates/`

Operation ID: `ext_v3_articles_analytics_dates_list`

##### Get Article Aggregations

Retrieve the number of articles and their average sentiment, grouped by date.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `category` | query | array of string (uuid) | no | Filter by article Category IDs (UUIDs). |
| `company` | query | array of string (uuid) | no | Filter by internal Company UUIDs. |
| `country` | query | array of string | no | Filter by ISO 2-letter Country Codes (e.g., 'US', 'GB'). |
| `disable_company_article_deduplication` | query | boolean | no | By default, companies with the same trade names are grouped and the best match is selected. Enable this to see all associated companies. Default: `false`. |
| `duns_number` | query | array of string | no | Filter by one or more 9-digit Dun & Bradstreet Numbers. |
| `global_ultimate` | query | array of string | no | Filter by Global Ultimate DUNS Numbers. |
| `include_clustered_articles` | query | boolean | no | Include articles that are part of a cluster (reprints or similar articles). Default: `false`. |
| `interval` | query | string | no | The time interval for aggregation. One of: `day`, `month`, `week`, `year`. Default: `"day"`. |
| `is_material` | query | boolean | no | Filter by materiality flag (relevance to business risk). |
| `language` | query | array of string | no | Filter by ISO 2-letter Language Codes (e.g., 'en', 'nl'). |
| `max_creation_date` | query | string (date-time) | no | Filter articles added to our database at or before this date/time. |
| `max_publication_date` | query | string (date-time) | no | Filter articles published at or before this date/time. |
| `min_creation_date` | query | string (date-time) | no | Filter articles added to our database at or after this date/time. |
| `min_publication_date` | query | string (date-time) | no | Filter articles published at or after this date/time. |
| `page_size` | query | integer | no | Number of results per page. Default 30, max 100. |
| `portfolio_id` | query | array of string (uuid) | no | Filter articles related to companies in specific Portfolios (UUIDs). |
| `query` | query | string | no | Full-text search query for filtering articles by content. |
| `registration_number` | query | array of string | no | Filter by local company registration numbers. |
| `saved_article_filter_id` | query | string (uuid) | no | Apply a previously saved set of article filters (UUID). |
| `sentiment` | query | boolean | no | Filter by sentiment: `true` for positive, `false` for negative. |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | array of [ArticleDateAggregation](#schema-ArticleDateAggregation) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.news.articles.analytics.get_count_by_date()` · TypeScript: `client.news.articles.analytics.getCountByDate()`

<a id="operation-ext_v3_articles_export_create"></a>

#### `POST /ext/v3/articles/export/`

Operation ID: `ext_v3_articles_export_create`

##### Export Articles (Asynchronous)

Request an asynchronous export of articles matching specific filters. Once
requested, Business Radar processes the export in the background.

To check the status and retrieve the download link, you can use the [GET
/articles/export/{external_id}](#operation-ext_v3_articles_export_retrieve)
endpoint.

The export process returns a reference to a JSON-Lines file stored on S3, which
remains available for 7 days.

*Limit: 25,000 articles per export.*

**Request body** (`application/json`, required)

Schema: [ArticleExportRequest](#schema-ArticleExportRequest)

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 201 |  | [ArticleExport](#schema-ArticleExport) (`application/json`) |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.news.articles.export.create()` · TypeScript: `client.news.articles.export.create()`

<a id="operation-ext_v3_articles_export_retrieve"></a>

#### `GET /ext/v3/articles/export/{external_id}`

Operation ID: `ext_v3_articles_export_retrieve`

##### Export Status & Details

Check the status of an ongoing export or retrieve the download link for a completed
export.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `external_id` | path | string (uuid) | yes |  |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [ArticleExport](#schema-ArticleExport) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 404 | The requested resource was not found. | [NotFoundError](#schema-NotFoundError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.news.articles.export.retrieve()` · TypeScript: `client.news.articles.export.retrieve()`

<a id="operation-ext_v3_articles_feedback_create"></a>

#### `POST /ext/v3/articles/feedback/`

Operation ID: `ext_v3_articles_feedback_create`

##### Submit Article Feedback

Submit feedback for a specific article. This helps improve our analysis and
relevance.

**Request body** (`application/json`, required)

Schema: [ExternalArticleFeedbackRequest](#schema-ExternalArticleFeedbackRequest)

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 201 |  | [ExternalArticleFeedback](#schema-ExternalArticleFeedback) (`application/json`) |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.news.articles.create_feedback()` · TypeScript: `client.news.articles.createFeedback()`

<a id="operation-ext_v3_saved_article_filters_list"></a>

#### `GET /ext/v3/saved_article_filters`

Operation ID: `ext_v3_saved_article_filters_list`

##### Saved Article Filters

Retrieve a list of all search filters saved by the current profile. These filters
can be applied to article search requests using the `saved_article_filter_id`
parameter.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `next_key` | query | string | no | A cursor value used for pagination. Include the `next_key` value from your previous request to retrieve the subsequent page of results. If this value is `null`, the first page of results is returned. |
| `page_size` | query | integer | no | Number of results per page. Default 50, max 100. |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [PaginatedSavedArticleFilterList](#schema-PaginatedSavedArticleFilterList) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.news.articles.list_saved_article_filters()` · TypeScript: `client.news.articles.listSavedArticleFilters()`

### Companies

<a id="operation-ext_v3_companies_list"></a>

#### `GET /ext/v3/companies`

Operation ID: `ext_v3_companies_list`

##### Search Companies

Search for companies across internal and external databases.

- A nonempty `query` with at most one `country` uses Dun & Bradstreet
unless a website domain or additional filters require internal search.

- A resolved website domain, multiple countries, no query, or additional
filters (like `portfolio_id`) select internal search. `registration_number`,
`include_annotations`, `page_size`, and `next_key` do not change routing.

The results include an `external_id` if the company is already registered in
Business Radar.

`page_size` defaults to 50 and accepts integers from 1 through 100;
invalid sizes or filters raise `ValidationError` (400). Internal results
support `next_key` continuation; undecodable cursors raise `ValidationError`.
Dun & Bradstreet requests are capped at 50, ignore `next_key`, and return
a null cursor with `total_results` equal to the returned result count.

Dun & Bradstreet 404 responses become empty results. Its throttling,
invalid-input, and connection exceptions propagate, as do internal search
errors. Website parsing failures fall back to the supplied URL unchanged.

`min_created_at`, `max_created_at`, `min_updated_at` and `max_updated_at`
filter on when a company was added or last updated (inclusive, ISO 8601,
UTC). They use internal search, sort results by that timestamp, and cannot
be combined with `query`.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `country` | query | array of string | no | ISO 2-letter Country Code (e.g., NL, US) |
| `duns_number` | query | array of string | no | 9-digit Dun And Bradstreet Number (can be multiple) |
| `is_listed` | query | boolean | no | Filter on publicly listed companies (has a `ticker_symbol`) |
| `max_created_at` | query | string (date-time) | no | Companies added at or before this time (inclusive). ISO 8601, UTC when no offset is given, millisecond precision. Cannot be combined with `query`. |
| `max_updated_at` | query | string (date-time) | no | Companies updated at or before this time (inclusive). ISO 8601, UTC when no offset is given, millisecond precision. Cannot be combined with `query`. |
| `min_created_at` | query | string (date-time) | no | Companies added at or after this time (inclusive). ISO 8601, UTC when no offset is given, millisecond precision. Cannot be combined with `query`. |
| `min_updated_at` | query | string (date-time) | no | Companies updated at or after this time (inclusive). ISO 8601, UTC when no offset is given, millisecond precision. Cannot be combined with `query`. |
| `next_key` | query | string | no | A cursor value used for pagination. Include the `next_key` value from your previous request to retrieve the subsequent page of results. If this value is `null`, the first page of results is returned. |
| `page_size` | query | integer | no | Number of results per page. Default 50, max 100. Dun & Bradstreet results (no other filters besides `query`/`country`) are capped at 50 and do not support continuation. |
| `portfolio_id` | query | array of string (uuid) | no | Filter companies belonging to specific Portfolio IDs (UUID) |
| `query` | query | string | no | Custom search query to text search all companies. |
| `registration_number` | query | array of string | no | Local Registration Number (can be multiple) |
| `website_url` | query | string | no | Website URL to search for the company |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [PaginatedUniversalCompanyList](#schema-PaginatedUniversalCompanyList) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.companies.list()` · TypeScript: `client.companies.list()`

<a id="operation-ext_v3_companies_create"></a>

#### `POST /ext/v3/companies`

Operation ID: `ext_v3_companies_create`

##### Register Company (Asynchronous)

Register a new company to Business Radar using its identification details. Once
posted, Business Radar processes the request in the background.

To check the progress and/or retrieve the final result, you can use the [GET
/registrations/{registration_id}](#operation-ext_v3_registrations_retrieve)
endpoint.

If the company is already registered, the existing registration will be
returned.

**Request body** (`application/json`)

Schema: [RegistrationRequest](#schema-RegistrationRequest)

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [Registration](#schema-Registration) (`application/json`) |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.companies.create()` · TypeScript: `client.companies.create()`

<a id="operation-ext_v3_companies_retrieve"></a>

#### `GET /ext/v3/companies/{external_id}`

Operation ID: `ext_v3_companies_retrieve`

##### Retrieve Company Information

Fetch detailed information about a specific company using its `external_id`.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `external_id` | path | string (uuid) | yes |  |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [Company](#schema-Company) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 404 | The requested resource was not found. | [NotFoundError](#schema-NotFoundError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.companies.retrieve()` · TypeScript: `client.companies.retrieve()`

<a id="operation-ext_v3_companies_attribute_changes_list"></a>

#### `GET /ext/v3/companies/attribute_changes`

Operation ID: `ext_v3_companies_attribute_changes_list`

##### List Company Updates

Retrieve a list of attribute changes for companies. This allows monitoring how
company data has evolved over time.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `max_created_at` | query | string (date-time) | no | Filter updates created at or before this time. |
| `min_created_at` | query | string (date-time) | no | Filter updates created at or after this time. |
| `next_key` | query | string | no | A cursor value used for pagination. Include the `next_key` value from your previous request to retrieve the subsequent page of results. If this value is `null`, the first page of results is returned. |
| `page_size` | query | integer | no | Number of results per page. Default 50, max 100. |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [PaginatedCompanyAttributeChangeList](#schema-PaginatedCompanyAttributeChangeList) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.companies.list_attribute_changes()` · TypeScript: `client.companies.listAttributeChanges()`

<a id="operation-ext_v3_companies_feedback_create"></a>

#### `POST /ext/v3/companies/feedback/`

Operation ID: `ext_v3_companies_feedback_create`

##### Submit Company Feedback

Submit feedback about a specific company. If feedback already exists for
the same company and profile, the existing record is updated.

Optionally provide a `notification_email` to be notified when the feedback
is resolved.

**Request body** (`application/json`, required)

Schema: [CompanyFeedbackRequest](#schema-CompanyFeedbackRequest)

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 201 |  | [CompanyFeedback](#schema-CompanyFeedback) (`application/json`) |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.companies.create_feedback()` · TypeScript: `client.companies.createFeedback()`

<a id="operation-ext_v3_companies_investigations_list"></a>

#### `GET /ext/v3/companies/investigations`

Operation ID: `ext_v3_companies_investigations_list`

##### Missing Company Investigations

List existing investigations or submit a new one for a company that could not be
found.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `next_key` | query | string | no | A cursor value used for pagination. Include the `next_key` value from your previous request to retrieve the subsequent page of results. If this value is `null`, the first page of results is returned. |
| `page_size` | query | integer | no | Number of results per page. Default 50, max 100. |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [PaginatedCompanyInvestigationList](#schema-PaginatedCompanyInvestigationList) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.companies.list_missing_company_investigations()` · TypeScript: `client.companies.listMissingCompanyInvestigations()`

<a id="operation-ext_v3_companies_investigations_create"></a>

#### `POST /ext/v3/companies/investigations`

Operation ID: `ext_v3_companies_investigations_create`

##### Submit Missing Company Investigation (Asynchronous)

Submit a new investigation for a company that could not be found. Once
submitted, Business Radar processes the investigation in the background.

To check the progress and/or retrieve the final result, you can use the GET
endpoint.

**Request body** (`application/json`, required)

Schema: [CompanyInvestigationRequest](#schema-CompanyInvestigationRequest)

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 201 |  | [CompanyInvestigation](#schema-CompanyInvestigation) (`application/json`) |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.companies.create_missing_company_investigation()` · TypeScript: `client.companies.createMissingCompanyInvestigation()`

<a id="operation-ext_v3_companies_investigations_retrieve"></a>

#### `GET /ext/v3/companies/investigations/{external_id}`

Operation ID: `ext_v3_companies_investigations_retrieve`

##### Retrieve Missing Company Investigation

Fetch details about a specific missing company investigation using its
`external_id`.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `external_id` | path | string (uuid) | yes |  |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [CompanyInvestigation](#schema-CompanyInvestigation) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 404 | The requested resource was not found. | [NotFoundError](#schema-NotFoundError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.companies.retrieve_missing_company_investigation()` · TypeScript: `client.companies.retrieveMissingCompanyInvestigation()`

<a id="operation-ext_v3_companies_match_retrieve"></a>

#### `GET /ext/v3/companies/match/`

Operation ID: `ext_v3_companies_match_retrieve`

##### Match a Single Company

Resolve a set of identifying details to the single best-matching company.

Provide as many identifying details as you have. At least one of `name`,
`duns_number`, `registration_number` or `customer_reference` is required, and a
`country` must accompany a `name` or `registration_number` lookup. More fields
(address, telephone, url, email) yield a more confident match.

Matching happens in two stages:

- **Internal first.** A `customer_reference` mapped to one of your portfolio
companies, or a `duns_number` we already track, returns that Business Radar
company immediately — no Dun & Bradstreet lookup is performed.

- **Dun & Bradstreet fallback.** Otherwise the details are matched against
Dun & Bradstreet's Cleanse Match API and the single best candidate is
returned, even if the company is not yet registered in Business Radar.

The result is a company object. When the company is already tracked in
Business Radar its `external_id` is populated; when it only exists at Dun &
Bradstreet the `external_id` is `null` and you can register it via [POST
/companies](#operation-ext_v3_companies_create) using the returned
`duns_number`.

Returns `404` when no company can be matched.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `address_county` | query | string | no | County. Min length: `1`. |
| `address_locality` | query | string | no | City / locality. Min length: `1`. |
| `address_region` | query | string | no | Region / state / province. Min length: `1`. |
| `confidence_lower_level_threshold_value` | query | integer | no | Minimum Dun & Bradstreet confidence code (1-10). |
| `country` | query | string | no | ISO 2-letter Country Code (e.g., NL, US). Min length: `1`. |
| `customer_reference` | query | string | no | Your own reference linking to a tracked company. Min length: `1`. |
| `duns_number` | query | string | no | 9-digit Dun And Bradstreet Number to match. Min length: `1`. |
| `email` | query | string | no | Company email address. Min length: `1`. |
| `name` | query | string | no | Company name to match. Min length: `1`. |
| `postal_code` | query | string | no | Postal / ZIP code. Min length: `1`. |
| `registration_number` | query | string | no | Local Registration Number. Min length: `1`. |
| `registration_number_type` | query | string | no | Type of the registration number. Min length: `1`. |
| `street_address_line1` | query | string | no | First line of the street address. Min length: `1`. |
| `street_address_line2` | query | string | no | Second line of the street address. Min length: `1`. |
| `telephone_number` | query | string | no | Telephone number. Min length: `1`. |
| `url` | query | string | no | Company website URL. Min length: `1`. |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [UniversalCompany](#schema-UniversalCompany) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.companies.match()` · TypeScript: `client.companies.match()`

<a id="operation-ext_v3_registrations_retrieve"></a>

#### `GET /ext/v3/registrations/{registration_id}`

Operation ID: `ext_v3_registrations_retrieve`

##### Retrieve Registration Information

Fetch details about a specific company registration request using its
`registration_id`.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `registration_id` | path | string (uuid) | yes |  |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [Registration](#schema-Registration) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 404 | The requested resource was not found. | [NotFoundError](#schema-NotFoundError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.companies.retrieve_registration()` · TypeScript: `client.companies.retrieveRegistration()`

### Compliance

<a id="operation-ext_v3_compliance_list"></a>

#### `GET /ext/v3/compliance`

Operation ID: `ext_v3_compliance_list`

##### Compliance Checks

**GET** — Retrieve a paginated list of compliance checks created via this API key.
Supports filtering by status and date ranges, and sorting by key timestamps.

**POST** — Initiate a new compliance screening using one of two methods:

1. **Company-based screening**: Provide a `company_id` to screen the company.
Optionally enable screening of related entities (UBOs and directors) via
`ubo_screening_enabled` and `directors_screening_enabled`. You can also include
additional custom `entities` to be screened alongside the company.

2. **Custom entity screening**: Provide a list of `entities` without a `company_id`
to screen specific individuals or organizations that are not necessarily affiliated
with a company in our database.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `adverse_media_monitoring_enabled` | query | boolean | no | Filter checks that have entities with adverse media monitoring enabled (pending or active). |
| `compliance_score` | query | string | no | Filter by compliance score. One of: `high`, `low`, `medium`. |
| `created_at__gte` | query | string (date-time) | no | Filter checks created at or after this time. |
| `created_at__lte` | query | string (date-time) | no | Filter checks created at or before this time. |
| `next_key` | query | string | no | A cursor value used for pagination. Include the `next_key` value from your previous request to retrieve the subsequent page of results. If this value is `null`, the first page of results is returned. |
| `order` | query | string | no | Sorting order. One of: `asc`, `desc`. Default: `"desc"`. |
| `page_size` | query | integer | no | Number of results per page. Default 50, max 100. |
| `results_changed_at__gte` | query | string (date-time) | no | Filter checks with results changed at or after this time. |
| `results_changed_at__lte` | query | string (date-time) | no | Filter checks with results changed at or before this time. |
| `sanction_monitoring_enabled` | query | boolean | no | Filter checks that have entities with sanction monitoring enabled (pending or active). |
| `sorting` | query | string | no | Sorting field. One of: `created_at`, `finished_at`, `results_changed_at`. Default: `"created_at"`. |
| `status` | query | string | no | Filter by compliance check status. One of: `completed`, `failed`, `in_progress`, `pending`, `queued`, `searching_directors`. |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [PaginatedComplianceCheckListList](#schema-PaginatedComplianceCheckListList) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.compliance.list()` · TypeScript: `client.compliance.list()`

<a id="operation-ext_v3_compliance_create"></a>

#### `POST /ext/v3/compliance`

Operation ID: `ext_v3_compliance_create`

##### Create Compliance Check (Asynchronous)

Initiate a new compliance screening using one of two methods:

1. **Company-based screening**: Provide a `company_id` to screen the company.
Optionally enable screening of related entities (UBOs and directors) via
`ubo_screening_enabled` and `directors_screening_enabled`. You can optionally
include a list of additional `entities` to be screened alongside the company.

2. **Custom entity screening**: Provide a list of `entities` without a
`company_id` to screen specific individuals or organizations that are not
necessarily affiliated with a company in our database.

Once posted, Business Radar processes the request in the background.

To check the progress and/or retrieve the final result, you can use the [GET
/compliance/{external_id}](#operation-ext_v3_compliance_retrieve) endpoint.

**Request body** (`application/json`)

Schema: [ComplianceCheckRequestRequest](#schema-ComplianceCheckRequestRequest)

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 201 |  | [ComplianceCheckCreate](#schema-ComplianceCheckCreate) (`application/json`) |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.compliance.create()` · TypeScript: `client.compliance.create()`

<a id="operation-ext_v3_compliance_retrieve"></a>

#### `GET /ext/v3/compliance/{external_id}`

Operation ID: `ext_v3_compliance_retrieve`

##### Compliance Check Status

Check the current status, progress, and high-level scores of a specific compliance
check.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `external_id` | path | string (uuid) | yes |  |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [ComplianceCheckRetrieve](#schema-ComplianceCheckRetrieve) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 404 | The requested resource was not found. | [NotFoundError](#schema-NotFoundError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.compliance.retrieve()` · TypeScript: `client.compliance.retrieve()`

<a id="operation-ext_v3_compliance_results_list"></a>

#### `GET /ext/v3/compliance/{external_id}/results`

Operation ID: `ext_v3_compliance_results_list`

##### List Compliance Results

Retrieve all findings for a compliance check. Results can be filtered by entity,
type of finding (e.g., Sanction, PEP), and confidence score.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `entity` | query | string | no | Filter by entity external ID |
| `exclude_automated_false_positives` | query | boolean | no | Filter out automated false positive rated results. While a check is still running, only AI-validated results are returned, so the result count grows monotonically. Set to `false` to get the raw unfiltered set, including results that have not been validated yet. Default: `true`. |
| `external_id` | path | string (uuid) | yes |  |
| `min_confidence` | query | number (double) | no | Filter by minimum confidence score (0.0 - 1.0) |
| `next_key` | query | string | no | A cursor value used for pagination. Include the `next_key` value from your previous request to retrieve the subsequent page of results. If this value is `null`, the first page of results is returned. |
| `order` | query | string | no | Sorting order. One of: `asc`, `desc`. Default: `"desc"`. |
| `page_size` | query | integer | no | Number of results per page. Default 50, max 100. |
| `result_type` | query | string | no | Filter by result type. One of: `adverse_media`, `enforcement`, `govt_owned`, `pep`, `sanction`. |
| `sorting` | query | string | no | Sorting field. One of: `confidence`, `created_at`, `source_date`. Default: `"created_at"`. |
| `source_type` | query | string | no | Filter adverse media results by sub-source (news / icij / enforcement) One of: `enforcement`, `icij`, `news`. |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [PaginatedComplianceEntityResultList](#schema-PaginatedComplianceEntityResultList) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.compliance.list_results()` · TypeScript: `client.compliance.listResults()`

### Portfolios

<a id="operation-ext_v3_portfolios_list"></a>

#### `GET /ext/v3/portfolios`

Operation ID: `ext_v3_portfolios_list`

##### Portfolios

Manage collections of companies. This view allows you to list existing portfolios
associated with your profile or create new ones.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `next_key` | query | string | no | A cursor value used for pagination. Include the `next_key` value from your previous request to retrieve the subsequent page of results. If this value is `null`, the first page of results is returned. |
| `page_size` | query | integer | no | Number of results per page. Default 50, max 100. |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [PaginatedPortfolioList](#schema-PaginatedPortfolioList) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.portfolios.list()` · TypeScript: `client.portfolios.list()`

<a id="operation-ext_v3_portfolios_create"></a>

#### `POST /ext/v3/portfolios`

Operation ID: `ext_v3_portfolios_create`

##### Portfolios

Manage collections of companies. This view allows you to list existing portfolios
associated with your profile or create new ones.

**Request body** (`application/json`, required)

Schema: [PortfolioRequest](#schema-PortfolioRequest)

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 201 |  | [Portfolio](#schema-Portfolio) (`application/json`) |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.portfolios.create()` · TypeScript: `client.portfolios.create()`

<a id="operation-ext_v3_portfolios_companies_list"></a>

#### `GET /ext/v3/portfolios/{portfolio_id}/companies`

Operation ID: `ext_v3_portfolios_companies_list`

##### Portfolio Companies

Manage companies within a specific portfolio. - **GET**: List all companies
currently in the portfolio. - **POST**: Register and add a new company to the
portfolio.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `next_key` | query | string | no | A cursor value used for pagination. Include the `next_key` value from your previous request to retrieve the subsequent page of results. If this value is `null`, the first page of results is returned. |
| `page_size` | query | integer | no | Number of results per page. Default 50, max 100. |
| `portfolio_id` | path | string (uuid) | yes |  |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [PaginatedPortfolioCompanyList](#schema-PaginatedPortfolioCompanyList) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.portfolios.companies.list()` · TypeScript: `client.portfolios.companies.list()`

<a id="operation-ext_v3_portfolios_companies_create"></a>

#### `POST /ext/v3/portfolios/{portfolio_id}/companies`

Operation ID: `ext_v3_portfolios_companies_create`

##### Register Portfolio Company (Asynchronous)

Register and add a new company to the portfolio. Once posted, Business Radar
processes the request in the background.

To check the progress and/or retrieve the final result, you can use the [GET
/registrations/{registration_id}](#operation-ext_v3_registrations_retrieve)
endpoint.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `portfolio_id` | path | string (uuid) | yes |  |

**Request body** (`application/json`)

Schema: [RegistrationRequest](#schema-RegistrationRequest)

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 201 |  | [Registration](#schema-Registration) (`application/json`) |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 404 | The requested resource was not found. | [NotFoundError](#schema-NotFoundError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.portfolios.companies.create()` · TypeScript: `client.portfolios.companies.create()`

<a id="operation-ext_v3_portfolios_companies_destroy"></a>

#### `DELETE /ext/v3/portfolios/{portfolio_id}/companies/{external_id}`

Operation ID: `ext_v3_portfolios_companies_destroy`

##### Remove Portfolio Company

Remove a company from a portfolio using its internal `external_id`.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `external_id` | path | string (uuid) | yes |  |
| `portfolio_id` | path | string (uuid) | yes |  |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 204 | No response body | — |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 404 | The requested resource was not found. | [NotFoundError](#schema-NotFoundError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.portfolios.companies.delete()` · TypeScript: `client.portfolios.companies.delete()`

### Webhooks

<a id="operation-ext_v3_webhooks_list"></a>

#### `GET /ext/v3/webhooks/`

Operation ID: `ext_v3_webhooks_list`

List and create webhooks for the active profile.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `next_key` | query | string | no | A cursor value used for pagination. Include the `next_key` value from your previous request to retrieve the subsequent page of results. If this value is `null`, the first page of results is returned. |
| `page_size` | query | integer | no | Number of results per page. Default 50, max 100. |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [PaginatedWebhookList](#schema-PaginatedWebhookList) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.webhooks.list()` · TypeScript: `client.webhooks.list()`

<a id="operation-ext_v3_webhooks_create"></a>

#### `POST /ext/v3/webhooks/`

Operation ID: `ext_v3_webhooks_create`

List and create webhooks for the active profile.

**Request body** (`application/json`, required)

Schema: [WebhookRequest](#schema-WebhookRequest)

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 201 |  | [Webhook](#schema-Webhook) (`application/json`) |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.webhooks.create()` · TypeScript: `client.webhooks.create()`

<a id="operation-ext_v3_webhooks_retrieve"></a>

#### `GET /ext/v3/webhooks/{webhook_external_id}/`

Operation ID: `ext_v3_webhooks_retrieve`

Retrieve, update, or delete a single webhook.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `webhook_external_id` | path | string (uuid) | yes |  |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [Webhook](#schema-Webhook) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 404 | The requested resource was not found. | [NotFoundError](#schema-NotFoundError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.webhooks.retrieve()` · TypeScript: `client.webhooks.retrieve()`

<a id="operation-ext_v3_webhooks_update"></a>

#### `PUT /ext/v3/webhooks/{webhook_external_id}/`

Operation ID: `ext_v3_webhooks_update`

Retrieve, update, or delete a single webhook.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `webhook_external_id` | path | string (uuid) | yes |  |

**Request body** (`application/json`, required)

Schema: [WebhookRequest](#schema-WebhookRequest)

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [Webhook](#schema-Webhook) (`application/json`) |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 404 | The requested resource was not found. | [NotFoundError](#schema-NotFoundError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.webhooks.update()` · TypeScript: `client.webhooks.update()`

<a id="operation-ext_v3_webhooks_partial_update"></a>

#### `PATCH /ext/v3/webhooks/{webhook_external_id}/`

Operation ID: `ext_v3_webhooks_partial_update`

Retrieve, update, or delete a single webhook.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `webhook_external_id` | path | string (uuid) | yes |  |

**Request body** (`application/json`)

Schema: [PatchedWebhookRequest](#schema-PatchedWebhookRequest)

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [Webhook](#schema-Webhook) (`application/json`) |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 404 | The requested resource was not found. | [NotFoundError](#schema-NotFoundError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.webhooks.partial_update()` · TypeScript: `client.webhooks.partialUpdate()`

<a id="operation-ext_v3_webhooks_destroy"></a>

#### `DELETE /ext/v3/webhooks/{webhook_external_id}/`

Operation ID: `ext_v3_webhooks_destroy`

Retrieve, update, or delete a single webhook.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `webhook_external_id` | path | string (uuid) | yes |  |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 204 | No response body | — |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 404 | The requested resource was not found. | [NotFoundError](#schema-NotFoundError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.webhooks.delete()` · TypeScript: `client.webhooks.delete()`

<a id="operation-ext_v3_webhooks_deliveries_list"></a>

#### `GET /ext/v3/webhooks/{webhook_external_id}/deliveries/`

Operation ID: `ext_v3_webhooks_deliveries_list`

List deliveries newest first.

The default cursor pagination ignores the queryset ordering and applies
its own ``ordering`` attribute, so set it on the paginator here. The
``-id`` tiebreaker keeps cursor paging stable when deliveries share a
``created_at`` timestamp.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `next_key` | query | string | no | A cursor value used for pagination. Include the `next_key` value from your previous request to retrieve the subsequent page of results. If this value is `null`, the first page of results is returned. |
| `page_size` | query | integer | no | Number of results per page. Default 50, max 100. |
| `webhook_external_id` | path | string (uuid) | yes |  |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [PaginatedWebhookDeliveryList](#schema-PaginatedWebhookDeliveryList) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.webhooks.deliveries.list()` · TypeScript: `client.webhooks.deliveries.list()`

<a id="operation-ext_v3_webhooks_deliveries_test_create"></a>

#### `POST /ext/v3/webhooks/{webhook_external_id}/deliveries/test/`

Operation ID: `ext_v3_webhooks_deliveries_test_create`

Queue a synthetic test event by creating a pending WebhookDelivery.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `webhook_external_id` | path | string (uuid) | yes |  |

**Request body** (`application/json`)

Schema: [TestWebhookDeliveryRequest](#schema-TestWebhookDeliveryRequest)

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 201 |  | [WebhookDelivery](#schema-WebhookDelivery) (`application/json`) |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 404 | The requested resource was not found. | [NotFoundError](#schema-NotFoundError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.webhooks.deliveries.test()` · TypeScript: `client.webhooks.deliveries.test()`

<a id="operation-ext_v3_webhooks_regenerate_secret_create"></a>

#### `POST /ext/v3/webhooks/{webhook_external_id}/regenerate_secret/`

Operation ID: `ext_v3_webhooks_regenerate_secret_create`

Rotate the secret. The new value is returned once and never shown again.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `webhook_external_id` | path | string (uuid) | yes |  |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [RegenerateSecretResponse](#schema-RegenerateSecretResponse) (`application/json`) |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 404 | The requested resource was not found. | [NotFoundError](#schema-NotFoundError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.webhooks.regenerate_secret()` · TypeScript: `client.webhooks.regenerateSecret()`

<a id="operation-ext_v3_webhooks_subscriptions_list"></a>

#### `GET /ext/v3/webhooks/{webhook_external_id}/subscriptions/`

Operation ID: `ext_v3_webhooks_subscriptions_list`

List and add subscriptions on a specific webhook.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `next_key` | query | string | no | A cursor value used for pagination. Include the `next_key` value from your previous request to retrieve the subsequent page of results. If this value is `null`, the first page of results is returned. |
| `page_size` | query | integer | no | Number of results per page. Default 50, max 100. |
| `webhook_external_id` | path | string (uuid) | yes |  |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 |  | [PaginatedWebhookSubscriptionList](#schema-PaginatedWebhookSubscriptionList) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.webhooks.subscriptions.list()` · TypeScript: `client.webhooks.subscriptions.list()`

<a id="operation-ext_v3_webhooks_subscriptions_create"></a>

#### `POST /ext/v3/webhooks/{webhook_external_id}/subscriptions/`

Operation ID: `ext_v3_webhooks_subscriptions_create`

List and add subscriptions on a specific webhook.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `webhook_external_id` | path | string (uuid) | yes |  |

**Request body** (`application/json`, required)

Schema: [WebhookSubscriptionRequest](#schema-WebhookSubscriptionRequest)

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 201 |  | [WebhookSubscription](#schema-WebhookSubscription) (`application/json`) |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 404 | The requested resource was not found. | [NotFoundError](#schema-NotFoundError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.webhooks.subscriptions.create()` · TypeScript: `client.webhooks.subscriptions.create()`

<a id="operation-ext_v3_webhooks_subscriptions_destroy"></a>

#### `DELETE /ext/v3/webhooks/{webhook_external_id}/subscriptions/{subscription_external_id}/`

Operation ID: `ext_v3_webhooks_subscriptions_destroy`

Remove a single subscription from a webhook.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `subscription_external_id` | path | string (uuid) | yes |  |
| `webhook_external_id` | path | string (uuid) | yes |  |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 204 | No response body | — |
| 400 | Bad request, validate that you have provided all required fields. | [ValidationError](#schema-ValidationError) (`application/json`) |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 404 | The requested resource was not found. | [NotFoundError](#schema-NotFoundError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.webhooks.subscriptions.delete()` · TypeScript: `client.webhooks.subscriptions.delete()`

<a id="operation-ext_v3_webhooks_event_types_retrieve"></a>

#### `GET /ext/v3/webhooks/event_types/`

Operation ID: `ext_v3_webhooks_event_types_retrieve`

Return all available webhook event types.

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 | No response body | — |
| 401 | Authentication credentials were not provided. | [UnauthenticatedError](#schema-UnauthenticatedError) (`application/json`) |
| 403 | You do not have permission to perform this action. | [ForbiddenError](#schema-ForbiddenError) (`application/json`) |
| 429 | You have exceeded your request rate. Please try again later. | [ThrottlingError](#schema-ThrottlingError) (`application/json`) |
| 500 | An internal exception has occured, reach out to support@businessradar.com | [InternalServerError](#schema-InternalServerError) (`application/json`) |

**SDK:** Python: `client.webhooks.retrieve_event_types()` · TypeScript: `client.webhooks.retrieveEventTypes()`

## Schemas

<a id="schema-Article"></a>

### Article

The primary data structure for news articles. It provides comprehensive data,
including: - Metadata (URLs, publication dates, languages, countries) - Content
(titles, snippets, summaries - both original and translated) - Relationships
(source, related companies, categories) - Analysis (sentiment, clustering status)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | no |  |
| `url` | string (uri) | yes | Max length: `512`. |
| `image_url` | string | yes | Get Image URL if allowed for source. Read-only. |
| `is_paywalled` | [IsPaywalledEnum](#schema-IsPaywalledEnum) \| null | no |  |
| `publication_datetime` | string (date-time) | yes | Calculate publication datetime of article. Read-only. |
| `sub_articles` | array of [SubArticle](#schema-SubArticle) | yes |  |
| `is_clustered` | boolean | yes | Check if article is clustered. Read-only. |
| `company_articles` | array of [CompanyArticle](#schema-CompanyArticle) | yes | Read-only. |
| `categories` | array of [CategoryTree](#schema-CategoryTree) | yes | Read-only. |
| `source` | [Source](#schema-Source) | yes |  |
| `title` | string | yes | Max length: `512`. |
| `title_en` | string | yes | Max length: `512`. |
| `snippet` | string | yes | Get snippet if allowed for source. Read-only. |
| `snippet_en` | string | yes | Get snippet if allowed for source. Read-only. |
| `summary` | string \| null | no |  |
| `summary_en` | string \| null | no |  |
| `language` | [LanguageEnum](#schema-LanguageEnum) | yes |  |
| `country` | [CountryEnum](#schema-CountryEnum) \| null | no |  |
| `sentiment` | number (double) \| null | no |  |
| `created_at` | string (date-time) | yes | Read-only. |
| `updated_at` | string (date-time) | yes | Read-only. |

<a id="schema-ArticleDateAggregation"></a>

### ArticleDateAggregation

#### Article Date Aggregation

Provides aggregated metrics for articles on a per-date basis. - **count**: Total
articles found for the given date. - **average_sentiment**: Average sentiment score
of these articles. - **date**: The specific date of the aggregation.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `count` | integer | yes |  |
| `average_sentiment` | number (double) | yes |  |
| `date` | string (date) | yes |  |

<a id="schema-ArticleExport"></a>

### ArticleExport

Data Export Serializer.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | yes | Read-only. |
| `export_type` | [ExportTypeEnum](#schema-ExportTypeEnum) | yes | Read-only. |
| `file_type` | [DataExportFileType](#schema-DataExportFileType) | yes |  |
| `filters` | [ArticleFilters](#schema-ArticleFilters) | yes |  |
| `location` | string (uri) \| null | yes | Location of exports. Read-only. |
| `status` | [ArticleExportStatusEnum](#schema-ArticleExportStatusEnum) | yes | Read-only. |
| `result_count` | integer \| null | yes | Read-only. |
| `created_at` | string (date-time) | yes | Read-only. |
| `updated_at` | string (date-time) | yes | Read-only. |

<a id="schema-ArticleExportRequest"></a>

### ArticleExportRequest

Data Export Serializer.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `file_type` | [DataExportFileType](#schema-DataExportFileType) | yes |  |
| `filters` | [ArticleFiltersRequest](#schema-ArticleFiltersRequest) | yes |  |

<a id="schema-ArticleExportStatusEnum"></a>

### ArticleExportStatusEnum

* `pending` - Pending
* `in_progress` - In Progress
* `failed` - Failed
* `finished` - Finished

Type: string

<a id="schema-ArticleFilters"></a>

### ArticleFilters

#### Article Filters

Used to validate and process filters for article searches. Supports filtering by
query text, countries, languages, specific companies (DUNS), and portfolios.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | string \| null | no |  |
| `portfolios` | array of string (uuid) \| null | no |  |
| `countries` | array of string \| null | no |  |
| `languages` | array of string \| null | no |  |
| `duns_numbers` | array of string \| null | no |  |
| `companies` | array of string (uuid) \| null | no |  |
| `global_ultimates` | array of string \| null | no |  |
| `registration_numbers` | array of string \| null | no |  |
| `industries` | array of string \| null | no |  |
| `media_type` | [MediaTypeEnum](#schema-MediaTypeEnum) \| null | no |  |
| `categories` | array of string (uuid) \| null | no |  |
| `parent_category` | string (uuid) \| null | no |  |
| `include_clustered_articles` | boolean | no |  |
| `disable_company_article_deduplication` | boolean | no |  |
| `sentiment` | boolean \| null | no |  |
| `min_publication_date` | string (date-time) \| null | no |  |
| `max_publication_date` | string (date-time) \| null | no |  |
| `min_creation_date` | string (date-time) \| null | no |  |
| `max_creation_date` | string (date-time) \| null | no |  |
| `is_material` | boolean \| null | no |  |

<a id="schema-ArticleFiltersRequest"></a>

### ArticleFiltersRequest

#### Article Filters

Used to validate and process filters for article searches. Supports filtering by
query text, countries, languages, specific companies (DUNS), and portfolios.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | string \| null | no |  |
| `portfolios` | array of string (uuid) \| null | no |  |
| `countries` | array of string \| null | no |  |
| `languages` | array of string \| null | no |  |
| `duns_numbers` | array of string \| null | no |  |
| `companies` | array of string (uuid) \| null | no |  |
| `global_ultimates` | array of string \| null | no |  |
| `registration_numbers` | array of string \| null | no |  |
| `industries` | array of string \| null | no |  |
| `media_type` | [MediaTypeEnum](#schema-MediaTypeEnum) \| null | no |  |
| `categories` | array of string (uuid) \| null | no |  |
| `parent_category` | string (uuid) \| null | no |  |
| `include_clustered_articles` | boolean | no |  |
| `disable_company_article_deduplication` | boolean | no |  |
| `sentiment` | boolean \| null | no |  |
| `min_publication_date` | string (date-time) \| null | no |  |
| `max_publication_date` | string (date-time) \| null | no |  |
| `min_creation_date` | string (date-time) \| null | no |  |
| `max_creation_date` | string (date-time) \| null | no |  |
| `is_material` | boolean \| null | no |  |

<a id="schema-BlankEnum"></a>

### BlankEnum

Type: any

<a id="schema-CategoryTree"></a>

### CategoryTree

Category Tree Structure.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | yes | Max length: `255`. |
| `external_id` | string (uuid) | no |  |
| `priority` | integer \| null | no | Minimum: `-2147483648`. Maximum: `2147483647`. |
| `is_material` | boolean | yes | Return is_material flag if present. Read-only. |
| `sub_categories` | array of [CategoryTree](#schema-CategoryTree) | yes |  |

<a id="schema-Company"></a>

### Company

Detailed representation of a company in Business Radar.

This data includes: - Basic info (name, country, website) - Identification (DUNS,
external ID, registration numbers) - Industry classifications - Geographical data
(address, coordinates) - Social and online presence - Summary metrics (article
count, review scores, etc.) - Corporate linkage (global and domestic ultimate)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `duns_number` | string | yes |  |
| `external_id` | string (uuid) | no |  |
| `name` | string | yes | Max length: `1024`. |
| `slug` | string | yes | Max length: `255`. Pattern: `^[-a-zA-Z0-9_]+$`. |
| `country` | [CountryEnum](#schema-CountryEnum) | yes |  |
| `is_out_of_business` | boolean | no | Indicates whether the company is out of business. |
| `registration_numbers` | array of [RegistrationNumber](#schema-RegistrationNumber) | yes |  |
| `ticker_symbol` | string \| null | no | Max length: `1024`. |
| `industry_codes` | array of [IndustryCode](#schema-IndustryCode) | yes |  |
| `primary_industry_codes` | array of [IndustryCode](#schema-IndustryCode) | yes |  |
| `trade_names` | array of string | yes | Read-only. |
| `address_street` | string \| null | no | Max length: `1024`. |
| `address_number` | string \| null | no | Max length: `1024`. |
| `address_place` | string \| null | no | Max length: `1024`. |
| `address_region` | string \| null | no | Max length: `1024`. |
| `address_postal` | string \| null | no | Max length: `256`. |
| `address_phone` | string \| null | no | Max length: `256`. |
| `address_latitude` | number (double) \| null | no |  |
| `address_longitude` | number (double) \| null | no |  |
| `website_url` | string (uri) \| null | no | Max length: `1024`. |
| `website_domain` | string \| null | no | Max length: `255`. |
| `social_logo` | string \| null | yes | Get Social Logo. Read-only. |
| `website_icon_url` | string (uri) \| null | no | Icon of the found website. Max length: `2048`. |
| `social_description` | string \| null | yes | Get Social Description. Read-only. |
| `linkedin_url` | string (uri) \| null | no | Max length: `1024`. |
| `review_count` | integer | no | Amount of reviews available. Minimum: `0`. Maximum: `2147483647`. |
| `review_average_score` | number (double) \| null | no | Average review score |
| `article_count` | integer | no | Amount of articles available. Minimum: `0`. Maximum: `2147483647`. |
| `publication_count` | integer | no | Amount of publications available. Minimum: `0`. Maximum: `2147483647`. |
| `report_count` | integer | no | Amount of reports available. Minimum: `0`. Maximum: `2147483647`. |
| `founding_date` | string (date) | yes |  |
| `global_ultimate_duns_number` | string \| null | no | Max length: `9`. |
| `global_ultimate_name` | string \| null | no | Max length: `1024`. |
| `global_ultimate_country` | [GlobalUltimateCountryEnum](#schema-GlobalUltimateCountryEnum) \| null | no |  |
| `domestic_ultimate_duns_number` | string \| null | no | Max length: `9`. |
| `domestic_ultimate_name` | string \| null | no | Max length: `1024`. |

<a id="schema-CompanyArticle"></a>

### CompanyArticle

#### Company-Article

The relationship between a company and a specific article, including snippets and
sentiment analysis relevant to that company.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `company` | [NewsCompany](#schema-NewsCompany) | yes |  |
| `categories` | array of [CategoryTree](#schema-CategoryTree) | yes | Read-only. |
| `snippet` | string \| null | no |  |
| `snippet_en` | string \| null | no |  |
| `sentiment` | number (double) \| null | no |  |

<a id="schema-CompanyAttributeChange"></a>

### CompanyAttributeChange

#### Company Attribute Change

Tracks changes to specific attributes of a company over time. Used for monitoring
updates and maintaining a history of company data.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `company_external_id` | string | yes | Read-only. |
| `attribute` | string | yes | Max length: `128`. |
| `old_value` | string \| null | no | Max length: `1024`. |
| `new_value` | string \| null | no | Max length: `1024`. |
| `created_at` | string (date-time) | yes | Read-only. |

<a id="schema-CompanyFeedback"></a>

### CompanyFeedback

#### Company Feedback

Submit feedback about a specific company, such as outdated information,
missing data, or incorrect details.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `company` | string (uuid) | yes |  |
| `feedback_type` | [CompanyFeedbackFeedbackTypeEnum](#schema-CompanyFeedbackFeedbackTypeEnum) | yes |  |
| `comment` | string \| null | no |  |
| `trade_name` | string \| null | no | Max length: `1024`. |
| `notification_email` | string (email) \| null | no | Email address to notify when feedback is resolved. Max length: `254`. |

<a id="schema-CompanyFeedbackFeedbackTypeEnum"></a>

### CompanyFeedbackFeedbackTypeEnum

* `NOT_ENOUGH_NEWS` - Not Enough News
* `COMPANY_NAME_OUTDATED` - Company Name Outdated
* `INCORRECT_COMPANY_WEBSITE` - Incorrect Company Website
* `MISSING_REGISTRATION_NUMBER` - Missing Registration Number
* `MISSING_TRADE_NAME` - Missing Trade Name
* `INCORRECT_TRADE_NAME` - Incorrect Trade Name
* `NOT_ENOUGH_REVIEWS` - Not Enough Reviews
* `OUTDATED_CORPORATE_LINKAGE` - Outdated Corporate Linkage
* `INCORRECT_CORPORATE_LINKAGE` - Incorrect Corporate Linkage
* `OTHER` - Other

Type: string

<a id="schema-CompanyFeedbackRequest"></a>

### CompanyFeedbackRequest

#### Company Feedback

Submit feedback about a specific company, such as outdated information,
missing data, or incorrect details.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `company` | string (uuid) | yes |  |
| `feedback_type` | [CompanyFeedbackFeedbackTypeEnum](#schema-CompanyFeedbackFeedbackTypeEnum) | yes |  |
| `comment` | string \| null | no |  |
| `trade_name` | string \| null | no | Max length: `1024`. |
| `notification_email` | string (email) \| null | no | Email address to notify when feedback is resolved. Max length: `254`. |

<a id="schema-CompanyInvestigation"></a>

### CompanyInvestigation

#### Missing Company Investigation

Used to request and track investigations for companies not currently in the
database. This is typically used when a search for a company yields no results,
allowing users to provide known details for a manual or automated investigation.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | yes | Read-only. |
| `legal_name` | string | yes | Official name of the company as registered in legal documents. Max length: `256`. |
| `trade_name` | string \| null | no | Alternate name the company might use in its operations, distinct from the legal name. Max length: `256`. |
| `address_street` | string \| null | no | Max length: `1024`. |
| `address_number` | string \| null | no | Max length: `1024`. |
| `address_place` | string \| null | no | Max length: `1024`. |
| `address_region` | string \| null | no | Max length: `1024`. |
| `address_postal` | string \| null | no | Max length: `256`. |
| `address_phone` | string \| null | no | Phone number should include international code prefix, e.g., +31. Max length: `256`. |
| `country` | [CountryEnum](#schema-CountryEnum) | yes |  |
| `officer_name` | string \| null | no | Name of the primary officer or CEO of the company. Max length: `256`. |
| `officer_title` | string \| null | no | Title or position of the named officer in the company. Max length: `256`. |
| `website_url` | string (uri) \| null | no | Provide the official website of the company if available. Max length: `200`. |
| `description` | string \| null | no | Any additional notes or details about the company. |
| `company_external_id` | string \| null | yes | Read-only. |
| `status` | string | yes | Read-only. |
| `last_status_update` | string (date-time) | yes | Read-only. |
| `created_at` | string (date-time) | yes | The date and time when this investigation was created. Read-only. |

<a id="schema-CompanyInvestigationRequest"></a>

### CompanyInvestigationRequest

#### Missing Company Investigation

Used to request and track investigations for companies not currently in the
database. This is typically used when a search for a company yields no results,
allowing users to provide known details for a manual or automated investigation.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `legal_name` | string | yes | Official name of the company as registered in legal documents. Min length: `1`. Max length: `256`. |
| `trade_name` | string \| null | no | Alternate name the company might use in its operations, distinct from the legal name. Max length: `256`. |
| `address_street` | string \| null | no | Max length: `1024`. |
| `address_number` | string \| null | no | Max length: `1024`. |
| `address_place` | string \| null | no | Max length: `1024`. |
| `address_region` | string \| null | no | Max length: `1024`. |
| `address_postal` | string \| null | no | Max length: `256`. |
| `address_phone` | string \| null | no | Phone number should include international code prefix, e.g., +31. Max length: `256`. |
| `country` | [CountryEnum](#schema-CountryEnum) | yes |  |
| `officer_name` | string \| null | no | Name of the primary officer or CEO of the company. Max length: `256`. |
| `officer_title` | string \| null | no | Title or position of the named officer in the company. Max length: `256`. |
| `website_url` | string (uri) \| null | no | Provide the official website of the company if available. Max length: `200`. |
| `description` | string \| null | no | Any additional notes or details about the company. |

<a id="schema-CompanyList"></a>

### CompanyList

#### Company List

Provides a detailed overview of a company, including identification, contact info,
and aggregated news/review metrics.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `duns_number` | string \| null | no | Max length: `9`. |
| `external_id` | string (uuid) | no |  |
| `name` | string | yes | Max length: `1024`. |
| `slug` | string | yes | Max length: `255`. Pattern: `^[-a-zA-Z0-9_]+$`. |
| `country` | [CountryEnum](#schema-CountryEnum) | yes |  |
| `ticker_symbol` | string \| null | no | Max length: `1024`. |
| `address_street` | string \| null | no | Max length: `1024`. |
| `address_number` | string \| null | no | Max length: `1024`. |
| `address_place` | string \| null | no | Max length: `1024`. |
| `address_region` | string \| null | no | Max length: `1024`. |
| `address_postal` | string \| null | no | Max length: `256`. |
| `address_phone` | string \| null | no | Max length: `256`. |
| `address_latitude` | number (double) \| null | no |  |
| `address_longitude` | number (double) \| null | no |  |
| `website_url` | string (uri) \| null | no | Max length: `1024`. |
| `website_domain` | string \| null | no | Max length: `255`. |
| `social_logo` | string \| null | yes | Get Social Logo. Read-only. |
| `website_icon_url` | string (uri) \| null | no | Icon of the found website. Max length: `2048`. |
| `social_description` | string \| null | yes | Get Social Description. Read-only. |
| `linkedin_url` | string (uri) \| null | no | Max length: `1024`. |
| `review_count` | integer | no | Amount of reviews available. Minimum: `0`. Maximum: `2147483647`. |
| `review_average_score` | number (double) \| null | no | Average review score |
| `article_count` | integer | no | Amount of articles available. Minimum: `0`. Maximum: `2147483647`. |
| `publication_count` | integer | no | Amount of publications available. Minimum: `0`. Maximum: `2147483647`. |
| `report_count` | integer | no | Amount of reports available. Minimum: `0`. Maximum: `2147483647`. |
| `founding_date` | string (date) \| null | no |  |

<a id="schema-ComplianceCheckCreate"></a>

### ComplianceCheckCreate

#### Compliance Check

Used for creating a minimal compliance check record.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | yes | Read-only. |

<a id="schema-ComplianceCheckList"></a>

### ComplianceCheckList

#### Compliance Check (List)

Lightweight representation used in list responses.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | yes | Read-only. |
| `name` | string \| null | no | Custom name for this compliance check. Max length: `255`. |
| `status` | [ComplianceCheckStatusEnum](#schema-ComplianceCheckStatusEnum) | no |  |
| `created_at` | string (date-time) | yes | Read-only. |
| `finished_at` | string (date-time) \| null | no |  |
| `results_changed_at` | string (date-time) \| null | no |  |
| `company` | [ComplianceCheckListCompany](#schema-ComplianceCheckListCompany) \| null | yes |  |
| `compliance_score` | [ComplianceCheckScoreEnum](#schema-ComplianceCheckScoreEnum) \| null | no |  |
| `activity_score` | [ComplianceCheckScoreEnum](#schema-ComplianceCheckScoreEnum) \| null | no |  |
| `sanction_score` | [ComplianceCheckScoreEnum](#schema-ComplianceCheckScoreEnum) \| null | no |  |
| `country_score` | [ComplianceCheckScoreEnum](#schema-ComplianceCheckScoreEnum) \| null | no |  |
| `pep_score` | [ComplianceCheckScoreEnum](#schema-ComplianceCheckScoreEnum) \| null | no |  |
| `adverse_media_score` | [ComplianceCheckScoreEnum](#schema-ComplianceCheckScoreEnum) \| null | no |  |
| `reviewed_results_count` | integer | no | Number of results across all entities that have been reviewed by a user. Minimum: `-2147483648`. Maximum: `2147483647`. |
| `unreviewed_results_count` | integer | no | Number of results across all entities that are open and not yet reviewed. Minimum: `-2147483648`. Maximum: `2147483647`. |

<a id="schema-ComplianceCheckListCompany"></a>

### ComplianceCheckListCompany

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | no |  |
| `name` | string | yes | Max length: `1024`. |
| `country` | [CountryEnum](#schema-CountryEnum) | yes |  |

<a id="schema-ComplianceCheckRequestRequest"></a>

### ComplianceCheckRequestRequest

#### Compliance Check Request

Used to initiate a new compliance check. You have two options:

1. **Screen a company**: Provide a `company_id`. This will include the company and,
optionally, related entities like UBOs and directors only when their respective
flags are enabled. You can also provide a list of additional `entities` to include
in this screening.

2. **Screen a custom list of entities**: Provide a list of `entities` without a
`company_id`. This is useful for screening individuals or organizations that are not
affiliated with a specific company.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `company_id` | string (uuid) \| null | no |  |
| `name` | string \| null | no | Custom name for this compliance check. Max length: `255`. |
| `ownership_screening_threshold` | number (double) \| null | no | The threshold for ultimate ownership to enable for screening. |
| `directors_screening_enabled` | boolean | no | If directors should be screened. |
| `ubo_screening_enabled` | boolean | no | If enabled, UBOs discovered for the company will be screened. Default: `false`. |
| `sanction_monitoring_enabled` | boolean | no | Deprecated: monitoring is now derived from screening. This flag (OR'd with adverse_media_monitoring_enabled) sets the check's monitoring master switch; per-type coverage follows which screenings run. Default: `false`. |
| `adverse_media_monitoring_enabled` | boolean | no | Deprecated: monitoring is now derived from screening. This flag (OR'd with sanction_monitoring_enabled) sets the check's monitoring master switch; per-type coverage follows which screenings run. Default: `false`. |
| `entities` | array of [ComplianceEntityRequestRequest](#schema-ComplianceEntityRequestRequest) | no |  |

<a id="schema-ComplianceCheckRetrieve"></a>

### ComplianceCheckRetrieve

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | yes | Read-only. |
| `name` | string \| null | no | Custom name for this compliance check. Max length: `255`. |
| `status` | [ComplianceCheckStatusEnum](#schema-ComplianceCheckStatusEnum) | no |  |
| `progress` | number (double) | yes | Read-only. |
| `compliance_score` | [ComplianceCheckScoreEnum](#schema-ComplianceCheckScoreEnum) \| null | no |  |
| `activity_score` | [ComplianceCheckScoreEnum](#schema-ComplianceCheckScoreEnum) \| null | no |  |
| `sanction_score` | [ComplianceCheckScoreEnum](#schema-ComplianceCheckScoreEnum) \| null | no |  |
| `country_score` | [ComplianceCheckScoreEnum](#schema-ComplianceCheckScoreEnum) \| null | no |  |
| `pep_score` | [ComplianceCheckScoreEnum](#schema-ComplianceCheckScoreEnum) \| null | no |  |
| `adverse_media_score` | [ComplianceCheckScoreEnum](#schema-ComplianceCheckScoreEnum) \| null | no |  |
| `entities` | array of [ComplianceEntityRetrieve](#schema-ComplianceEntityRetrieve) | yes | Read-only. |

<a id="schema-ComplianceCheckScoreEnum"></a>

### ComplianceCheckScoreEnum

* `low` - Low
* `medium` - Medium
* `high` - High

Type: string

<a id="schema-ComplianceCheckStatusEnum"></a>

### ComplianceCheckStatusEnum

* `pending` - Pending
* `queued` - Queued
* `in_progress` - In Progress
* `searching_directors` - Searching Directors
* `completed` - Completed
* `failed` - Failed

Type: string

<a id="schema-ComplianceEntityRequestRequest"></a>

### ComplianceEntityRequestRequest

#### Compliance Entity Request

Represents an entity (individual or organization) to be included in a compliance
screening.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | yes | Min length: `1`. Max length: `1024`. |
| `entity_type` | [ComplianceEntityTypeEnum](#schema-ComplianceEntityTypeEnum) | no | Default: `"individual"`. |
| `country` | [CountryEnum](#schema-CountryEnum) \| null | no | ISO 3166-1 alpha-2 country code. * `AF` - Afghanistan * `AX` - Aland Islands * `AL` - Albania * `DZ` - Algeria * `AS` - American Samoa * `AD` - Andorra * `AO` - Angola * `AI` - Anguilla * `AQ` - Antarctica * `AG` - Antigua and Barbuda * `AR` - Argentina * `AM` - Armenia * `AW` - Aruba * `AU` - Australia * `AT` - Austria * `AZ` - Azerbaijan * `BS` - Bahamas * `BH` - Bahrain * `BD` - Bangladesh * `BB` - Barbados * `BY` - Belarus * `BE` - Belgium * `BZ` - Belize * `BJ` - Benin * `BM` - Bermuda * `BT` - Bhutan * `BO` - Bolivia * `BQ` - Bonaire * `BA` - Bosnia and Herzegovina * `BW` - Botswana * `BV` - Bouvet Island * `BR` - Brazil * `IO` - British Indian Ocean Territory * `BN` - Brunei Darussalam * `BG` - Bulgaria * `BF` - Burkina Faso * `BI` - Burundi * `CV` - Cabo Verde * `KH` - Cambodia * `CM` - Cameroon * `CA` - Canada * `KY` - Cayman Islands * `CF` - Central African Republic * `TD` - Chad * `CL` - Chile * `CN` - China * `CX` - Christmas Island * `CC` - Cocos Keeling Islands * `CO` - Colombia * `KM` - Comoros * `CG` - Congo * `CD` - Congo Democratic Republic * `CK` - Cook Islands * `CR` - Costa Rica * `CI` - Cote d'Ivoire * `HR` - Croatia * `CU` - Cuba * `CW` - Curacao * `CY` - Cyprus * `CZ` - Czechia * `DK` - Denmark * `DJ` - Djibouti * `DM` - Dominica * `DO` - Dominican Republic * `EC` - Ecuador * `EG` - Egypt * `SV` - El Salvador * `GQ` - Equatorial Guinea * `ER` - Eritrea * `EE` - Estonia * `SZ` - Eswatini * `ET` - Ethiopia * `FK` - Falkland Islands * `FO` - Faroe Islands * `FJ` - Fiji * `FI` - Finland * `FR` - France * `GF` - French Guiana * `PF` - French Polynesia * `TF` - French Southern Territories * `GA` - Gabon * `GM` - Gambia * `GE` - Georgia * `DE` - Germany * `GH` - Ghana * `GI` - Gibraltar * `GR` - Greece * `GL` - Greenland * `GD` - Grenada * `GP` - Guadeloupe * `GU` - Guam * `GT` - Guatemala * `GG` - Guernsey * `GN` - Guinea * `GW` - Guinea-Bissau * `GY` - Guyana * `HT` - Haiti * `HM` - Heard Island and McDonald Islands * `VA` - Holy See * `HN` - Honduras * `HK` - Hong Kong * `HU` - Hungary * `IS` - Iceland * `IN` - India * `ID` - Indonesia * `IR` - Iran (Islamic Republic of) * `IQ` - Iraq * `IE` - Ireland * `IM` - Isle of Man * `IL` - Israel * `IT` - Italy * `JM` - Jamaica * `JP` - Japan * `JE` - Jersey * `JO` - Jordan * `KZ` - Kazakhstan * `KE` - Kenya * `KI` - Kiribati * `KP` - Korea (the Democratic People's Republic of) * `KR` - Korea (the Republic of) * `XK` - Kosovo * `KW` - Kuwait * `KG` - Kyrgyzstan * `LA` - Lao People's Democratic Republic * `LV` - Latvia * `LB` - Lebanon * `LS` - Lesotho * `LR` - Liberia * `LY` - Libya * `LI` - Liechtenstein * `LT` - Lithuania * `LU` - Luxembourg * `MO` - Macao * `MG` - Madagascar * `MW` - Malawi * `MY` - Malaysia * `MV` - Maldives * `ML` - Mali * `MT` - Malta * `MH` - Marshall Islands * `MQ` - Martinique * `MR` - Mauritania * `MU` - Mauritius * `YT` - Mayotte * `MX` - Mexico * `FM` - Micronesia * `MD` - Moldova * `MC` - Monaco * `MN` - Mongolia * `ME` - Montenegro * `MS` - Montserrat * `MA` - Morocco * `MZ` - Mozambique * `MM` - Myanmar * `NA` - Namibia * `NR` - Nauru * `NP` - Nepal * `NL` - Netherlands * `NC` - New Caledonia * `NZ` - New Zealand * `NI` - Nicaragua * `NE` - Niger * `NG` - Nigeria * `NU` - Niue * `NF` - Norfolk Island * `MK` - North Macedonia * `MP` - Northern Mariana Islands * `NO` - Norway * `OM` - Oman * `PK` - Pakistan * `PW` - Palau * `PS` - Palestine, State of * `PA` - Panama * `PG` - Papua New Guinea * `PY` - Paraguay * `PE` - Peru * `PH` - Philippines * `PN` - Pitcairn * `PL` - Poland * `PT` - Portugal * `PR` - Puerto Rico * `QA` - Qatar * `RE` - Réunion * `RO` - Romania * `RU` - Russian Federation * `RW` - Rwanda * `BL` - Saint Barthélemy * `SH` - Saint Helena * `KN` - Saint Kitts and Nevis * `LC` - Saint Lucia * `MF` - Saint Martin * `PM` - Saint Pierre and Miquelon * `VC` - Saint Vincent and the Grenadines * `WS` - Samoa * `SM` - San Marino * `ST` - Sao Tome and Principe * `SA` - Saudi Arabia * `SN` - Senegal * `RS` - Serbia * `SC` - Seychelles * `SL` - Sierra Leone * `SG` - Singapore * `SX` - Sint Maarten * `SK` - Slovakia * `SI` - Slovenia * `SB` - Solomon Islands * `SO` - Somalia * `ZA` - South Africa * `GS` - South Georgia and the South Sandwich Islands * `SS` - South Sudan * `ES` - Spain * `LK` - Sri Lanka * `SD` - Sudan * `SR` - Suriname * `SJ` - Svalbard and Jan Mayen * `SE` - Sweden * `CH` - Switzerland * `SY` - Syrian Arab Republic * `TW` - Taiwan * `TJ` - Tajikistan * `TZ` - Tanzania * `TH` - Thailand * `TL` - Timor-Leste * `TG` - Togo * `TK` - Tokelau * `TO` - Tonga * `TT` - Trinidad and Tobago * `TN` - Tunisia * `TR` - Turkey * `TM` - Turkmenistan * `TC` - Turks and Caicos Islands * `TV` - Tuvalu * `UG` - Uganda * `UA` - Ukraine * `AE` - United Arab Emirates * `GB` - United Kingdom * `UM` - United States Minor Outlying Islands * `US` - United States of America * `UY` - Uruguay * `UZ` - Uzbekistan * `VU` - Vanuatu * `VE` - Venezuela * `VN` - Viet Nam * `VG` - Virgin Islands * `VI` - Virgin Islands * `WF` - Wallis and Futuna * `EH` - Western Sahara * `YE` - Yemen * `ZM` - Zambia * `ZW` - Zimbabwe |
| `first_name` | string \| null | no | Max length: `255`. |
| `last_name` | string \| null | no | Max length: `255`. |
| `middle_name` | string \| null | no | Max length: `255`. |
| `date_of_birth` | string \| null | no | Date of birth. Accepts a full or partial date in YYYY, YYYY-MM or YYYY-MM-DD format (e.g. when only the year is known). Max length: `10`. |
| `aliases` | array of string | no | Alternative names or aliases for the compliance entity. |

<a id="schema-ComplianceEntityResult"></a>

### ComplianceEntityResult

Compliance entity result.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | yes | Read-only. |
| `entity` | [ComplianceEntityRetrieve](#schema-ComplianceEntityRetrieve) | yes | Read-only. |
| `result_type` | [ResultTypeEnum](#schema-ResultTypeEnum) | yes |  |
| `confidence` | number (double) \| null | no |  |
| `name` | string | yes | Max length: `1024`. |
| `image` | string (uri) \| null | no |  |
| `title` | string \| null | no |  |
| `text` | string \| null | no |  |
| `title_en` | string \| null | no |  |
| `text_en` | string \| null | no |  |
| `formatted_title` | string \| null | no |  |
| `formatted_text` | string \| null | no |  |
| `formatted_title_en` | string \| null | no |  |
| `formatted_text_en` | string \| null | no |  |
| `language` | [LanguageEnum](#schema-LanguageEnum) \| null | no |  |
| `source_name` | string \| null | no | Max length: `255`. |
| `source_type` | [SourceTypeEnum](#schema-SourceTypeEnum) | no | Adverse media sub-source (news / icij / enforcement). Missing from the compliance API is treated as news. * `news` - News * `icij` - ICIJ * `enforcement` - Enforcement |
| `structured` | any \| null | no | Generic entity_document/v1 payload (enforcement/sanctions listings). |
| `source_date` | string (date-time) \| null | no |  |
| `url` | string (uri) \| null | no | Max length: `2048`. |
| `pep_tier` | [PepTierEnum](#schema-PepTierEnum) \| null | no | PEP tier of this match (national / regional / local / international). * `TIER_1` - Tier 1 (national) * `TIER_2` - Tier 2 (regional) * `TIER_3` - Tier 3 (local / SOE) * `INTERNATIONAL_ORG` - International organization |
| `pep_relationship` | [PepRelationshipEnum](#schema-PepRelationshipEnum) \| null | no | How this person relates to the PEP status: self, family or associate. * `SELF` - Self * `FAMILY` - Family member * `ASSOCIATE` - Close associate |
| `pep_related_to` | string \| null | no | Name of the PEP this person is related to (family / associate only). Max length: `255`. |
| `soe_relationship_type` | [SoeRelationshipTypeEnum](#schema-SoeRelationshipTypeEnum) \| null | no | Nature of this match's government relationship (ownership level or control without ownership). * `WHOLLY_OWNED` - Wholly state-owned * `MAJORITY_OWNED` - Majority state-owned * `MINORITY_OWNED` - Minority state-owned * `STATE_CONTROLLED` - State-controlled * `GOVERNMENT_LINKED` - Government-linked |
| `soe_ownership_percentage` | number (double) \| null | no | Percentage of government ownership, when reported. |
| `soe_parent_entity` | string \| null | no | Immediate parent or controlling government entity. Max length: `1024`. |
| `addresses` | array of [ComplianceEntityResultAddress](#schema-ComplianceEntityResultAddress) | yes |  |
| `tags` | array of [ComplianceEntityResultTag](#schema-ComplianceEntityResultTag) | yes |  |
| `sources` | array of [ComplianceEntityResultSource](#schema-ComplianceEntityResultSource) | yes |  |
| `automated_false_positive_rating` | string \| null | yes |  |
| `automated_false_positive_rating_comments` | string \| null | yes |  |
| `created_at` | string (date-time) | yes | Read-only. |

<a id="schema-ComplianceEntityResultAddress"></a>

### ComplianceEntityResultAddress

Compliance entity result address.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `street` | string \| null | no |  |
| `city` | string \| null | no |  |
| `postal_code` | string \| null | no |  |
| `country` | [CountryEnum](#schema-CountryEnum) \| null | no |  |

<a id="schema-ComplianceEntityResultSource"></a>

### ComplianceEntityResultSource

Compliance entity result source.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `title` | string \| null | no |  |
| `description` | string \| null | no |  |
| `url` | string (uri) | yes | Max length: `2048`. |
| `domain` | string \| null | no | Max length: `255`. |
| `document` | string (uri) \| null | no |  |
| `publication_date` | string (date) \| null | no |  |

<a id="schema-ComplianceEntityResultTag"></a>

### ComplianceEntityResultTag

Compliance entity result tag.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `tag` | string | yes | Max length: `255`. |

<a id="schema-ComplianceEntityRetrieve"></a>

### ComplianceEntityRetrieve

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | yes | Read-only. |
| `name` | string | yes | Max length: `1024`. |
| `status` | [ComplianceEntityRetrieveStatusEnum](#schema-ComplianceEntityRetrieveStatusEnum) | no |  |
| `gender` | [GenderEnum](#schema-GenderEnum) \| null | no |  |
| `date_of_birth` | string \| null | no | Max length: `10`. |
| `entity_type` | [ComplianceEntityTypeEnum](#schema-ComplianceEntityTypeEnum) | yes |  |
| `entity_role` | string | yes | Max length: `255`. |
| `ubo` | [UBO](#schema-UBO) \| null | yes |  |
| `country` | string \| null | no | Max length: `2`. |
| `aliases` | array of string | yes | Read-only. |
| `sanction_monitoring_enabled` | boolean | yes | Read-only. |
| `adverse_media_monitoring_enabled` | boolean | yes | Read-only. |

<a id="schema-ComplianceEntityRetrieveStatusEnum"></a>

### ComplianceEntityRetrieveStatusEnum

* `on_hold` - On Hold
* `queued` - Queued
* `in_progress` - In Progress
* `completed` - Completed
* `skipped` - Skipped
* `failed` - Failed

Type: string

<a id="schema-ComplianceEntityTypeEnum"></a>

### ComplianceEntityTypeEnum

* `individual` - Individual
* `company` - Company
* `vessel` - Vessel

Type: string

<a id="schema-CountryEnum"></a>

### CountryEnum

* `AF` - Afghanistan
* `AX` - Aland Islands
* `AL` - Albania
* `DZ` - Algeria
* `AS` - American Samoa
* `AD` - Andorra
* `AO` - Angola
* `AI` - Anguilla
* `AQ` - Antarctica
* `AG` - Antigua and Barbuda
* `AR` - Argentina
* `AM` - Armenia
* `AW` - Aruba
* `AU` - Australia
* `AT` - Austria
* `AZ` - Azerbaijan
* `BS` - Bahamas
* `BH` - Bahrain
* `BD` - Bangladesh
* `BB` - Barbados
* `BY` - Belarus
* `BE` - Belgium
* `BZ` - Belize
* `BJ` - Benin
* `BM` - Bermuda
* `BT` - Bhutan
* `BO` - Bolivia
* `BQ` - Bonaire
* `BA` - Bosnia and Herzegovina
* `BW` - Botswana
* `BV` - Bouvet Island
* `BR` - Brazil
* `IO` - British Indian Ocean Territory
* `BN` - Brunei Darussalam
* `BG` - Bulgaria
* `BF` - Burkina Faso
* `BI` - Burundi
* `CV` - Cabo Verde
* `KH` - Cambodia
* `CM` - Cameroon
* `CA` - Canada
* `KY` - Cayman Islands
* `CF` - Central African Republic
* `TD` - Chad
* `CL` - Chile
* `CN` - China
* `CX` - Christmas Island
* `CC` - Cocos Keeling Islands
* `CO` - Colombia
* `KM` - Comoros
* `CG` - Congo
* `CD` - Congo Democratic Republic
* `CK` - Cook Islands
* `CR` - Costa Rica
* `CI` - Cote d'Ivoire
* `HR` - Croatia
* `CU` - Cuba
* `CW` - Curacao
* `CY` - Cyprus
* `CZ` - Czechia
* `DK` - Denmark
* `DJ` - Djibouti
* `DM` - Dominica
* `DO` - Dominican Republic
* `EC` - Ecuador
* `EG` - Egypt
* `SV` - El Salvador
* `GQ` - Equatorial Guinea
* `ER` - Eritrea
* `EE` - Estonia
* `SZ` - Eswatini
* `ET` - Ethiopia
* `FK` - Falkland Islands
* `FO` - Faroe Islands
* `FJ` - Fiji
* `FI` - Finland
* `FR` - France
* `GF` - French Guiana
* `PF` - French Polynesia
* `TF` - French Southern Territories
* `GA` - Gabon
* `GM` - Gambia
* `GE` - Georgia
* `DE` - Germany
* `GH` - Ghana
* `GI` - Gibraltar
* `GR` - Greece
* `GL` - Greenland
* `GD` - Grenada
* `GP` - Guadeloupe
* `GU` - Guam
* `GT` - Guatemala
* `GG` - Guernsey
* `GN` - Guinea
* `GW` - Guinea-Bissau
* `GY` - Guyana
* `HT` - Haiti
* `HM` - Heard Island and McDonald Islands
* `VA` - Holy See
* `HN` - Honduras
* `HK` - Hong Kong
* `HU` - Hungary
* `IS` - Iceland
* `IN` - India
* `ID` - Indonesia
* `IR` - Iran (Islamic Republic of)
* `IQ` - Iraq
* `IE` - Ireland
* `IM` - Isle of Man
* `IL` - Israel
* `IT` - Italy
* `JM` - Jamaica
* `JP` - Japan
* `JE` - Jersey
* `JO` - Jordan
* `KZ` - Kazakhstan
* `KE` - Kenya
* `KI` - Kiribati
* `KP` - Korea (the Democratic People's Republic of)
* `KR` - Korea (the Republic of)
* `XK` - Kosovo
* `KW` - Kuwait
* `KG` - Kyrgyzstan
* `LA` - Lao People's Democratic Republic
* `LV` - Latvia
* `LB` - Lebanon
* `LS` - Lesotho
* `LR` - Liberia
* `LY` - Libya
* `LI` - Liechtenstein
* `LT` - Lithuania
* `LU` - Luxembourg
* `MO` - Macao
* `MG` - Madagascar
* `MW` - Malawi
* `MY` - Malaysia
* `MV` - Maldives
* `ML` - Mali
* `MT` - Malta
* `MH` - Marshall Islands
* `MQ` - Martinique
* `MR` - Mauritania
* `MU` - Mauritius
* `YT` - Mayotte
* `MX` - Mexico
* `FM` - Micronesia
* `MD` - Moldova
* `MC` - Monaco
* `MN` - Mongolia
* `ME` - Montenegro
* `MS` - Montserrat
* `MA` - Morocco
* `MZ` - Mozambique
* `MM` - Myanmar
* `NA` - Namibia
* `NR` - Nauru
* `NP` - Nepal
* `NL` - Netherlands
* `NC` - New Caledonia
* `NZ` - New Zealand
* `NI` - Nicaragua
* `NE` - Niger
* `NG` - Nigeria
* `NU` - Niue
* `NF` - Norfolk Island
* `MK` - North Macedonia
* `MP` - Northern Mariana Islands
* `NO` - Norway
* `OM` - Oman
* `PK` - Pakistan
* `PW` - Palau
* `PS` - Palestine, State of
* `PA` - Panama
* `PG` - Papua New Guinea
* `PY` - Paraguay
* `PE` - Peru
* `PH` - Philippines
* `PN` - Pitcairn
* `PL` - Poland
* `PT` - Portugal
* `PR` - Puerto Rico
* `QA` - Qatar
* `RE` - Réunion
* `RO` - Romania
* `RU` - Russian Federation
* `RW` - Rwanda
* `BL` - Saint Barthélemy
* `SH` - Saint Helena
* `KN` - Saint Kitts and Nevis
* `LC` - Saint Lucia
* `MF` - Saint Martin
* `PM` - Saint Pierre and Miquelon
* `VC` - Saint Vincent and the Grenadines
* `WS` - Samoa
* `SM` - San Marino
* `ST` - Sao Tome and Principe
* `SA` - Saudi Arabia
* `SN` - Senegal
* `RS` - Serbia
* `SC` - Seychelles
* `SL` - Sierra Leone
* `SG` - Singapore
* `SX` - Sint Maarten
* `SK` - Slovakia
* `SI` - Slovenia
* `SB` - Solomon Islands
* `SO` - Somalia
* `ZA` - South Africa
* `GS` - South Georgia and the South Sandwich Islands
* `SS` - South Sudan
* `ES` - Spain
* `LK` - Sri Lanka
* `SD` - Sudan
* `SR` - Suriname
* `SJ` - Svalbard and Jan Mayen
* `SE` - Sweden
* `CH` - Switzerland
* `SY` - Syrian Arab Republic
* `TW` - Taiwan
* `TJ` - Tajikistan
* `TZ` - Tanzania
* `TH` - Thailand
* `TL` - Timor-Leste
* `TG` - Togo
* `TK` - Tokelau
* `TO` - Tonga
* `TT` - Trinidad and Tobago
* `TN` - Tunisia
* `TR` - Turkey
* `TM` - Turkmenistan
* `TC` - Turks and Caicos Islands
* `TV` - Tuvalu
* `UG` - Uganda
* `UA` - Ukraine
* `AE` - United Arab Emirates
* `GB` - United Kingdom
* `UM` - United States Minor Outlying Islands
* `US` - United States of America
* `UY` - Uruguay
* `UZ` - Uzbekistan
* `VU` - Vanuatu
* `VE` - Venezuela
* `VN` - Viet Nam
* `VG` - Virgin Islands
* `VI` - Virgin Islands
* `WF` - Wallis and Futuna
* `EH` - Western Sahara
* `YE` - Yemen
* `ZM` - Zambia
* `ZW` - Zimbabwe

Type: string

<a id="schema-DataExportFileType"></a>

### DataExportFileType

* `PDF` - PDF
* `EXCEL` - Excel
* `JSONL` - JSONL

Type: string

<a id="schema-EventTypeEnum"></a>

### EventTypeEnum

* `compliance_check.status_changed` - Compliance Check Status Changed
* `compliance_check.status_completed` - Compliance Check Status Completed
* `compliance_check.results.new` - Compliance Check Results New
* `company_registration.status_changed` - Company Registration Status Changed
* `company_registration.status_registered` - Company Registration Status Registered
* `company.updated` - Company Updated

Type: string

<a id="schema-ExportTypeEnum"></a>

### ExportTypeEnum

* `NEWS` - News
* `BINDER` - Binder
* `COMPANIES` - Companies
* `REGISTRATIONS` - Registrations
* `COMPLIANCE` - Compliance
* `COMPLIANCE_CHANGELOG` - Compliance changelog
* `BILLING` - Billing
* `KEY_EVENTS` - Key Events

Type: string

<a id="schema-ExternalArticleFeedback"></a>

### ExternalArticleFeedback

#### External Article Feedback

Allows users to provide feedback on specific articles, including feedback type,
comments, and contact information.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | yes | Read-only. |
| `article` | string (uuid) | yes |  |
| `feedback_type` | [ExternalArticleFeedbackFeedbackTypeEnum](#schema-ExternalArticleFeedbackFeedbackTypeEnum) | no |  |
| `email` | string (email) \| null | no | Max length: `254`. |
| `comment` | string \| null | no |  |

<a id="schema-ExternalArticleFeedbackFeedbackTypeEnum"></a>

### ExternalArticleFeedbackFeedbackTypeEnum

* `false_positive` - False Positive
* `no_risk` - No Risk
* `risk_confirmed` - Risk Confirmed

Type: string

<a id="schema-ExternalArticleFeedbackRequest"></a>

### ExternalArticleFeedbackRequest

#### External Article Feedback

Allows users to provide feedback on specific articles, including feedback type,
comments, and contact information.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `article` | string (uuid) | yes |  |
| `feedback_type` | [ExternalArticleFeedbackFeedbackTypeEnum](#schema-ExternalArticleFeedbackFeedbackTypeEnum) | no |  |
| `email` | string (email) \| null | no | Max length: `254`. |
| `comment` | string \| null | no |  |

<a id="schema-ForbiddenError"></a>

### ForbiddenError

Serializer for forbidden error.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `detail` | string | yes |  |

<a id="schema-GenderEnum"></a>

### GenderEnum

* `male` - Male
* `female` - Female

Type: string

<a id="schema-GlobalUltimateCountryEnum"></a>

### GlobalUltimateCountryEnum

* `AF` - Afghanistan
* `AX` - Aland Islands
* `AL` - Albania
* `DZ` - Algeria
* `AS` - American Samoa
* `AD` - Andorra
* `AO` - Angola
* `AI` - Anguilla
* `AQ` - Antarctica
* `AG` - Antigua and Barbuda
* `AR` - Argentina
* `AM` - Armenia
* `AW` - Aruba
* `AU` - Australia
* `AT` - Austria
* `AZ` - Azerbaijan
* `BS` - Bahamas
* `BH` - Bahrain
* `BD` - Bangladesh
* `BB` - Barbados
* `BY` - Belarus
* `BE` - Belgium
* `BZ` - Belize
* `BJ` - Benin
* `BM` - Bermuda
* `BT` - Bhutan
* `BO` - Bolivia
* `BQ` - Bonaire
* `BA` - Bosnia and Herzegovina
* `BW` - Botswana
* `BV` - Bouvet Island
* `BR` - Brazil
* `IO` - British Indian Ocean Territory
* `BN` - Brunei Darussalam
* `BG` - Bulgaria
* `BF` - Burkina Faso
* `BI` - Burundi
* `CV` - Cabo Verde
* `KH` - Cambodia
* `CM` - Cameroon
* `CA` - Canada
* `KY` - Cayman Islands
* `CF` - Central African Republic
* `TD` - Chad
* `CL` - Chile
* `CN` - China
* `CX` - Christmas Island
* `CC` - Cocos Keeling Islands
* `CO` - Colombia
* `KM` - Comoros
* `CG` - Congo
* `CD` - Congo Democratic Republic
* `CK` - Cook Islands
* `CR` - Costa Rica
* `CI` - Cote d'Ivoire
* `HR` - Croatia
* `CU` - Cuba
* `CW` - Curacao
* `CY` - Cyprus
* `CZ` - Czechia
* `DK` - Denmark
* `DJ` - Djibouti
* `DM` - Dominica
* `DO` - Dominican Republic
* `EC` - Ecuador
* `EG` - Egypt
* `SV` - El Salvador
* `GQ` - Equatorial Guinea
* `ER` - Eritrea
* `EE` - Estonia
* `SZ` - Eswatini
* `ET` - Ethiopia
* `FK` - Falkland Islands
* `FO` - Faroe Islands
* `FJ` - Fiji
* `FI` - Finland
* `FR` - France
* `GF` - French Guiana
* `PF` - French Polynesia
* `TF` - French Southern Territories
* `GA` - Gabon
* `GM` - Gambia
* `GE` - Georgia
* `DE` - Germany
* `GH` - Ghana
* `GI` - Gibraltar
* `GR` - Greece
* `GL` - Greenland
* `GD` - Grenada
* `GP` - Guadeloupe
* `GU` - Guam
* `GT` - Guatemala
* `GG` - Guernsey
* `GN` - Guinea
* `GW` - Guinea-Bissau
* `GY` - Guyana
* `HT` - Haiti
* `HM` - Heard Island and McDonald Islands
* `VA` - Holy See
* `HN` - Honduras
* `HK` - Hong Kong
* `HU` - Hungary
* `IS` - Iceland
* `IN` - India
* `ID` - Indonesia
* `IR` - Iran (Islamic Republic of)
* `IQ` - Iraq
* `IE` - Ireland
* `IM` - Isle of Man
* `IL` - Israel
* `IT` - Italy
* `JM` - Jamaica
* `JP` - Japan
* `JE` - Jersey
* `JO` - Jordan
* `KZ` - Kazakhstan
* `KE` - Kenya
* `KI` - Kiribati
* `KP` - Korea (the Democratic People's Republic of)
* `KR` - Korea (the Republic of)
* `XK` - Kosovo
* `KW` - Kuwait
* `KG` - Kyrgyzstan
* `LA` - Lao People's Democratic Republic
* `LV` - Latvia
* `LB` - Lebanon
* `LS` - Lesotho
* `LR` - Liberia
* `LY` - Libya
* `LI` - Liechtenstein
* `LT` - Lithuania
* `LU` - Luxembourg
* `MO` - Macao
* `MG` - Madagascar
* `MW` - Malawi
* `MY` - Malaysia
* `MV` - Maldives
* `ML` - Mali
* `MT` - Malta
* `MH` - Marshall Islands
* `MQ` - Martinique
* `MR` - Mauritania
* `MU` - Mauritius
* `YT` - Mayotte
* `MX` - Mexico
* `FM` - Micronesia
* `MD` - Moldova
* `MC` - Monaco
* `MN` - Mongolia
* `ME` - Montenegro
* `MS` - Montserrat
* `MA` - Morocco
* `MZ` - Mozambique
* `MM` - Myanmar
* `NA` - Namibia
* `NR` - Nauru
* `NP` - Nepal
* `NL` - Netherlands
* `NC` - New Caledonia
* `NZ` - New Zealand
* `NI` - Nicaragua
* `NE` - Niger
* `NG` - Nigeria
* `NU` - Niue
* `NF` - Norfolk Island
* `MK` - North Macedonia
* `MP` - Northern Mariana Islands
* `NO` - Norway
* `OM` - Oman
* `PK` - Pakistan
* `PW` - Palau
* `PS` - Palestine, State of
* `PA` - Panama
* `PG` - Papua New Guinea
* `PY` - Paraguay
* `PE` - Peru
* `PH` - Philippines
* `PN` - Pitcairn
* `PL` - Poland
* `PT` - Portugal
* `PR` - Puerto Rico
* `QA` - Qatar
* `RE` - Réunion
* `RO` - Romania
* `RU` - Russian Federation
* `RW` - Rwanda
* `BL` - Saint Barthélemy
* `SH` - Saint Helena
* `KN` - Saint Kitts and Nevis
* `LC` - Saint Lucia
* `MF` - Saint Martin
* `PM` - Saint Pierre and Miquelon
* `VC` - Saint Vincent and the Grenadines
* `WS` - Samoa
* `SM` - San Marino
* `ST` - Sao Tome and Principe
* `SA` - Saudi Arabia
* `SN` - Senegal
* `RS` - Serbia
* `SC` - Seychelles
* `SL` - Sierra Leone
* `SG` - Singapore
* `SX` - Sint Maarten
* `SK` - Slovakia
* `SI` - Slovenia
* `SB` - Solomon Islands
* `SO` - Somalia
* `ZA` - South Africa
* `GS` - South Georgia and the South Sandwich Islands
* `SS` - South Sudan
* `ES` - Spain
* `LK` - Sri Lanka
* `SD` - Sudan
* `SR` - Suriname
* `SJ` - Svalbard and Jan Mayen
* `SE` - Sweden
* `CH` - Switzerland
* `SY` - Syrian Arab Republic
* `TW` - Taiwan
* `TJ` - Tajikistan
* `TZ` - Tanzania
* `TH` - Thailand
* `TL` - Timor-Leste
* `TG` - Togo
* `TK` - Tokelau
* `TO` - Tonga
* `TT` - Trinidad and Tobago
* `TN` - Tunisia
* `TR` - Turkey
* `TM` - Turkmenistan
* `TC` - Turks and Caicos Islands
* `TV` - Tuvalu
* `UG` - Uganda
* `UA` - Ukraine
* `AE` - United Arab Emirates
* `GB` - United Kingdom
* `UM` - United States Minor Outlying Islands
* `US` - United States of America
* `UY` - Uruguay
* `UZ` - Uzbekistan
* `VU` - Vanuatu
* `VE` - Venezuela
* `VN` - Viet Nam
* `VG` - Virgin Islands
* `VI` - Virgin Islands
* `WF` - Wallis and Futuna
* `EH` - Western Sahara
* `YE` - Yemen
* `ZM` - Zambia
* `ZW` - Zimbabwe

Type: string

<a id="schema-IndustryCode"></a>

### IndustryCode

#### Industry Code

Industry classification codes (e.g., NACE, SBI, SIC).

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `code` | string | yes | Max length: `10`. |
| `description` | string \| null | no | Max length: `255`. |

<a id="schema-InternalServerError"></a>

### InternalServerError

Serializer for handling server errors.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `detail` | string | yes |  |

<a id="schema-IsPaywalledEnum"></a>

### IsPaywalledEnum

* `full` - Full
* `partial` - Partial

Type: string

<a id="schema-LanguageEnum"></a>

### LanguageEnum

* `af` - Afrikaans
* `ar` - Arabic
* `az` - Azerbaijani
* `bg` - Bulgarian
* `be` - Belarusian
* `bn` - Bengali
* `br` - Breton
* `bs` - Bosnian
* `ca` - Catalan
* `cs` - Czech
* `cy` - Welsh
* `da` - Danish
* `de` - German
* `el` - Greek
* `en` - English
* `eo` - Esperanto
* `es` - Spanish
* `et` - Estonian
* `eu` - Basque
* `fa` - Persian
* `fi` - Finnish
* `fr` - French
* `fy` - Frisian
* `ga` - Irish
* `gd` - Scottish Gaelic
* `gl` - Galician
* `he` - Hebrew
* `hi` - Hindi
* `hr` - Croatian
* `hu` - Hungarian
* `hy` - Armenian
* `ia` - Interlingua
* `id` - Indonesian
* `ig` - Igbo
* `io` - Ido
* `is` - Icelandic
* `it` - Italian
* `ja` - Japanese
* `ka` - Georgian
* `kk` - Kazakh
* `km` - Khmer
* `kn` - Kannada
* `ko` - Korean
* `ky` - Kyrgyz
* `lb` - Luxembourgish
* `lt` - Lithuanian
* `lv` - Latvian
* `mk` - Macedonian
* `ml` - Malayalam
* `mn` - Mongolian
* `mr` - Marathi
* `my` - Burmese
* `ne` - Nepali
* `nl` - Dutch
* `no` - Norwegian
* `os` - Ossetic
* `pa` - Punjabi
* `pl` - Polish
* `pt` - Portuguese
* `ro` - Romanian
* `ru` - Russian
* `sk` - Slovak
* `sl` - Slovenian
* `sq` - Albanian
* `sr` - Serbian
* `sv` - Swedish
* `sw` - Swahili
* `ta` - Tamil
* `te` - Telugu
* `tg` - Tajik
* `th` - Thai
* `tk` - Turkmen
* `tr` - Turkish
* `tt` - Tatar
* `uk` - Ukrainian
* `ur` - Urdu
* `uz` - Uzbek
* `vi` - Vietnamese
* `zh` - Chinese

Type: string

<a id="schema-MediaTypeEnum"></a>

### MediaTypeEnum

* `GAZETTE` - GAZETTE
* `MAINSTREAM` - MAINSTREAM

Type: string

<a id="schema-NewsCompany"></a>

### NewsCompany

#### News Company

Company information when associated with news articles. Includes DUNS numbers and an
optional customer reference.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `duns_number` | string \| null | no | Max length: `9`. |
| `external_id` | string (uuid) | no |  |
| `name` | string | yes | Max length: `1024`. |
| `country` | [CountryEnum](#schema-CountryEnum) | yes |  |
| `global_ultimate_duns_number` | string \| null | no | Max length: `9`. |
| `global_ultimate_name` | string \| null | no | Max length: `1024`. |
| `customer_reference` | string | yes | Get Customer reference. Read-only. |

<a id="schema-NotFoundError"></a>

### NotFoundError

Serializer for not found error.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `detail` | string | yes |  |

<a id="schema-NullEnum"></a>

### NullEnum

Type: any

<a id="schema-PaginatedArticleList"></a>

### PaginatedArticleList

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `total_results` | number \| null | no | The total number of results matching the search criteria, regardless of the current page. |
| `next_key` | string \| null | no | A cursor value used for pagination. Include this value in the `next_key` query parameter of your next request to retrieve the subsequent page of results. If this value is `null`, there are no more results to fetch. |
| `results` | array of [Article](#schema-Article) | no |  |

<a id="schema-PaginatedCompanyAttributeChangeList"></a>

### PaginatedCompanyAttributeChangeList

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `next_key` | string \| null | no | A cursor value used for pagination. Include this value in the `next_key` query parameter of your next request to retrieve the subsequent page of results. If this value is `null`, there are no more results to fetch. |
| `total_results` | number \| null | no | The total number of results matching the search criteria, regardless of the current page. |
| `results` | array of [CompanyAttributeChange](#schema-CompanyAttributeChange) | no |  |

<a id="schema-PaginatedCompanyInvestigationList"></a>

### PaginatedCompanyInvestigationList

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `next_key` | string \| null | no | A cursor value used for pagination. Include this value in the `next_key` query parameter of your next request to retrieve the subsequent page of results. If this value is `null`, there are no more results to fetch. |
| `total_results` | number \| null | no | The total number of results matching the search criteria, regardless of the current page. |
| `results` | array of [CompanyInvestigation](#schema-CompanyInvestigation) | no |  |

<a id="schema-PaginatedComplianceCheckListList"></a>

### PaginatedComplianceCheckListList

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `next_key` | string \| null | no | A cursor value used for pagination. Include this value in the `next_key` query parameter of your next request to retrieve the subsequent page of results. If this value is `null`, there are no more results to fetch. |
| `total_results` | number \| null | no | The total number of results matching the search criteria, regardless of the current page. |
| `results` | array of [ComplianceCheckList](#schema-ComplianceCheckList) | no |  |

<a id="schema-PaginatedComplianceEntityResultList"></a>

### PaginatedComplianceEntityResultList

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `next_key` | string \| null | no | A cursor value used for pagination. Include this value in the `next_key` query parameter of your next request to retrieve the subsequent page of results. If this value is `null`, there are no more results to fetch. |
| `total_results` | number \| null | no | The total number of results matching the search criteria, regardless of the current page. |
| `results` | array of [ComplianceEntityResult](#schema-ComplianceEntityResult) | no |  |

<a id="schema-PaginatedPortfolioCompanyList"></a>

### PaginatedPortfolioCompanyList

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `next_key` | string \| null | no | A cursor value used for pagination. Include this value in the `next_key` query parameter of your next request to retrieve the subsequent page of results. If this value is `null`, there are no more results to fetch. |
| `total_results` | number \| null | no | The total number of results matching the search criteria, regardless of the current page. |
| `results` | array of [PortfolioCompany](#schema-PortfolioCompany) | no |  |

<a id="schema-PaginatedPortfolioList"></a>

### PaginatedPortfolioList

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `next_key` | string \| null | no | A cursor value used for pagination. Include this value in the `next_key` query parameter of your next request to retrieve the subsequent page of results. If this value is `null`, there are no more results to fetch. |
| `total_results` | number \| null | no | The total number of results matching the search criteria, regardless of the current page. |
| `results` | array of [Portfolio](#schema-Portfolio) | no |  |

<a id="schema-PaginatedSavedArticleFilterList"></a>

### PaginatedSavedArticleFilterList

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `next_key` | string \| null | no | A cursor value used for pagination. Include this value in the `next_key` query parameter of your next request to retrieve the subsequent page of results. If this value is `null`, there are no more results to fetch. |
| `total_results` | number \| null | no | The total number of results matching the search criteria, regardless of the current page. |
| `results` | array of [SavedArticleFilter](#schema-SavedArticleFilter) | no |  |

<a id="schema-PaginatedUniversalCompanyList"></a>

### PaginatedUniversalCompanyList

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `total_results` | number \| null | no | The total number of results matching the search criteria, regardless of the current page. |
| `next_key` | string \| null | no | A cursor value used for pagination. Include this value in the `next_key` query parameter of your next request to retrieve the subsequent page of results. If this value is `null`, there are no more results to fetch. |
| `results` | array of [UniversalCompany](#schema-UniversalCompany) | no |  |

<a id="schema-PaginatedWebhookDeliveryList"></a>

### PaginatedWebhookDeliveryList

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `next_key` | string \| null | no | A cursor value used for pagination. Include this value in the `next_key` query parameter of your next request to retrieve the subsequent page of results. If this value is `null`, there are no more results to fetch. |
| `total_results` | number \| null | no | The total number of results matching the search criteria, regardless of the current page. |
| `results` | array of [WebhookDelivery](#schema-WebhookDelivery) | no |  |

<a id="schema-PaginatedWebhookList"></a>

### PaginatedWebhookList

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `next_key` | string \| null | no | A cursor value used for pagination. Include this value in the `next_key` query parameter of your next request to retrieve the subsequent page of results. If this value is `null`, there are no more results to fetch. |
| `total_results` | number \| null | no | The total number of results matching the search criteria, regardless of the current page. |
| `results` | array of [Webhook](#schema-Webhook) | no |  |

<a id="schema-PaginatedWebhookSubscriptionList"></a>

### PaginatedWebhookSubscriptionList

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `next_key` | string \| null | no | A cursor value used for pagination. Include this value in the `next_key` query parameter of your next request to retrieve the subsequent page of results. If this value is `null`, there are no more results to fetch. |
| `total_results` | number \| null | no | The total number of results matching the search criteria, regardless of the current page. |
| `results` | array of [WebhookSubscription](#schema-WebhookSubscription) | no |  |

<a id="schema-PatchedWebhookRequest"></a>

### PatchedWebhookRequest

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `url` | string (uri) | no | Min length: `1`. Max length: `200`. |
| `enabled` | boolean | no |  |
| `subscriptions` | array of [WebhookSubscriptionRequest](#schema-WebhookSubscriptionRequest) | no |  |

<a id="schema-PepRelationshipEnum"></a>

### PepRelationshipEnum

* `SELF` - Self
* `FAMILY` - Family member
* `ASSOCIATE` - Close associate

Type: string

<a id="schema-PepTierEnum"></a>

### PepTierEnum

* `TIER_1` - Tier 1 (national)
* `TIER_2` - Tier 2 (regional)
* `TIER_3` - Tier 3 (local / SOE)
* `INTERNATIONAL_ORG` - International organization

Type: string

<a id="schema-PermissionEnum"></a>

### PermissionEnum

* `view_only` - Only Viewing Access
* `write` - View and Write Access
* `admin` - View, Write and Admin Access
* `owner` - Portfolio Owner

Type: string

<a id="schema-Portfolio"></a>

### Portfolio

Represents a collection of companies (a portfolio) managed by a user or profile.
Includes basic metadata and default permission settings.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | yes | Max length: `255`. |
| `external_id` | string (uuid) | yes | Read-only. |
| `customer_reference` | string \| null | no | Customer reference for the client to understand relationship. Max length: `255`. |
| `default_permission` | [PermissionEnum](#schema-PermissionEnum) \| null | no | Default permission for all users in organization. * `view_only` - Only Viewing Access * `write` - View and Write Access * `admin` - View, Write and Admin Access * `owner` - Portfolio Owner |

<a id="schema-PortfolioCompany"></a>

### PortfolioCompany

#### Portfolio-Company

Represents the association between a company and a portfolio, including portfolio-
specific data such as `customer_reference`.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `company` | [CompanyList](#schema-CompanyList) | yes | Read-only. |
| `customer_reference` | string \| null | no | Customer reference for the client to understand relationship. Max length: `255`. |
| `created_at` | string (date-time) | yes | Read-only. |

<a id="schema-PortfolioCompanyDetail"></a>

### PortfolioCompanyDetail

#### Portfolio Company Detail (Simplified)

A lightweight data structure for company identification (UUID, DUNS, Name, Country).

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | yes |  |
| `duns_number` | string \| null | yes | Read-only. |
| `name` | string | yes | Read-only. |
| `country` | [CountryEnum](#schema-CountryEnum) | yes | Read-only. |

<a id="schema-PortfolioCompanyDetailRequest"></a>

### PortfolioCompanyDetailRequest

#### Portfolio Company Detail (Simplified)

A lightweight data structure for company identification (UUID, DUNS, Name, Country).

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | yes |  |

<a id="schema-PortfolioRequest"></a>

### PortfolioRequest

#### Portfolio

Represents a collection of companies (a portfolio) managed by a user or profile.
Includes basic metadata and default permission settings.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | yes | Min length: `1`. Max length: `255`. |
| `customer_reference` | string \| null | no | Customer reference for the client to understand relationship. Max length: `255`. |
| `default_permission` | [PermissionEnum](#schema-PermissionEnum) \| null | no | Default permission for all users in organization. * `view_only` - Only Viewing Access * `write` - View and Write Access * `admin` - View, Write and Admin Access * `owner` - Portfolio Owner |

<a id="schema-RegenerateSecretResponse"></a>

### RegenerateSecretResponse

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `secret` | string | yes | Read-only. |

<a id="schema-Registration"></a>

### Registration

#### Company Registration

Handles the registration of companies for monitoring. New companies can be
identified by DUNS number, local registration number, or name and country.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | yes | Read-only. |
| `duns_number` | string \| null | no | Max length: `9`. |
| `company` | [PortfolioCompanyDetail](#schema-PortfolioCompanyDetail) \| null | no |  |
| `registration_number` | string \| null | no | Max length: `255`. |
| `primary_name` | string \| null | no | Max length: `255`. |
| `country` | [CountryEnum](#schema-CountryEnum) \| null | no |  |
| `customer_reference` | string \| null | no | Customer reference for the client to understand relationship. Max length: `255`. |
| `submit_investigation_when_not_identified` | boolean | no | With this option enabled a missing company investigation is submitted automatically when the registration cannot be identified, instead of failing with company not found. |
| `finished_at` | string (date-time) \| null | yes | Datestamp on when the registration was complete. If failed this is empty. Read-only. |
| `status` | [RegistrationStatusEnum](#schema-RegistrationStatusEnum) | yes | Read-only. |
| `status_text` | string | yes | Get Registration Status text. Read-only. |
| `progress` | number (double) | yes | Read-only. |

<a id="schema-RegistrationNumber"></a>

### RegistrationNumber

#### Registration Number

Company registration numbers, such as Chamber of Commerce (KvK) or VAT numbers.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `number` | string | yes | Max length: `255`. |
| `description` | string | yes | Max length: `1024`. |
| `type` | integer | yes | Dun and Bradstreet type code for the source of thisRegistration number. Minimum: `-2147483648`. Maximum: `2147483647`. |

<a id="schema-RegistrationRequest"></a>

### RegistrationRequest

#### Company Registration

Handles the registration of companies for monitoring. New companies can be
identified by DUNS number, local registration number, or name and country.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `duns_number` | string \| null | no | Max length: `9`. |
| `company` | [PortfolioCompanyDetailRequest](#schema-PortfolioCompanyDetailRequest) \| null | no |  |
| `registration_number` | string \| null | no | Max length: `255`. |
| `primary_name` | string \| null | no | Max length: `255`. |
| `country` | [CountryEnum](#schema-CountryEnum) \| null | no |  |
| `customer_reference` | string \| null | no | Customer reference for the client to understand relationship. Max length: `255`. |
| `submit_investigation_when_not_identified` | boolean | no | With this option enabled a missing company investigation is submitted automatically when the registration cannot be identified, instead of failing with company not found. |

<a id="schema-RegistrationStatusEnum"></a>

### RegistrationStatusEnum

* `queued_search` - Queued for search
* `searching` - Searching for company in registry
* `queued_registration` - Queued for registration
* `registering` - Registering company
* `queued_website_search` - Queued for website search
* `searching_website` - Searching for company website
* `searching_activity_description` - Generating company activity description
* `searching_website_icon` - Searching for company website icon
* `searching_directors` - Searching for directors online
* `social_search` - Searching for social media websites
* `generating_company_description` - Generating company description
* `determine_trade_names` - Determining trade names
* `searching_news` - Searching for news articles
* `processing_news` - Processing news articles
* `registered` - Registered
* `invalid_input` - Invalid input, please check your input
* `permission_denied` - Permission denied, please contact support
* `company_not_found` - Company has not been found in Dun and Bradstreet registry
* `expired` - Registration has been pending for too long, expired.
* `cancelled` - Registration has been cancelled.
* `failed` - Registration has failed, please check the error message

Type: string

<a id="schema-RelatedArticle"></a>

### RelatedArticle

#### Related Article

An article that is semantically related to another, including a distance score
indicating the degree of similarity.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `distance` | number (double) | yes |  |
| `article` | [Article](#schema-Article) | yes |  |

<a id="schema-ResultTypeEnum"></a>

### ResultTypeEnum

* `sanction` - Sanction
* `pep` - Politically Exposed Person
* `adverse_media` - Adverse media
* `enforcement` - Enforcement
* `govt_owned` - Government owned

Type: string

<a id="schema-SavedArticleFilter"></a>

### SavedArticleFilter

#### Saved Article Filter

Represents a named set of article search filters that can be reused.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | yes | Max length: `255`. |
| `external_id` | string (uuid) | yes | Read-only. |

<a id="schema-SoeRelationshipTypeEnum"></a>

### SoeRelationshipTypeEnum

* `WHOLLY_OWNED` - Wholly state-owned
* `MAJORITY_OWNED` - Majority state-owned
* `MINORITY_OWNED` - Minority state-owned
* `STATE_CONTROLLED` - State-controlled
* `GOVERNMENT_LINKED` - Government-linked

Type: string

<a id="schema-Source"></a>

### Source

Represents the origin of a news article, including its domain, URL, and name.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `domain` | string | yes | Max length: `255`. |
| `url` | string (uri) | yes | Max length: `200`. |
| `name` | string | yes | Max length: `255`. |

<a id="schema-SourceTypeEnum"></a>

### SourceTypeEnum

* `news` - News
* `icij` - ICIJ
* `enforcement` - Enforcement

Type: string

<a id="schema-SubArticle"></a>

### SubArticle

#### Sub-Article

A lightweight representation of an article that is part of a larger cluster or
related to a main article.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | no |  |
| `url` | string (uri) | yes | Max length: `512`. |

<a id="schema-TestWebhookDeliveryRequest"></a>

### TestWebhookDeliveryRequest

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `event_type` | [EventTypeEnum](#schema-EventTypeEnum) | no | Event type to test. Defaults to the first subscription on the webhook. * `compliance_check.status_changed` - Compliance Check Status Changed * `compliance_check.status_completed` - Compliance Check Status Completed * `compliance_check.results.new` - Compliance Check Results New * `company_registration.status_changed` - Company Registration Status Changed * `company_registration.status_registered` - Company Registration Status Registered * `company.updated` - Company Updated |

<a id="schema-ThrottlingError"></a>

### ThrottlingError

Serializer for throttling error.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `detail` | string | yes |  |

<a id="schema-UBO"></a>

### UBO

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | yes | Max length: `1024`. |
| `birth_date` | string \| null | no | Max length: `10`. |
| `is_person_with_significant_control` | boolean \| null | no |  |
| `degree_of_separation` | integer \| null | no | Minimum: `-2147483648`. Maximum: `2147483647`. |
| `is_beneficiary` | boolean \| null | no |  |
| `direct_ownership_percentage` | number (double) \| null | no |  |
| `indirect_ownership_percentage` | number (double) \| null | no |  |
| `beneficial_ownership_percentage` | number (double) \| null | no |  |
| `implied_direct_ownership_percentage` | number (double) \| null | no |  |
| `implied_indirect_ownership_percentage` | number (double) \| null | no |  |
| `implied_beneficial_ownership_percentage` | number (double) \| null | no |  |

<a id="schema-UnauthenticatedError"></a>

### UnauthenticatedError

Serializer for unauthenticated error.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `detail` | string | yes |  |

<a id="schema-UniversalCompany"></a>

### UniversalCompany

#### Universal Company Data

Handles company data from both internal and external sources (e.g., Dun &
Bradstreet). Provides a unified representation of a company.

- **DUNS Number**: Unique 9-digit identifier. - **External ID**: Internal unique
identifier if the company is registered. - **Industry Codes**: List of industry
classifications.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `duns_number` | string | yes |  |
| `external_id` | string \| null | yes |  |
| `name` | string | yes |  |
| `country` | string | yes |  |
| `industry_codes` | array of [UniversalIndustryCode](#schema-UniversalIndustryCode) | yes |  |
| `address_street` | string | yes |  |
| `address_place` | string | yes |  |
| `address_region` | string | yes |  |
| `address_postal` | string | yes |  |
| `social_logo` | string \| null | yes |  |
| `website_icon_url` | string \| null | yes |  |
| `is_out_of_business` | boolean \| null | no |  |
| `ticker_symbol` | string \| null | no |  |

<a id="schema-UniversalIndustryCode"></a>

### UniversalIndustryCode

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `code` | string | yes |  |
| `description` | string | yes |  |

<a id="schema-ValidationError"></a>

### ValidationError

Serializer for validation error.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `errors` | map of string to array of string | yes |  |
| `non_field_errors` | array of string | yes |  |

<a id="schema-Webhook"></a>

### Webhook

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | yes | Read-only. |
| `url` | string (uri) | yes | Max length: `200`. |
| `enabled` | boolean | no |  |
| `subscriptions` | array of [WebhookSubscription](#schema-WebhookSubscription) | yes |  |
| `created_at` | string (date-time) | yes | Read-only. |
| `updated_at` | string (date-time) | yes | Read-only. |

<a id="schema-WebhookDelivery"></a>

### WebhookDelivery

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | yes | Read-only. |
| `status` | [WebhookDeliveryStatusEnum](#schema-WebhookDeliveryStatusEnum) | yes | Read-only. |
| `attempt_count` | integer | yes | Read-only. |
| `data` | any | yes | Read-only. |
| `error_details` | string \| null | yes | Read-only. |
| `created_at` | string (date-time) | yes | Read-only. |
| `updated_at` | string (date-time) | yes | Read-only. |

<a id="schema-WebhookDeliveryStatusEnum"></a>

### WebhookDeliveryStatusEnum

* `pending` - Pending
* `in_progress` - In Progress
* `completed` - Completed
* `failed` - Failed

Type: string

<a id="schema-WebhookRequest"></a>

### WebhookRequest

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `url` | string (uri) | yes | Min length: `1`. Max length: `200`. |
| `enabled` | boolean | no |  |
| `subscriptions` | array of [WebhookSubscriptionRequest](#schema-WebhookSubscriptionRequest) | yes |  |

<a id="schema-WebhookSubscription"></a>

### WebhookSubscription

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `external_id` | string (uuid) | yes | Read-only. |
| `event_type` | [EventTypeEnum](#schema-EventTypeEnum) | yes |  |
| `portfolio` | string (uuid) \| null | no | Portfolio external_id. Required for portfolio-scoped events (e.g. company.updated); must be omitted for all other events. |

<a id="schema-WebhookSubscriptionRequest"></a>

### WebhookSubscriptionRequest

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `event_type` | [EventTypeEnum](#schema-EventTypeEnum) | yes |  |
| `portfolio` | string (uuid) \| null | no | Portfolio external_id. Required for portfolio-scoped events (e.g. company.updated); must be omitted for all other events. |
