# Read the companies one registry holds

One call of the distributor API, read from the interface description Yutai publishes. Every sample answer on this page is simulated: no real holder's data stands behind it. The formats every value travels in are the [identifiers page](/docs/identifiers)'s.

## The call

GET `/v1/registry/companies` Callable today

The key presents the `availability.read` scope.

The get started page shows [how a platform gets a key](/docs/get-started#key-heading).

## The parameters

`limit`: Optional. The page's size: from 1 to 200 rows, 50 when left out. It sits in the query.

`cursor`: Optional. The page link the previous answer carried: the nextCursor field's value of the page before this one. It sits in the query.

`country`: Optional. Narrow the page to the companies of one country: its two-letter country code, such as US. It sits in the query.

`isin`: Optional. Narrow the page to the company the ISIN belongs to: the share class's ISIN, such as US0000000009. It sits in the query.

`chain`: Optional. Narrow the page to the companies with an instrument on the chain: its CAIP-2 id, such as eip155:88880. It sits in the query.

## What it answers

The companies one registry holds today, each once in key order: the company's name, its country and the mode its rows are in, then its share classes, each with the ACTIVE token instruments its mapping resolves to, named by CAIP-19 id, chain, wrapper name and the token issuer's name, which stands null where the programme names none. Each instrument carries its programme's facts too: its legal form, whether the issuing company sponsors it, its transfer model, whether holding it needs the programme's own KYC, and the token it converts into, named by its CAIP-19 id and programme. A form or a model the registry has not recorded reads null, and the conversion reads null where the registry stores none or the target is not itself listed. Only what a venue lists an instrument by rides: no internal id, no tenant and no holder fact. The next page's cursor rides beside the rows, null when this is the last page.

- `items` Required. A list of objects with the fields below. It carries at most 200 items. `Each item` Required. An object with the fields below. `name` Required. A string. It carries at least 1 and at most 256 characters. `country` Required. A string. `sourceMode` Required. A string that is one of the values below. `SIMULATED` `SANDBOX` `LIVE` `securities` Required. A list of objects with the fields below. It carries at least 1 item. `Each item` Required. An object with the fields below. `isin` Required. A string. `ticker` Required. A string. `instruments` Required. A list of objects with the fields below. It carries at least 1 item. `Each item` Required. An object with the fields below. `instrumentId` Required. A string. `chain` Required. A string. `wrapperName` Required. A string. It carries at least 1 and at most 128 characters. `tokenIssuerName` Required. A string. It carries at least 1 and at most 256 characters. It may also be null. `legalForm` Required. A string that is one of the values below. It may also be null. `synthetic_tracker` `security_entitlement_ucc8` `native_registered_share` `other` `issuerSponsored` Required. True or false. `transferModel` Required. A string that is one of the values below. It may also be null. `open` `permissioned_whitelist` `kycByWrapper` Required. True or false. `convertsTo` Required. An object with the fields below. It may also be null. `instrumentId` Required. A string. `wrapperName` Required. A string. It carries at least 1 and at most 128 characters.
- `nextCursor` Required. A string. It may also be null.

## The errors

Every refused call answers one object with one field, message: the plain sentence that says what did not happen. The sentence carries 1 to 512 characters, so a refusal never carries an id, a code or an exception's text.

| Status | What it answers |

| --- | --- |

| 400 | The query could not be read. |

| 401 | The key is missing, malformed, unknown, revoked or expired. |

| 403 | The key does not carry the scope. The call is also refused with 403, nothing read, when the distributor is paused, suspended or closed, when the key is paused, or when the key presents from an origin it does not allow. |

| 429 | The key made too many calls this minute. The Retry-After header names the seconds until the next window opens. Nothing was read. |

| 500 | The read failed inside Yutai. Nothing was changed. |

| 503 | The data source this read needs is not live yet, so the read is refused. Nothing was read. |

The errors and limits page carries [every refusal status the document declares](/docs/errors#statuses-heading), each in its own words, beside the calls that answer it.
