# List recent agenda hits

`GET /api/v1/public/agenda-hits` - [human page](https://aicdapi.com/api-reference#listRecentAgendaHits)

**Release status.** Available

Returns up to three recent classified agenda hits. Normalized `*Slug`
parameters take precedence over their legacy aliases when both are sent.


**Authentication.** No credentials. This endpoint is public.

### Parameters

| Field | Type | Required | Bounds | Description |
| --- | --- | --- | --- | --- |
| `query jurisdictionSlug` | string | no | length 1..∞ | Normalized jurisdiction slug. Takes precedence over `jurisdiction`. |
| `query jurisdiction` | string | no | length 1..∞ | Legacy alias for `jurisdictionSlug`. |
| `query topicSlug` | string | no | length 1..∞ | Normalized topic slug. Takes precedence over `topic`. |
| `query topic` | string | no | length 1..∞ | Legacy alias for `topicSlug`. |
| `query excludeTopicSlug` | string | no | length 1..∞ | Normalized topic slug to omit. Takes precedence over `excludeTopic`. |
| `query excludeTopic` | string | no | length 1..∞ | Legacy alias for `excludeTopicSlug`. |
| `query limit` | integer | no | >= 1 | Positive requested result limit. The effective limit is capped at 3. |

### Example request

```bash
curl -X GET 'https://aicdapi.com/api/v1/public/agenda-hits'
```

### Response 200

Recent agenda hits.

| Field | Type | Required | Bounds | Description |
| --- | --- | --- | --- | --- |
| `data` | object[] | yes | max 3 items |  |
| `data.jurisdictionSlug` | string | yes |  |  |
| `data.jurisdictionName` | string | yes |  |  |
| `data.bodyName` | string | yes |  |  |
| `data.topicSlug` | string | yes |  |  |
| `data.meetingAt` | string (date-time) | yes |  |  |
| `data.title` | string | yes |  |  |
| `data.summary` | string | yes |  |  |
| `data.businessImpact` | string | yes |  |  |
| `data.evidenceQuote` | string | yes |  |  |
| `data.sourceUrl` | string (uri) | yes |  |  |
| `data.confidence` | integer | yes | >= 0, <= 100 |  |
| `data.affectedLocation` | object (AffectedLocationValue) | yes |  |  |
| `data.proceduralContext` | object (AgendaProceduralContext) | yes |  |  |
| `meta` | object (ResponseMeta) | no |  |  |
| `meta.pagination` | object (PaginationMeta) | no |  |  |

### Errors

| Status | `error.code` | Description |
| --- | --- | --- |
| **400** | `invalid_parameter` | A path or query parameter is invalid or unsupported. |
| **429** | `rate_limited` | More than 120 requests were made by this client IP in 60 seconds. |
| **500** | `internal_error` | The request could not be completed because of an internal error. |

### Behaviour

- **Pagination.** None. The result set is capped at three hits.
- **Limits.** 120 requests per 60 seconds per client IP, counted separately for each public endpoint and keyed on the first X-Forwarded-For entry. The allowance is not shared between public endpoints: exhausting one leaves the others available. If the limiter's own store fails, the request is allowed through rather than refused.
- **Retry-After.** Sent on 429 only, as whole seconds.
