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

# Read the company profile

> Read the profile your Tenancy stated, and be told plainly when it has stated none.

This call answers the Company profile a Tenancy stated: the latest statement, exactly as it was stated, with the moment it was recorded.

A Tenancy that has never stated a profile answers `404` and names that state. It is an answer rather than a fault, and it is what lets a screen render the onboarding form instead of a company with no name.

<Info>
  There is one profile per Tenancy and no history behind it. A correction replaces what the last statement said, and no call answers what it replaced.
</Info>

## Path parameters

<ParamField path="tenant_id" type="string" required>
  The Tenancy whose profile is read. 1–64 characters of `a–z A–Z 0–9 - _`. A key authenticates for one Tenancy and the path names it; another Tenancy's path answers `403`.
</ParamField>

## Response

<ResponseField name="legal_entity_name" type="string" required>
  The company as its own registry of companies has it.
</ResponseField>

<ResponseField name="country_code" type="string" required>
  Where the company lends, as an ISO 3166-1 alpha-2 code, and one of the 50 the Platform names. It is not the jurisdiction of any Loan and gates no issuance.
</ResponseField>

<ResponseField name="brand_name" type="string">
  The name the products go out under. Absent when the statement made none, rather than answered as an empty string.
</ResponseField>

<ResponseField name="entity_type" type="string">
  The legal form the company is registered under. Absent the same way.
</ResponseField>

<ResponseField name="stated_at" type="string" required>
  RFC 3339 in UTC: the moment the Platform recorded the statement it is answering.
</ResponseField>

## Refusals

This route reads no query parameter and takes no body.

| Status | When |
| - | - |
| `400` | The URL carries a query parameter, which this route does not read |
| `403` | The key authenticates for another Tenancy |
| `404` | The Tenancy has stated no profile, or the profile belongs to another Tenancy |

A profile that exists under another Tenancy and one that was never stated are the same `404`, which is what keeps the two indistinguishable from outside. A read-scoped key is enough; only stating needs a write-scoped one.

<RequestExample>
  ```bash Read theme={null}
  curl https://api.capcells.com/v1/tenants/capyplazo/company-profile \
    -H "Authorization: $(capcells_sign "$CAPCELLS_API_KEY" GET /v1/tenants/capyplazo/company-profile)"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "legal_entity_name": "Capyplazo S.A. de C.V.",
    "brand_name": "Capyplazo",
    "country_code": "MX",
    "entity_type": "S.A. de C.V.",
    "stated_at": "2026-08-23T21:27:59.672084Z"
  }
  ```

  ```json 404 Nothing stated yet theme={null}
  {
    "error": "company: no profile has been stated",
    "code": "no_profile"
  }
  ```

  ```json 400 Query parameter theme={null}
  {
    "error": "reading the request: this route does not read the parameter \"on\"",
    "code": "invalid_query"
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.