---
title: "Get Block Request Timeline"
method: GET
path: "/api/v1/admin/block/requests/{request_id}/timeline"
tags: ["Admin APIs", "block-data-approvals"]
---

# Get Block Request Timeline

`GET /api/v1/admin/block/requests/{request_id}/timeline`

Merged approval timeline (customer-side denormalized fields +
admin audit log) — powers the Approvals kanban modal.

## Path parameters

- `request_id` string, uuid, required

## Response `200`

Successful Response

- BlockRequestTimelineResponse
  - `request_id` string, uuid, required
  - `events` BlockRequestTimelineEvent[], required
    - `kind` 'submitted' | 'block_admin_approve' | 'block_admin_reject' | 'compliance_approve' | 'compliance_reject' | 'compliance_skipped' | 'internal_approve' | 'internal_reject' | 'reset_rejection' | 'provisioning_failed' | 'provisioning_retried' | 'trial_started' | 'trial_expired' | 'cancellation_requested' | 'cancellation_approved' | 'cancellation_rejected' | 'cancelled_direct' | 'grace_extended', required — Discrete event types surfaced in the per-request timeline. ``submitted`` / ``block_admin_*`` / ``compliance_*`` are derived from denormalized columns on ``block_requests`` (power-ui actions don't write to the admin audit log). Internal-stage events come from ``admin_requests_audit_logs`` entries written by the admin audit middleware. ``compliance_skipped`` fires when the workflow setting or preapproval bypassed the compliance step entirely.
    - `stage` 'accounts' | 'legal' | 'engineering' | 'complete'
    - `actor_email` string, nullable
    - `at` string, date-time, required
    - `message` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api.md) · [All operations](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/carbonarc/carbon-arc-client-admin-api/revisions/a8ca30023371/schema)
