# Get an agenda hit

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

**Release status.** Available

Returns one public agenda hit by its id, including the source link to the original public record. Ids come from `GET /api/v1/public/upcoming-agenda-hits`, whose `data.hits[].matchId` is this path parameter; the recent-hits list does not return ids. Ids outside the active public coverage set are treated as not found. If the underlying query fails, this endpoint answers 404 rather than 500.

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

### Parameters

| Field | Type | Required | Bounds | Description |
| --- | --- | --- | --- | --- |
| `path matchId` | string (uuid) | yes |  | Agenda topic-match UUID. |

### Example request

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

### Response 200

Agenda hit.

| Field | Type | Required | Bounds | Description |
| --- | --- | --- | --- | --- |
| `data` | object (UpcomingAgendaHit) | yes |  | One classified hit with the id the detail route takes. The fields are the recent-hits fields plus `matchId`, published flat so a reader sees every field without resolving a composed schema. |
| `data.matchId` | string (uuid) | yes |  | Id for `GET /api/v1/public/agenda-hits/{matchId}`. |
| `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. |
| **404** | `not_found` | The requested record was not found. |
| **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

- **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.
