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

# Retrieve a Single Agent Coaching Agenda — Shilo API

> Retrieve a single agent coaching agenda and its completion state. The agenda URL can be used to direct the agent to complete their 1:1 coaching session.

Use this endpoint to retrieve metadata for a single coaching agenda: the period it belongs to, its generation and completion state, and, when available, an authenticated Shilo web deep link the agent can use to open their coaching session. This endpoint does not return the generated agenda's questions or body content. Use the `agenda_url` field to deep-link agents into their coaching session from your own app, email notifications, or CRM workflows.

## Endpoint

```text theme={null}
GET https://api.shilo.ai/api/v1/coaching/agendas/{agendaId}
```

## Authentication

Include your API key in the request header:

```text theme={null}
x-api-key: YOUR_API_KEY
```

## Path Parameters

<ParamField path="agendaId" type="string" required>
  The unique identifier of the coaching agenda to retrieve. You can obtain agenda IDs from the [List Period Agendas](/api-reference/coaching/list-period-agendas) endpoint.
</ParamField>

## Response

### 200 — Success

Returns a `CoachingAgenda` object.

<ResponseField name="id" type="string">
  Unique identifier for the coaching agenda (UUID).
</ResponseField>

<ResponseField name="period_id" type="string">
  The coaching period this agenda was generated for.
</ResponseField>

<ResponseField name="integration_id" type="string">
  Your Shilo integration identifier.
</ResponseField>

<ResponseField name="user_id" type="string | null">
  Shilo user ID of the agent this agenda belongs to. May be `null` if the user record was removed after agenda generation.
</ResponseField>

<ResponseField name="external_user_id" type="string">
  Your system's user ID for the agent.
</ResponseField>

<ResponseField name="title" type="string | null">
  Human-readable title for the agenda (e.g. `"June coaching"`). May be `null` if not yet assigned.
</ResponseField>

<ResponseField name="cadence" type="string">
  Cadence of the parent coaching period: `weekly`, `semimonthly`, or `monthly`.
</ResponseField>

<ResponseField name="period_start" type="string">
  ISO-8601 date marking the start of the parent coaching period.
</ResponseField>

<ResponseField name="period_end" type="string">
  ISO-8601 date marking the end of the parent coaching period.
</ResponseField>

<ResponseField name="review_period_end" type="string">
  ISO-8601 date marking the end of the review window during which the agent can submit the agenda.
</ResponseField>

<ResponseField name="generation_status" type="string">
  Generation status of the agenda. One of `queued`, `processing`, `ready`, `failed`, or `not_eligible`.
</ResponseField>

<ResponseField name="is_completed" type="boolean">
  Whether the agent has completed the agenda.
</ResponseField>

<ResponseField name="completed_at" type="string | null">
  ISO-8601 timestamp of when the agent completed the agenda. `null` if not completed.
</ResponseField>

<ResponseField name="completed_on_time" type="boolean | null">
  Whether the agenda was completed before `review_period_end`. `null` if not completed.
</ResponseField>

<ResponseField name="analysis_ready" type="boolean">
  Whether post-submission analysis has produced a stored summary.
</ResponseField>

<ResponseField name="agenda_url" type="string | null">
  Authenticated Shilo web deep link the agent can use to open their coaching session. Present only for `ready` agendas with exactly one active user mapping. Requires normal Shilo web authentication and does not contain an API key or login token. `null` otherwise.
</ResponseField>

<ResponseField name="created_date" type="string">
  ISO-8601 timestamp of when the agenda was created.
</ResponseField>

<ResponseField name="updated_date" type="string">
  ISO-8601 timestamp of the most recent update to this agenda.
</ResponseField>

### 400 — Bad Request

The `agendaId` path parameter is malformed.

### 401 — Unauthorized

Your API key is missing or invalid.

### 404 — Not Found

No coaching agenda with the given `agendaId` exists in your organization.

## Example Request

```bash theme={null}
curl --request GET \
  --url "https://api.shilo.ai/api/v1/coaching/agendas/c1a2b3d4-e5f6-7890-abcd-ef1234567890" \
  --header "x-api-key: YOUR_API_KEY"
```

## Example Response

```json theme={null}
{
  "id": "c1a2b3d4-e5f6-7890-abcd-ef1234567890",
  "period_id": "ee6f2136-b94a-4438-9335-3acf5b2a0d31",
  "integration_id": "a3c9e214-1f2b-4d78-bb01-7e5f9c3d0a12",
  "user_id": "f7e6d5c4-b3a2-1098-fedc-ba9876543210",
  "external_user_id": "usr_abc123",
  "title": "June coaching",
  "cadence": "weekly",
  "period_start": "2026-06-01",
  "period_end": "2026-06-07",
  "review_period_end": "2026-06-14",
  "generation_status": "ready",
  "is_completed": false,
  "completed_at": null,
  "completed_on_time": null,
  "analysis_ready": true,
  "agenda_url": "https://app.shilo.ai/i/a3c9e214-1f2b-4d78-bb01-7e5f9c3d0a12/insights/agent/usr_abc123/coaching/c1a2b3d4-e5f6-7890-abcd-ef1234567890?itemType=coaching",
  "created_date": "2026-06-08T13:00:00Z",
  "updated_date": "2026-06-08T13:00:00Z"
}
```

<Tip>
  Use the `agenda_url` field to link agents directly to their coaching agenda from your own app or notification system. The link opens the agent's coaching session in Shilo and requires normal Shilo web authentication; it does not carry an API key or login token.
</Tip>
