---
title: "Create Block Request"
method: POST
path: "/api/v1/block/requests"
tags: ["User APIs", "block-data"]
---

# Create Block Request

`POST /api/v1/block/requests`

## Request body

- BlockRequestCreate
  - `dataset_id` string, required
  - `lag` string, nullable
  - `cut` string, nullable
  - `additional_email_recipients` string[]
  - `accepted_block_tou_version_id` string, uuid, nullable
  - `use_case` string, nullable

## Response `201`

Successful Response

- BlockRequestCustomerRead — Customer-facing variant of ``BlockRequestRead``. Collapses ``provisioning_failed`` → ``provisioning`` in the serialized output so requestors see a stuck attempt as still in-flight ("access provisioning") rather than a failure they can't act on. The failure remains visible to CAMS admins via the underlying status + the per-step audit table. ``custom_adjustment_rationale`` is internal — overriding the field with ``exclude=True`` drops it from the serialized response so customers never see the CarbonArc-authored note.
  - `id` string, uuid, required
  - `dataset_id` string, required
  - `lag` string, nullable
  - `cut` string, nullable
  - `label` string, nullable
  - `internal_name` string, nullable
  - `core_source` string, nullable
  - `client_id` string, uuid, required
  - `client_polaris_principal_missing` boolean
  - `client_name` string, nullable
  - `requestor_email` string, required
  - `status` 'pending_block_admin' | 'pending_compliance' | 'pending_internal' | 'approved' | 'intake_pending' | 'provisioning' | 'provisioning_failed' | 'trial_pending' | 'trial_active' | 'contracted' | 'contract_expired' | 'request_cancelled' | 'trial_cancelled' | 'contract_cancelled' | 'block_cancelled' | 'rejected', required
  - `internal_queue_step` 'accounts' | 'legal' | 'engineering' | 'complete'
  - `rejection_source` 'client_block_admin' | 'client_compliance' | 'carbonarc_accounts' | 'carbonarc_legal' | 'carbonarc_engineering'
  - `rejection_message` string, nullable
  - `rejected_by` string, nullable
  - `trial_duration_months` integer, required
  - `annual_price` string, nullable
  - `original_trial_duration_months` integer, nullable
  - `original_annual_price` string, nullable
  - `additional_email_recipients` string[]
  - `use_case` string, nullable
  - `trial_start_date` string, date-time, nullable
  - `trial_end_date` string, date-time, nullable
  - `original_trial_start_date` string, date-time, nullable
  - `original_trial_end_date` string, date-time, nullable
  - `first_ingestion_at` string, date-time, nullable
  - `trial_start_trigger` 'first_ingestion' | 'auto_start'
  - `approved_by_block_admin` string, nullable
  - `approved_by_compliance` string, nullable
  - `approved_at` string, date-time, nullable
  - `cancellation_requested_at` string, date-time, nullable
  - `cancellation_requested_by` string, nullable
  - `cancellation_request_reason` string, nullable
  - `compliance_tear_sheet` BlockComplianceTearSheetMeta — Per-dataset compliance tear sheet metadata. Mirrors the ``ComplianceTearSheetMeta`` TypedDict in ``app.services.compliance_tear_sheet`` so the same dict shape can be model_validate'd onto a pydantic schema.
    - `available` boolean, required
    - `size_bytes` integer, nullable
    - `updated_at` string, date-time, nullable
    - `download_url` string, nullable
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## 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)
