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

# Overview

> Read the conditions that decide whether an agent sends a direct reply, adds an internal comment, or sends no reply.

Reply rules are the API form of **Automations > Reply Rules** in the Fini dashboard. They decide how an agent responds when workspace-specific conditions match.

The API currently supports read-only access. Use the configured rules endpoint to audit active behavior, and use fields context to resolve condition paths into customer-friendly labels and available values.

## Endpoints

<CardGroup cols={2}>
  <Card title="Get reply rules" icon="list-check" href="/en/api-reference/get-reply-rules">
    Read the no reply, internal comment, and direct reply rule slots.
  </Card>

  <Card title="Get fields context" icon="table-list" href="/en/api-reference/get-reply-rule-fields-context">
    Read the fields, operators, sources, attributes, and tags available to conditions.
  </Card>
</CardGroup>

## Authentication

<ParamField header="Authorization" type="string" required>
  Bearer token containing your Fini workspace API key. Format: `Bearer fini_...` The key needs `read` scope.
</ParamField>

The workspace is derived from the API key. These endpoints do not accept a workspace ID.

## Reply rule collection

The collection always contains three slots. A slot without a saved rule returns `conditions: []` and `isEnabled: false`.

<ResponseField name="noReply" type="ReplyRule">
  Conditions under which the agent sends no customer-facing reply.
</ResponseField>

<ResponseField name="internalComment" type="ReplyRule">
  Conditions under which the agent adds a note visible only to the support team.
</ResponseField>

<ResponseField name="directReply" type="ReplyRule">
  Conditions under which the agent sends a reply directly to the customer.
</ResponseField>

## ReplyRule object

<ResponseField name="replyType" type="string">
  `NO_REPLY`, `INTERNAL_COMMENT`, or `DIRECT_REPLY`.
</ResponseField>

<ResponseField name="conditions" type="Condition[]">
  Condition groups evaluated for this behavior. An empty array means no rule is configured.
</ResponseField>

<ResponseField name="isEnabled" type="boolean">
  Whether Fini evaluates this rule.
</ResponseField>

<ResponseField name="id" type="string | undefined">
  Saved rule ID. Omitted for a default empty slot.
</ResponseField>

<ResponseField name="companyId" type="string | undefined">
  Workspace ID recorded on a saved rule. Omitted for a default empty slot.
</ResponseField>

<ResponseField name="createdAt" type="string | undefined">
  ISO 8601 creation timestamp. Omitted for a default empty slot.
</ResponseField>

<ResponseField name="updatedAt" type="string | undefined">
  ISO 8601 last-update timestamp. Omitted for a default empty slot.
</ResponseField>

## Condition object

<ResponseField name="scope" type="string">
  `SCALAR` for predicates against individual values, or `ARRAY` for quantified array conditions.
</ResponseField>

<ResponseField name="predicate" type="array">
  Comparisons with `left.path`, `left.dataType`, `operator`, and a `right.value` or `right.path`.
</ResponseField>

<ResponseField name="quantifier" type="string | undefined">
  `ANY`, `ALL`, or `NONE` for an array condition.
</ResponseField>

<ResponseField name="array" type="object | undefined">
  Array path and item type used by an array condition.
</ResponseField>

## Errors

<AccordionGroup>
  <Accordion title="401 Unauthorized" icon="lock">
    The API key is missing, malformed, revoked, or invalid.
  </Accordion>

  <Accordion title="403 Forbidden" icon="shield-halved">
    The API key does not include the `read` scope.
  </Accordion>

  <Accordion title="500 Internal Server Error" icon="triangle-exclamation">
    Fini failed while loading reply rules or their fields context.
  </Accordion>
</AccordionGroup>
