---
title: "Submit Claim"
method: POST
path: "/claims/{claim_id}/submit"
tags: ["claims"]
---

# Submit Claim

`POST /claims/{claim_id}/submit`

## 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/claims/{claim_id}/submit`
- Auth: none declared

Finalise a claim: freeze its answers, lock further edits, and notify.

Checks, in order:
  1. Current status allows transition to ``submitted`` per the claim
     type's transition table.
  2. No unresolved root review comments.
  3. Company is not a subsidiary of a consolidated/MEC group
     (eligibility rule for AU R&D Tax Incentive).
  4. No unanswered required questions.

On success the handler sets ``status``, ``submitted_at``, ``submitted_by_id``,
and freezes the current questions payload into ``submitted_snapshot``.
Writes a ``ClaimAuditLog`` entry and dispatches a ``claim.submitted``
notification. Discord failures are swallowed — the submission commits
regardless.

Scope of the v1 edit lock: ``get_editable_claim_for_user`` blocks answer
writes, comment writes, and renames on a submitted claim. It does **not**
block uploads in ``api/files.py`` or AURD tracking mutations in
``api/aurd_tracking.py`` — those endpoints use different auth paths.
The ``submitted_snapshot`` is therefore the record of which answers were
filed, not of supporting material state at submission. See CLA-127
follow-ups.

## Path parameters

- `claim_id` integer, required

## Response `200`

Successful Response

- ClaimResponse
  - `id` integer, required
  - `name` string, required
  - `status` string, required
  - `claim_type` ClaimTypeEmbedded, required
    - `code` string, required
    - `name` string, required
    - `category` string, required
    - `country_code` string, nullable
    - `tax_year` integer, nullable
    - `fiscal_year_start_month` integer, nullable
    - `fiscal_year_start_day` integer, nullable
  - `workspace` WorkspaceEmbedded
    - `id` integer, required
    - `name` string, required
    - `enable_ai_generation` boolean
    - `enable_monthly_contemporaneous_reports` boolean
    - `enable_custom_claim_periods` boolean, nullable
    - `ai_context` string, nullable
  - `company` CompanyEmbedded: The legal entity a claim is filed for (subset for claim payloads).
    - `id` integer, required
    - `legal_name` string, required
  - `created_by` CreatedByEmbedded
    - `id` integer, required
    - `name` string, nullable
    - `email` string, required
  - `submitted_by` CreatedByEmbedded
    - `id` integer, required
    - `name` string, nullable
    - `email` string, required
  - `submitted_at` string, nullable
  - `declaration_completed_by` CreatedByEmbedded
    - `id` integer, required
    - `name` string, nullable
    - `email` string, required
  - `declaration_completed_at` string, nullable
  - `created_at` string, required
  - `updated_at` string, required
  - `role` string, nullable
  - `tracking_only` boolean
  - `is_consultant_claim` boolean
  - `is_first_year_of_operation` boolean
  - `fiscal_year_start_month` integer, nullable

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