---
title: "Get a project Trail's merged activity timeline"
method: GET
path: "/api/v1/{forge}/{project}/trails/{trailId}/timeline"
tags: ["Project Trails"]
---

# Get a project Trail's merged activity timeline

`GET /api/v1/{forge}/{project}/trails/{trailId}/timeline`

## Request

- Base URL: `https://entire.io` (the document declares no server; this is the origin it was published from)
- URL: `https://entire.io/api/v1/{forge}/{project}/trails/{trailId}/timeline`
- Auth: none declared

## Path parameters

- `forge` 'gh' | 'et', required
- `project` string, required
- `trailId` string, required

## Query parameters

- `project_id` string
- `per_page` integer
- `cursor` string

## Response `200`

Project Trail activity, newest first

- object
  - `items` union[], required
    - union
      - object
        - `id` string, required
        - `occurred_at` string, nullable, required
        - `actor` object, nullable, required
          - `login` string, nullable
          - `label` string
          - `identity` object, nullable
            - `kind` string, required
            - `account_id` string, nullable, required
            - `username` string
            - `display_name` string, nullable, required
            - `avatar_url` string, nullable, required
            - `handles` object[], required
              - …
            - `automation` object
              - …
        - `kind` 'trail_created', required
      - object
        - `id` string, required
        - `occurred_at` string, nullable, required
        - `actor` object, nullable, required
          - `login` string, nullable
          - `label` string
          - `identity` object, nullable
            - `kind` string, required
            - `account_id` string, nullable, required
            - `username` string
            - `display_name` string, nullable, required
            - `avatar_url` string, nullable, required
            - `handles` object[], required
              - …
            - `automation` object
              - …
        - `kind` 'trail_status_changed', required
        - `from_status` string, nullable, required
        - `to_status` string, required
      - object
        - `id` string, required
        - `occurred_at` string, nullable, required
        - `actor` object, nullable, required
          - `login` string, nullable
          - `label` string
          - `identity` object, nullable
            - `kind` string, required
            - `account_id` string, nullable, required
            - `username` string
            - `display_name` string, nullable, required
            - `avatar_url` string, nullable, required
            - `handles` object[], required
              - …
            - `automation` object
              - …
        - `kind` 'trail_updated', required
        - `fields` string[], required
      - object
        - `id` string, required
        - `occurred_at` string, nullable, required
        - `actor` object, nullable, required
          - `login` string, nullable
          - `label` string
          - `identity` object, nullable
            - `kind` string, required
            - `account_id` string, nullable, required
            - `username` string
            - `display_name` string, nullable, required
            - `avatar_url` string, nullable, required
            - `handles` object[], required
              - …
            - `automation` object
              - …
        - `change_id` string, required
        - `repository_id` string, required
        - `branch` string, required
        - `kind` 'change_added', required
      - object
        - `id` string, required
        - `occurred_at` string, nullable, required
        - `actor` object, nullable, required
          - `login` string, nullable
          - `label` string
          - `identity` object, nullable
            - `kind` string, required
            - `account_id` string, nullable, required
            - `username` string
            - `display_name` string, nullable, required
            - `avatar_url` string, nullable, required
            - `handles` object[], required
              - …
            - `automation` object
              - …
        - `change_id` string, required
        - `repository_id` string, required
        - `branch` string, required
        - `kind` 'change_removed', required
        - `reason` string, nullable, required
      - object
        - `id` string, required
        - `occurred_at` string, nullable, required
        - `actor` object, nullable, required
          - `login` string, nullable
          - `label` string
          - `identity` object, nullable
            - `kind` string, required
            - `account_id` string, nullable, required
            - `username` string
            - `display_name` string, nullable, required
            - `avatar_url` string, nullable, required
            - `handles` object[], required
              - …
            - `automation` object
              - …
        - `kind` 'comment', required
        - `comment_id` string, required
        - `discussion_id` string, nullable, required
        - `is_reply` boolean, required
  - `next_cursor` string, nullable

## Other responses

- `400`: Invalid request
- `401`: Not authenticated
- `403`: Feature disabled or access denied
- `404`: Project, Trail, or Change not found
- `409`: Resource conflict
- `412`: ETag precondition failed
- `422`: Validation failed
- `429`: Rate limit exceeded
- `502`: Project cell unavailable
- `503`: Project Trails unavailable

## Changes

- **2026-10-21** `0a7e51f77fe6`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/entire/apis/entire-api/changes/api/v1/:forge/:project/trails/:trailId/timeline/get.md)

---

[API](https://skmtc.dev/entire/apis/entire-api.md) - [All operations](https://skmtc.dev/entire/apis/entire-api/llms.txt) - [OpenAPI document](https://skmtc.dev/entire/apis/entire-api/revisions/a24dfcc828d7?raw)
