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

# Get Business Profile

> Retrieve the Meta Business Profile information linked to an application.

## What it does

Returns the WhatsApp business profile of an application (`app_id`): about, address, description, contact email, profile picture, websites, and category. The data is read fresh directly from Meta. Before the request, the `app_id` is verified to belong to the organization.

***

## Endpoint

```text theme={null}
GET /public/api/v1/wa/{app_id}/profile
```

There are no query or body parameters.

### Headers

<ParamField header="Authorization" type="string" required>
  Secret key in `Bearer sk_...` format. See [Secret Key authentication](/essentials/authentication#secret-key).
</ParamField>

### Path parameters

<ParamField path="app_id" type="string" required>
  Application ID. Must belong to the organization (otherwise `404`).
</ParamField>

***

## Response

The envelope is `{ "data": {...}, "isSuccess": true }`. All fields in `data` are optional; fields that are not set on the profile are `null` / dropped from the response.

<ResponseField name="isSuccess" type="boolean">
  `true` when the request completed successfully.
</ResponseField>

<ResponseField name="data" type="object">
  <Expandable title="data">
    <ResponseField name="about" type="string">
      Profile "about" text (max 139 chars).
    </ResponseField>

    <ResponseField name="address" type="string">
      Business address.
    </ResponseField>

    <ResponseField name="description" type="string">
      Business description.
    </ResponseField>

    <ResponseField name="email" type="string">
      Contact email.
    </ResponseField>

    <ResponseField name="profilePictureUrl" type="string">
      Profile picture URL (read-only).
    </ResponseField>

    <ResponseField name="websites" type="string[]">
      Business websites (max 2).
    </ResponseField>

    <ResponseField name="category" type="string">
      Business category. See [Business Profile Category](/public-api-reference/application/reference/enums#business-profile-category) for the full list of values.
    </ResponseField>
  </Expandable>
</ResponseField>

***

## Examples

<AccordionGroup>
  <Accordion title="Demo 1 — full profile">
    ```text theme={null}
    GET /public/api/v1/wa/app_7poyXj8GXuv76e/profile
    Authorization: Bearer sk_...
    ```

    ```json theme={null}
    {
      "data": {
        "about": "Open 09:00-18:00",
        "address": "Levent, Istanbul",
        "description": "We sell quality goods.",
        "email": "hello@acme.com",
        "profilePictureUrl": "https://cdn.example.com/acme/logo.png",
        "websites": ["https://acme.com", "https://shop.acme.com"],
        "category": "RETAIL"
      },
      "isSuccess": true
    }
    ```
  </Accordion>

  <Accordion title="Demo 2 — partial profile (some fields not set)">
    ```text theme={null}
    GET /public/api/v1/wa/app_7poyXj8GXuv76e/profile
    Authorization: Bearer sk_...
    ```

    ```json theme={null}
    {
      "data": {
        "about": "Fast replies 7/24",
        "email": "support@acme.com"
      },
      "isSuccess": true
    }
    ```

    `address`, `description`, `profilePictureUrl`, `websites`, and `category` are absent from the response because they are not set on the profile.
  </Accordion>

  <Accordion title="Demo 3 — empty profile (no fields set)">
    ```text theme={null}
    GET /public/api/v1/wa/app_7poyXj8GXuv76e/profile
    Authorization: Bearer sk_...
    ```

    ```json theme={null}
    { "data": {}, "isSuccess": true }
    ```
  </Accordion>
</AccordionGroup>

***

## Errors

<ResponseField name="errors" type="object">
  Error details with `code`, `group`, and `description`; `isSuccess` is `false`.
</ResponseField>

| HTTP | Code                      | Group                 | When                                                      |
| ---- | ------------------------- | --------------------- | --------------------------------------------------------- |
| 401  | `ORGANIZATION_SECRET_010` | `NOT_FOUND`           | Authorization header / secret key is missing.             |
| 401  | `ORGANIZATION_SECRET_011` | `NOT_FOUND`           | Secret key is invalid.                                    |
| 404  | `APPLICATION_004`         | `NOT_FOUND`           | `app_id` does not belong to the organization / not found. |
| 401  | `META_030`                | `AUTHENTICATION`      | Meta access token expired/invalid (Meta code 190).        |
| 403  | `META_031`                | `NOT_ALLOWED`         | Meta permission denied (code 10 / 200–299).               |
| 429  | `META_032`                | `SERVICE_UNAVAILABLE` | Meta rate limit (code 4 / 80007).                         |
| 400  | `META_033`                | `VALIDATION`          | Meta invalid parameter (code 100).                        |
| 502  | `META_001`                | `SERVICE_UNAVAILABLE` | Could not fetch the profile from Meta (general/fallback). |

Example error responses:

```json theme={null}
{ "errors": { "code": "APPLICATION_004", "group": "NOT_FOUND", "description": "Application not found." }, "isSuccess": false }
```

```json theme={null}
{ "errors": { "code": "META_030", "group": "AUTHENTICATION", "description": "Failed to fetch business profile. Details: ..." }, "isSuccess": false }
```

```json theme={null}
{ "errors": { "code": "META_001", "group": "SERVICE_UNAVAILABLE", "description": "Failed to fetch business profile." }, "isSuccess": false }
```
