---
title: "Stretch Apportionment"
method: POST
path: "/aurd-apportionment/{claim_id}/stretch"
tags: ["au-rd-apportionment"]
---

# Stretch Apportionment

`POST /aurd-apportionment/{claim_id}/stretch`

## Request

- Base URL: `https://api.claimkit.co` (the document declares no server; this is the origin it was published from)
- URL: `https://api.claimkit.co/aurd-apportionment/{claim_id}/stretch`
- Auth: none declared

Stretch the most recent computed apportionment for the claim (CLA-257).

Admin-only. Synchronous and atomic — applies the per-employee Stretch
transform to the computed day classifications + employee rates, then
returns the updated summary in the same shape as GET /employees.

Body (CLA-259):
    * exponent (optional, default DEFAULT_STRETCH_EXPONENT): curve
      strength k in (0, 1]. Lower = more aggressive. Out-of-range values
      return 422 via Pydantic validation.

Pre-conditions (all return 409):
    * methodology_not_computed: no AURDEmployeeRate rows with a computed
      proposed_rd_percentage exist for this claim.
    * already_stretched: at least one rate's methodology_version already
      ends in '+stretch'. Recompute first to clear.
    * compute_in_progress: a 'running' AgentExecution exists for this
      claim's compute workflow. (Note: a stale-running execution older
      than APPORTIONMENT_STALE_MINUTES still blocks — recompute to clear.)
    * stretch_in_progress: another stretch is holding the advisory lock.

## Path parameters

- `claim_id` integer, required

## Request body

- StretchRequest: Admin-supplied parameters for the Stretch transform (CLA-259). `exponent` is the curve strength k in (0, 1]: target_pct = current_pct ** k. Lower = more aggressive lift. Omit to use the server default.
  - `exponent` number: Stretch curve exponent in (0, 1]. Lower is more aggressive.

## Response `200`

Successful Response

- EmployeeApportionmentSummaryResponse
  - `claim_id` integer, required
  - `methodology_version` string, required
  - `claim_business_day_count` integer, required
  - `period_start` string, nullable
  - `period_end` string, nullable
  - `apportionment_methodology` string, nullable
  - `employees` EmployeeApportionmentSummary[], required
    - `employee_identity_id` integer, required
    - `canonical_name` string, nullable, required
    - `rd_percentage` number, nullable, required
    - `proposed_rd_percentage` number, nullable, required
    - `methodology_version` string, nullable, required
    - `inclusion_status` 'included' | 'excluded', required
    - `exclusion_reason` string, nullable, required
    - `requires_manual_handling` boolean, required
    - `commit_count` integer, required
    - `classified_day_count` integer, required
    - `employment_start_date` string, nullable, required
    - `employment_end_date` string, nullable, required

## Other responses

- `422`: Validation Error

---

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