# GET /v1/projects/:projectId/engagement (/docs/api/reference/engagement/get-engagement)



<Endpoint method="GET" path="/v1/projects/:projectId/engagement" auth="Bearer" scope="engagement:read" phase="1" />

Read the engagement config attached to a project's Social Engagement layer - the first-comment template that gets posted under every new post, and the reply-to-comments policy that governs auto-replies.

The `enabled` field is the master switch. If it's `false`, Layers still accepts reads and writes but nothing runs until you flip it on.

<Parameters
  title="Path"
  rows="[
  { name: 'projectId', type: 'string', required: true, description: 'Project whose engagement layer you want.' },
]"
/>

## Example request [#example-request]

<Tabs items="['curl', 'TypeScript', 'Python']">
  <Tab value="curl">
    ```bash
    curl https://api.layers.com/v1/projects/prj_254a4ce1-f4ca-42b1-9e36-17ca45ef3d39/engagement \
      -H "Authorization: Bearer lp_..."
    ```
  </Tab>

  <Tab value="TypeScript">
    ```ts
    const config = await layers.engagement.get({
      projectId: "prj_254a4ce1-f4ca-42b1-9e36-17ca45ef3d39",
    });

    if (!config.enabled) {
      // engagement is off - either intentionally or never configured
    }
    ```
  </Tab>

  <Tab value="Python">
    ```python
    config = layers.engagement.get(project_id="prj_254a4ce1-f4ca-42b1-9e36-17ca45ef3d39")
    ```
  </Tab>
</Tabs>

## Response [#response]

<Response status="200" description="Engagement config">
  ```json
  {
    "projectLayerId": "pl_01HXZT9P2K4N5M6Q7RSTUV8WXY",
    "enabled": true,
    "firstComment": {
      "targets": ["tiktok", "instagram"],
      "commentTemplate": "Brewing tip: use filtered water - makes a bigger difference than you'd expect."
    },
    "replyToComments": {
      "targets": ["tiktok", "instagram"],
      "autoReplyDelay": "PT3M"
    }
  }
  ```
</Response>

### Field reference [#field-reference]

| Field                                       | Shape                                                                                                                                                       |
| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `projectLayerId`                            | The Social Engagement layer instance that holds this config. Round-trip this back in PATCH to disambiguate if a project has more than one engagement layer. |
| `enabled`                                   | Master switch.                                                                                                                                              |
| `firstComment.targets`                      | Platforms where a first comment is posted.                                                                                                                  |
| `firstComment.commentTemplate`              | Comment body. No templating language - literal text.                                                                                                        |
| `replyToComments.targets`                   | Platforms where auto-replies run.                                                                                                                           |
| `replyToComments.autoReplyDelay`            | ISO-8601 duration before replying. Instant bot replies read as bots; tune per platform.                                                                     |
| `firstComment.strategy`                     | `literal` (publish `commentTemplate` verbatim) or `generated` (default; LLM with `commentTemplate` as examples).                                            |
| `replyToComments.tone`                      | Per-action brand-voice override for replies. Overrides the project-level engagement tone.                                                                   |
| `replyToComments.maxPerPostPerHour`         | Rolling-hour cap for owner-replies on a single post.                                                                                                        |
| `replyToComments.ignoreCommentsMatching`    | Regex allowlist of comments to skip.                                                                                                                        |
| `replyToComments.escalateNegativeSentiment` | When true, negative-sentiment user comments route to draft instead of auto-publish.                                                                         |

## Errors [#errors]

| Status | Code              | When                                                                      |
| ------ | ----------------- | ------------------------------------------------------------------------- |
| 401    | `UNAUTHENTICATED` | Missing or invalid key.                                                   |
| 403    | `FORBIDDEN_SCOPE` | Key lacks `engagement:write`.                                             |
| 404    | `NOT_FOUND`       | Project not in your organization, or no Social Engagement layer attached. |

## See also [#see-also]

* [`PATCH /v1/projects/:id/engagement`](/docs/api/reference/engagement/patch-engagement) - update the config
* Configure auto-pilot engagement - end-to-end walk-through
