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

# Configure the opening and audience

> Required sections, audience filters, opening messages, public replies, and cooldown.

Every `configuration` requires `contact_filter`, `trigger`, `opening`,
`follow_up`, and `extras`. Unknown fields are rejected. Use explicit `null` for
no follow-up. The examples below are fragments; see the [creation
workflow](/guides/automation-workflow) for a complete request.

## Select the audience

| `contact_filter` | Audience |
| - | - |
| `anyone` | Any otherwise eligible contact. |
| `followers_only` | Contacts confirmed to follow the account. |
| `non_followers_only` | Contacts confirmed not to follow the account. |
| `previous_dm_contacts` | Contacts with an inbound DM before this trigger. |
| `existing_contacts` | Contacts already known to levios before this trigger. |

These filters restrict who can enter; they do not send a follow request or
collect contact data.

## Opening with a continuation button

```json theme={null}
{
  "public_reply": {
    "enabled": true,
    "delay_seconds": 0,
    "messages": [
      "Check your DMs for the guide."
    ],
    "rotation": "random",
    "mention_mode": "none",
    "max_per_post": 50
  },
  "direct_message": {
    "delay_seconds": 0,
    "message": {
      "text": "Would you like the guide?",
      "buttons": [
        {
          "type": "start_follow_up",
          "title": "Send the guide"
        }
      ]
    }
  }
}
```

Set this object as `opening`. Both `public_reply` and `direct_message` are
required. An enabled public reply is only valid for a comment trigger. Disable
it with `{"enabled":false}` for other triggers.

Public replies require at least one message of 1 to 280 Unicode scalars.
`rotation` accepts `random` or `sequential`; `mention_mode` accepts `none`,
`contact`, or `account`. `max_per_post` is 1 to 200. Both opening delays allow 0
to 86400 seconds in the schema; non-comment direct-message openings are limited
to 86399 by semantic validation.

The direct message requires `text` and `buttons`. With `buttons: []`, text
allows 1 to 1000 scalars. With 1 to 3 buttons, it allows 1 to 640. Button titles
allow 1 to 20 scalars without surrounding whitespace. A `start_follow_up` button
starts the sequence; a `url` button opens its HTTP(S) `url`. Exactly one
continuation button is required when `follow_up` is non-null, and none is
allowed when it is null.

## Cooldown

```json theme={null}
{
  "cooldown": {
    "mode": "fixed",
    "seconds": 21600
  }
}
```

Set this object as `extras` to configure six hours between repeated triggers.
Fixed cooldown accepts 1 to 2592000 seconds. To disable it, use
`{"cooldown":{"mode":"none"}}`. Cooldown is repeat protection, not a scheduled
delivery delay.
