# Audiences in Fern Definition

> Use audiences in your Fern Definition to segment your API for different groups of consumers.

<Warning title="Pro and Enterprise feature">
  This feature is available only for the [Pro and Enterprise plans](https://buildwithfern.com/pricing). To get started, reach out to [support@buildwithfern.com](mailto:support@buildwithfern.com).
</Warning>

Audiences are a useful tool for segmenting your API for different consumers. You can configure your Fern Docs to publish documentation specific to an `Audience`. You can use [audiences in your OpenAPI Specification](/learn/api-definitions/openapi/extensions/audiences), too.

Common examples of audiences include:

* Internal consumers (e.g., frontend developers who use the API)
* Beta testers
* Customers

By default, if no audience is specified, it will be accessible to all consumers.

## Configuration

The Fern Definition has a first-class concept for marking different endpoints, types, and properties for different audiences.

To use audiences in your Fern Definition, add them to `api.yml`.

In the example below, we have created audiences for `internal`, `beta`, and `customer` groups:

```yaml title='api.yml' {2-5}
name: api 
audiences: 
  - internal 
  - beta 
  - customers
```

## Audiences for endpoints

To mark an endpoint for a particular consumer, add an `audience` with the relevant groups.

In this example, the `sendEmail` endpoint is only available to internal consumers:

```yaml title='user.yml' {6-7}
service:
  base-path: /users
  auth: true
  endpoints:
    sendEmail:
      audiences:
        - internal
      path: /send-email
      ...
```

## Audiences for types

Types can also be marked for different audiences.

In this example, the `Email` type is available to internal and beta consumers:

```yaml title='user.yml' {5-7}
Email: 
  properties:
    subject: string
    body: optional<string>
  audiences: 
    - internal
    - beta
```

## Audiences for properties

Properties of a type can also be marked for different audiences.

In this example, the `to` property is available to beta consumers only:

```yaml title='user.yml' {8-9}
Email: 
  properties:
    subject: string
    body: optional<string>
    to: 
      type: string
      docs: The recipient of the email
      audiences: 
        - beta
```

## Audiences for SDKs

In `generators.yml`, you can apply audience filters so that only certain
endpoints are passed to the generators.

The following example configures the SDKs to filter for `customers`:

```yaml title='generators.yml' {3-4}
groups:
  external:
    audiences:
      - customers
    generators: 
    ...
```

## Audiences with docs

If generating Fern Docs, update your `docs.yml` configuration to include your audiences.

The following example shows how to configure your `docs.yml` to publish documentation for the `customers` audience:

<CodeBlock title="docs.yml">
  ```yaml {3-4}
  navigation:
    - api: API Reference
      audiences:
        - customers
  ```
</CodeBlock>