> ## Documentation Index
> Fetch the complete documentation index at: https://docs.akta.pro/llms.txt
> Use this file to discover all available pages before exploring further.

# Company Addition

## Overview

The Company Addition API lets you add a company that isn't yet in akta.pro's database. If the Company Search API returns no results for a company, submit it here and akta.pro will add it.

If the company already exists in the database, the API tells you so immediately and returns its details — no addition request is created. Otherwise, this is an **asynchronous, two-step endpoint**:

1. **Submit** a company for addition with a `POST` request. If it's new, the API returns a `request_id`.
2. **Track** the request to completion, either by polling the [request status endpoint](/docs/supporting-apis/request-status-api) with that `request_id`, or by [configuring a webhook](/webhook-config) to be notified when the status changes.

This is a **free endpoint** so it does not consume API credits.

**Endpoint**

```text theme={null}
POST https://api.akta.pro/api/v1/company/addition-requests/
```

Pass the `company_name` and `website` in a JSON request body. The `request_id` returned can then be used to check the status of the addition request.

<Info>
  **Plan availability:** This endpoint is only available to **Subscription** and **Enterprise** plan users. **Rate limits:** Subscription plans are limited to **100 requests/day** on this endpoint. Enterprise plans have **custom rate limits** — contact your account representative to configure these.
</Info>

***

## Authentication

All requests must include an **API key** in the `x-api-key` HTTP header.

```text theme={null}
x-api-key: <YOUR_API_KEY>
```

<Warning>
  Never expose your API key in client-side code, browser requests, or public repositories. A missing or invalid key returns `401 Unauthorized`.
</Warning>

***

## Request Reference

Send a JSON body with the `Content-Type: application/json` header.

| Parameter      | Type   | Required     | Description                                                                                                                       |
| -------------- | ------ | ------------ | --------------------------------------------------------------------------------------------------------------------------------- |
| `company_name` | string | **Required** | Name of the company to add (e.g. `"solios"`).                                                                                     |
| `website`      | string | **Required** | Primary website URL of the company (e.g. `"https://www.soleosenergy.com/"`). Used to disambiguate and entity-resolve the company. |

**Example requests:**

<CodeGroup>
  ```bash cURL theme={null}
  curl --location 'https://api.akta.pro/api/v1/company/addition-requests/' \
    --header 'Content-Type: application/json' \
    --header 'x-api-key: <YOUR_API_KEY>' \
    --data '{
      "company_name": "solios",
      "website": "https://www.soleosenergy.com/"
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.akta.pro/api/v1/company/addition-requests/",
      headers={
          "x-api-key": "<YOUR_API_KEY>",
          "Content-Type": "application/json",
      },
      json={
          "company_name": "solios",
          "website": "https://www.soleosenergy.com/",
      },
  )
  result = response.json()

  if result["already_exists"]:
      # Company is already in the database — use its UUID directly
      print(f"Already exists: {result['company']['uuid']}")
  else:
      # A new addition request was created — track it to completion
      print(f"Addition request submitted: {result['request_id']}")
  ```
</CodeGroup>

***

## Response

The response depends on whether the company already exists in akta.pro's database, indicated by the `already_exists` flag.

### Company already exists

If the company is already in the database, **no addition request is created** — `request_id` and `status` are both `null`, and the existing company's details are returned directly in the `company` object. You can use its `uuid` straight away, with no need to track a request.

```json theme={null}
{
  "already_exists": true,
  "company": {
    "uuid": "0002lx7",
    "website": "maximl.com",
    "name": "Maximl Labs Private Limited",
    "legal_name": "Maximl Labs Private Limited"
  },
  "request_id": null,
  "status": null,
  "domain": "maximl.com",
  "credits_consumed": 0
}
```

### New addition request created

If the company is not yet in the database, an addition request is created. `company` is `null`, and a `request_id` and `status` are returned so you can track the request to completion.

```json theme={null}
{
  "already_exists": false,
  "company": null,
  "request_id": "2db01b38-5c81-4b3f-b76d-8b36aeed603b",
  "status": "pending",
  "domain": "brigadegroup.com",
  "credits_consumed": 0.00
}
```

### Response fields

| Field              | Type                  | Description                                                                                                                                                      |
| ------------------ | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `already_exists`   | boolean               | `true` if the company is already in the database (no request created), `false` if a new addition request was created.                                            |
| `company`          | object \| null        | The existing company's details when `already_exists` is `true`; otherwise `null`. See **Company object** below.                                                  |
| `request_id`       | string (UUID) \| null | Unique identifier for the addition request. `null` when the company already exists. Use this to check request status or to match incoming webhook notifications. |
| `status`           | string \| null        | Current status of the request at submission time (typically `"pending"`). `null` when the company already exists. See **Request statuses** below.                |
| `domain`           | string                | The resolved domain for the submitted company.                                                                                                                   |
| `credits_consumed` | float                 | Always `0.00` — this is a free endpoint.                                                                                                                         |

### Company object

Returned only when `already_exists` is `true`.

| Field        | Type   | Description                                                                                      |
| ------------ | ------ | ------------------------------------------------------------------------------------------------ |
| `uuid`       | string | Unique Akta identifier for the company. Pass this as the `company` parameter in downstream APIs. |
| `website`    | string | Primary website of the company.                                                                  |
| `domain`     | string | Resolved domain of the company.                                                                  |
| `name`       | string | Company name.                                                                                    |
| `legal_name` | string | Legal or registered company name.                                                                |

### Request statuses

| Status        | Description                                                                                     |
| ------------- | ----------------------------------------------------------------------------------------------- |
| `pending`     | The request has been accepted and is queued for processing.                                     |
| `in_progress` | The company is being ingested and entity-resolved.                                              |
| `completed`   | The company has been added and is now available via the Company Search API and other endpoints. |
| `failed`      | The company could not be added.                                                                 |

***

## Checking request status

Once a company is submitted, track the request to completion in one of two ways.

### Option 1 — Poll the status endpoint

Pass the `request_id` to the status endpoint to retrieve the current status on demand.

```text theme={null}
GET https://api.akta.pro/api/v1/company/addition-requests/{request_id}/
```

<CodeGroup>
  ```bash cURL theme={null}
  curl --location 'https://api.akta.pro/api/v1/status/3fa85f64-5717-4562-b3fc-2c963f66afa6/' \
    --header 'x-api-key: <YOUR_API_KEY>'
  ```

  ```python Python theme={null}
  import requests

  request_id = "dac3d4f7-9171-40e4-8856-10570c886095"

  response = requests.get(
      f"https://api.akta.pro/api/v1/status/{request_id}/",
      headers={"x-api-key": "your-api-key"},
  )
  print(response.json()["status"])
  ```
</CodeGroup>

**Sample response**

```json theme={null}
{
  "request_id": "dac3d4f7-9171-40e4-8856-10570c886095",
  "request_type": "company_addition",
  "status": "failed",
  "detail": {
    "company_addition_request_id": "0e0ac245-f591-4b43-b29d-a65b722c22b9",
    "company_name": "Lento India",
    "domain": "lentoindia.com",
    "status": "failed",
    "reason": null,
    "company_uuid": "02lko2r",
    "created_at": "2026-07-21T13:41:52.095899Z",
    "updated_at": "2026-07-21T13:46:37.096111Z"
  }
}
```

When the request reaches `completed`, the `uuid` field is populated with the newly added company's Akta identifier, which you can then use as the `company` parameter in the Company Data, News, and other APIs.

### Option 2 — Configure a webhook

Instead of polling, configure a webhook to be notified automatically when the status of an addition request changes. akta.pro will send a `POST` request to your configured endpoint each time a request transitions status (e.g. to `completed` or `failed`).

Learn more about configuring webhooks [here](/webhook-config).

***

## Using the UUID in other APIs

Once the addition request is `completed` and you have the company's `uuid`, pass it as the `company` parameter in downstream API calls:

```python theme={null}
import requests
HEADERS = {"x-api-key": "<YOUR_API_KEY>"}

# Step 1: Submit the company for addition
submit = requests.post(
    "https://api.akta.pro/api/v1/company/addition-requests/",
    headers={**HEADERS, "Content-Type": "application/json"},
    json={"company_name": "solios", "website": "https://www.soleosenergy.com/"},
)
request_id = submit.json()["request_id"]

# Step 2: Once completed (via polling or webhook), retrieve the UUID
status = requests.get(
    f"https://api.akta.pro/api/v1/company/addition-requests/{request_id}/",
    headers=HEADERS,
)
uuid = status.json()["uuid"]

# Step 3: Use the UUID in the Company Data API
enrich = requests.post(
    "https://api.akta.pro/api/v1/company/enrichment",
    headers={**HEADERS, "Content-Type": "application/json"},
    json={"company": uuid, "sections": ["firmographic", "funding_details"]},
)
print(enrich.json()["data"]["firmographic"]["name"])
```
