> Documentation index for AI agents: https://docs.pagerduty.com/llms.txt

# Add a marker to an Incident Review timeline

`POST https://api.pagerduty.com/incidents/{id}/review/markers`

Add a marker to the timeline of the Incident Review for the specified Incident.

A marker highlights a point of interest on the timeline. Each entry in `notes` is added as its own event attached to the new marker.

Returns `404` when the Incident has no Incident Review, or if the caller cannot see it, and `409` when the Incident Review is `completed` and must be reopened first.

`409` is also returned if the Incident Review is locked, or if it uses a format this version of the API cannot edit.

Scoped OAuth requires: `incident_reviews.write`

## Authorization

- **api_key** (apiKey) — `Authorization` header. The API Key with format `Token token=<API_KEY>`

## Path parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `id` | string | yes | The ID of the resource. |

## Header parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `Accept` | string | yes | The `Accept` header is used as a versioning header. Default: `application/vnd.pagerduty+json;version=2`. |

## Request body (`application/json`) — required

| Field | Type | Required | Description |
|---|---|---|---|
| `title` | string | yes | The title of the marker. Max length: 255. |
| `type` | string |  | The name of an existing marker type. Defaults to `Key Moment` if omitted. |
| `notes` | array of string | yes | One or more notes to attach to the marker as supporting evidence. Each note becomes its own event on the marker. Min items: 1. |

Example: Request Example

```json
{
  "title": "Customer-reported timeline update",
  "type": "Key Moment",
  "notes": [
    "Customer confirmed impact started at 10:42 UTC"
  ]
}
```

## Response 201

The marker created.

### `application/json`

| Field | Type | Required | Description |
|---|---|---|---|
| `marker` | object | yes | A marker highlights a point of interest on an Incident Review timeline, along with the notes captured as supporting evidence for it. |
| `marker.id` | string |  | The unique identifier of the marker. Read-only. |
| `marker.incident_review_id` | string |  | The ID of the Incident Review this marker was added to. Read-only. |
| `marker.type` | string |  | The name of the marker type. Note that unlike most PagerDuty resources, this is a customer-configurable marker type name rather than a string identifying the schema of the object. |
| `marker.title` | string |  | The title of the marker. |
| `marker.events` | array of object |  | The note events attached to this marker. Read-only. |
| `marker.events[].id` | string |  | The unique identifier of the event. Read-only. |
| `marker.events[].body` | string |  | The content of the note. |
| `marker.events[].created_at` | string (date-time) |  | The time the event was created. Read-only. |
| `marker.created_at` | string (date-time) |  | The time the marker was created. Read-only. |

Example: Response Example

```json
{
  "marker": {
    "id": "AGOBAMKTT5Z3RO7CR7T2ZGSMJA",
    "incident_review_id": "AGOBAMKTT5Z3RO7CR7T2ZGSMJA",
    "type": "Key Moment",
    "title": "Customer-reported timeline update",
    "events": [
      {
        "id": "AGOBAMKTT5Z3RO7CR7T2ZGSMJB",
        "body": "Customer confirmed impact started at 10:42 UTC",
        "created_at": "2026-09-01T20:00:00Z"
      }
    ],
    "created_at": "2026-09-01T20:00:00Z"
  }
}
```

## Response 400

Caller provided invalid arguments. Please review the response for error details. Retrying with the same arguments will *not* work.

### `application/json`

| Field | Type | Required | Description |
|---|---|---|---|
| `error` | object |  |  |
| `error.code` | integer |  | Read-only. |
| `error.message` | string |  | Error message string. Read-only. |
| `error.errors` | array of string |  | Read-only. |

## Response 401

Caller did not supply credentials or did not provide the correct credentials.
If you are using an API key, it may be invalid or your Authorization header may be malformed.

### `application/json`

| Field | Type | Required | Description |
|---|---|---|---|
| `error` | object |  |  |
| `error.code` | integer |  | Read-only. |
| `error.message` | string |  | Error message string. Read-only. |
| `error.errors` | array of string |  | Read-only. |

## Response 403

Caller is not authorized to view the requested resource.
While your authentication is valid, the authenticated user or token does not have permission to perform this action.

### `application/json`

| Field | Type | Required | Description |
|---|---|---|---|
| `error` | object |  |  |
| `error.code` | integer |  | Read-only. |
| `error.message` | string |  | Error message string. Read-only. |
| `error.errors` | array of string |  | Read-only. |

## Response 404

The requested resource was not found.

### `application/json`

| Field | Type | Required | Description |
|---|---|---|---|
| `error` | object |  |  |
| `error.code` | integer |  | Read-only. |
| `error.message` | string |  | Error message string. Read-only. |
| `error.errors` | array of string |  | Read-only. |

## Response 409

The request conflicts with the current state of the server.

### `application/json`

| Field | Type | Required | Description |
|---|---|---|---|
| `error` | object |  |  |
| `error.code` | integer |  | Read-only. |
| `error.message` | string |  | Error message string. Read-only. |
| `error.errors` | array of string |  | Read-only. |

## Response 429

Too many requests have been made, the rate limit has been reached.

### `application/json`

| Field | Type | Required | Description |
|---|---|---|---|
| `error` | object |  |  |
| `error.code` | integer |  | Read-only. |
| `error.message` | string |  | Error message string. Read-only. |
| `error.errors` | array of string |  | Read-only. |

## Developer Agreement

Your access to and use of the PagerDuty Developer Services is governed by the [PagerDuty Developer Agreement](https://docs.pagerduty.com/developer/pagerduty-developer-agreement).
