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

# Update companies in batch

PUT https://api.cable.tech/v2/company
Content-Type: application/json

Reference: https://docs.cable.tech/api-documentation/api-reference/company/update-companies

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Body (application/json)

This endpoint expects a list of Company.

- `list of Company`

## Response

### 200

Batch processing result

- `success` (boolean, required) — Indicates if the write operation was successful.
- `write_count` (integer, required) — The number of records written to the database.
- `message` (string, required) — Provides additional information about the operation result.
- `organization_id` (string, required) — The organization ID for which the operation was performed.

## Errors

### 400 Bad Request Error

Invalid company data in batch

- `code` (integer, required)
- `message` (string, required)
- `errors` (list of GeneralErrorErrorsItems, optional) — Detailed information about errors in specific fields.

### 401 Unauthorized Error

Unauthorized request

- `code` (integer, required)
- `message` (string, required)
- `errors` (list of GeneralErrorErrorsItems, optional) — Detailed information about errors in specific fields.

### 404 Not Found Error

Company not found in batch

- `code` (integer, required)
- `message` (string, required)
- `errors` (list of GeneralErrorErrorsItems, optional) — Detailed information about errors in specific fields.

### 429 Too Many Requests Error

Rate limit exceeded

- `code` (integer, required)
- `message` (string, required)
- `errors` (list of GeneralErrorErrorsItems, optional) — Detailed information about errors in specific fields.

### 500 Internal Server Error

Server error

- `code` (integer, required)
- `message` (string, required)
- `errors` (list of GeneralErrorErrorsItems, optional) — Detailed information about errors in specific fields.

## Types

### Company

Request body for adding information about companies

- `company_id` (string, required) — Unique external identifier of the company entity, ID stored in your database / back-office
- `timestamp` (datetime, required) — When this company record was created or last modified in your system, in ISO 8601 format.
- `is_test_company` (boolean, required, default: false) — If the company is a test company, this should be set to true
- `account_status` (enum, optional) — The account status for the related person at that timestamp. Refer to the Developer Guide "Entity Account Statuses" to understand what account statuses mean at Cable, and how to use them
  - Allowed values: `APPROVED`, `BLOCKED`, `CLOSED`, `PENDING`, `REJECTED`
- `legal_name` (string, optional) — Legal name of the business
- `trading_name` (string, optional) — Trading name of the business
- `email` (string, optional) — Main contact email for the company
- `addresses` (list of CompanyAddressesItems, optional)
- `phone_number` (string, optional) — Main contact telephone number for the company
- `type` (string, optional) — Business entity type. eg. Sole Trader, Limited Company
- `registration_number` (CompanyRegistrationNumber, optional)
- `incorporation_date` (date, optional) — Date when the company was incorporated
- `incorporation_country` (string, optional) — 2 or 3 Character ISO 3166 Country Code (https://w.wiki/4rY)
- `incorporation_state` (string, optional) — State where the company was incorporated (US only)
- `primary_operation_country` (string, optional) — 2 or 3 Character ISO 3166 Country Code (https://w.wiki/4rY)
- `industry` (string, optional) — Nature of business
- `industry_classification` (CompanyIndustryClassification, optional)
- `source_of_wealth` (string, optional) — Source of wealth of the company
- `source_of_funds` (string, optional) — Source of initial deposit of the company
- `first_transaction_completed_at` (datetime, optional) — Original timestamp of when the person completed their first transaction
- `product_type` (string, optional)
- `registered_as_inactive` (boolean, optional) — If the company is registered as inactive, this should be set to true

### GeneralErrorErrorsItems

- `field` (string, optional)
- `message` (string, optional)

### CompanyAddressesItems

- `type` (string, optional) — Type of address. eg. Registered, Trading, Legal
- `address` (Address, optional) — Legal/contact address for the entity

### CompanyRegistrationNumber

- `type` (string, required) — Type of registration number, e.g. Companies House number (UK), EIN number (US) etc.
- `value` (string, required) — The registration number

### CompanyIndustryClassification

- `code_type` (string, required) — Type of industry classification code
- `code` (list of string, required) — Industry classification codes
- `description` (string, optional) — Description of the industry classification code

### Address

Legal/contact address for the entity

- `lines` (list of string, optional)
- `city` (string, optional)
- `state` (string, optional)
- `county` (string, optional)
- `postal_code` (string, optional)
- `country` (string, optional)

## Examples

**Request**

```json
[
  {
    "company_id": "comp-987654321",
    "timestamp": "2024-01-15T09:30:00Z",
    "is_test_company": false
  }
]
```

**Response**

```json
{
  "success": true,
  "write_count": 1,
  "message": "Batch update completed successfully.",
  "organization_id": "org-123456789"
}
```

**SDK Code**

```python
import requests

url = "https://api.cable.tech/v2/company"

payload = [
    {
        "company_id": "comp-987654321",
        "timestamp": "2024-01-15T09:30:00Z",
        "is_test_company": False
    }
]
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.cable.tech/v2/company';
const options = {
  method: 'PUT',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '[{"company_id":"comp-987654321","timestamp":"2024-01-15T09:30:00Z","is_test_company":false}]'
};

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

```go
package main

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

func main() {

	url := "https://api.cable.tech/v2/company"

	payload := strings.NewReader("[\n  {\n    \"company_id\": \"comp-987654321\",\n    \"timestamp\": \"2024-01-15T09:30:00Z\",\n    \"is_test_company\": false\n  }\n]")

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

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

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

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

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

}
```

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

url = URI("https://api.cable.tech/v2/company")

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

request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"company_id\": \"comp-987654321\",\n    \"timestamp\": \"2024-01-15T09:30:00Z\",\n    \"is_test_company\": false\n  }\n]"

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

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

HttpResponse<String> response = Unirest.put("https://api.cable.tech/v2/company")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"company_id\": \"comp-987654321\",\n    \"timestamp\": \"2024-01-15T09:30:00Z\",\n    \"is_test_company\": false\n  }\n]")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://api.cable.tech/v2/company', [
  'body' => '[
  {
    "company_id": "comp-987654321",
    "timestamp": "2024-01-15T09:30:00Z",
    "is_test_company": false
  }
]',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.cable.tech/v2/company");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"company_id\": \"comp-987654321\",\n    \"timestamp\": \"2024-01-15T09:30:00Z\",\n    \"is_test_company\": false\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  [
    "company_id": "comp-987654321",
    "timestamp": "2024-01-15T09:30:00Z",
    "is_test_company": false
  ]
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.cable.tech/v2/company")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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

dataTask.resume()
```