API & Developers

List and view project logs with the API

List project logs

GET /api/v1/projects/{project}/logs

{project} is the numeric project ID. The token must be assigned to that project, have project_logs:read, and belong to a user who can still view the project.

The endpoint accepts these optional query parameters:

  • search: searches titles only, up to 255 characters.

  • change_type: added, changed, deprecated, removed, fixed, or security.

  • source: manual, api, or system.

  • per_page: an integer from 1 to 100; the default is 15.

  • page: the requested pagination page.

Results are ordered by occurred_at descending and then by log ID descending.

curl "https://deploymonitor.com/api/v1/projects/45/logs?search=release&change_type=changed&source=api&per_page=25" \
  --header "Authorization: Bearer ${DEPLOYMONITOR_TOKEN}" \
  --header "Accept: application/json"

List response

The response contains data, pagination links, and pagination meta:

{
  "data": [
    {
      "id": 123,
      "project_id": 45,
      "created_by_user_id": 7,
      "change_type": "changed",
      "source": "api",
      "title": "Production release deployed",
      "description": "Deployed the latest tested release.",
      "metadata": {
        "environment": "production"
      },
      "fingerprint": "deploy:production:abc123",
      "occurred_at": "2026-08-19T18:30:00.000000Z",
      "created_at": "2026-08-19T18:31:00.000000Z",
      "updated_at": "2026-08-19T18:31:00.000000Z"
    }
  ],
  "links": {
    "first": "https://deploymonitor.com/api/v1/projects/45/logs?page=1",
    "last": "https://deploymonitor.com/api/v1/projects/45/logs?page=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "current_page": 1,
    "last_page": 1,
    "per_page": 25,
    "total": 1
  }
}

View one project log

GET /api/v1/projects/{project}/logs/{log}
curl "https://deploymonitor.com/api/v1/projects/45/logs/123" \
  --header "Authorization: Bearer ${DEPLOYMONITOR_TOKEN}" \
  --header "Accept: application/json"

A successful request returns 200 OK with the same log fields inside data.

A log that does not belong to {project} returns the same generic 404 Not Found response as a missing log. Requests for another project return 403 Forbidden because tokens cannot cross project boundaries.