0

Get companies

by
Published Oct 17, 2025

Retrieves all companies. You can optionally filter this list by the company name or the unique external company ID. Any one of the following roles is required for this endpoint: |Legacy Role|Equivalent Permission Set Role| |-----|--------| |org.user.company.read|org.permission.company.read| ### Note > If you use both the `externalId` and `filter` query params, the request ignores both query params.

Script kustomer Verified

The script

Submitted by hugo697 Bun
Verified 235 days ago
1
//native
2
type Kustomer = {
3
  apiKey: string;
4
};
5
/**
6
 * Get companies
7
 * Retrieves all companies. You can optionally filter this list by the company name or the unique external company ID.
8

9
Any one of the following roles is required for this endpoint:
10

11
|Legacy Role|Equivalent Permission Set Role|
12
|-----|--------|
13
|org.user.company.read|org.permission.company.read|
14

15
### Note
16
> If you use both the `externalId` and `filter` query params, the request ignores both query params.
17
 */
18
export async function main(
19
  auth: Kustomer,
20
  externalId: string | undefined,
21
  filter: string | undefined,
22
) {
23
  const url = new URL(`https://api.kustomerapp.com/v1/companies`);
24
  for (const [k, v] of [
25
    ["externalId", externalId],
26
    ["filter", filter],
27
  ]) {
28
    if (v !== undefined && v !== "" && k !== undefined) {
29
      url.searchParams.append(k, v);
30
    }
31
  }
32
  const response = await fetch(url, {
33
    method: "GET",
34
    headers: {
35
      Authorization: "Bearer " + auth.apiKey,
36
    },
37
    body: undefined,
38
  });
39
  if (!response.ok) {
40
    const text = await response.text();
41
    throw new Error(`${response.status} ${text}`);
42
  }
43
  return await response.json();
44
}
45