---
title: "Create Item Query"
method: POST
path: "/claims/internal/expenditures/{claim_id}/items/{item_id}/queries"
tags: ["expenditures"]
---

# Create Item Query

`POST /claims/internal/expenditures/{claim_id}/items/{item_id}/queries`

## 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/internal/expenditures/{claim_id}/items/{item_id}/queries`
- Auth: none declared

Admin raises a query against a specific expenditure line item.

For synthesised salary rows (``item_id >= _EMPLOYEE_RATE_ID_OFFSET``) the
query is recorded against the employee subgroup instead — there's no
``aurd_expenditure_items`` row to anchor to. The DB row uses the same
``aurd_expenditure_item_queries`` table with ``category='salaries'`` and
``subgroup_key=<employee>`` (already supported by the scope-extension
migration ``exp_query_scope``).

## Path parameters

- `claim_id` integer, required
- `item_id` integer, required

## Request body

- CreateQueryRequest
  - `question` string, required

## Response `200`

Successful Response

- QueryResponse
  - `id` integer, required
  - `scope` 'item' | 'items' | 'payslip' | 'subgroup' | 'general', required
  - `expenditure_item_id` integer, nullable, required
  - `employee_expense_id` integer, nullable, required
  - `category` string, nullable, required
  - `subgroup_key` string, nullable, required
  - `status` string, required
  - `asked_at` string, required
  - `resolved_at` string, nullable, required
  - `messages` QueryMessageResponse[], required
    - `id` integer, required
    - `query_id` integer, required
    - `author_role` 'admin' | 'customer', required
    - `author_user_id` integer, nullable, required
    - `author_name` string, nullable, required
    - `body` string, required
    - `created_at` string, required
    - `edited_at` string, nullable, required
    - `edited_by_user_id` integer, nullable, required
  - `item` QueryItemSummary, required
    - `id` integer, required
    - `name` string, required
    - `source_amount` number, nullable, required
    - `source_date` string, nullable, required
    - `category` string, nullable, required
    - `eligibility` string, required
    - `rd_percentage` number, nullable, required
    - `refund_of_item_id` integer, nullable, required
    - `apportionments` ApportionmentOut[], required
      - `activity_id` integer, required
      - `activity_name` string, nullable
      - `percentage` number, required
  - `payslip` QueryPayslipSummary, required
    - `id` integer, required
    - `employee_identity_id` integer, required
    - `employee_name` string, required
    - `payment_date` string, nullable, required
    - `pay_period_start` string, nullable, required
    - `pay_period_end` string, nullable, required
    - `employer_cost` number, required
    - `rd_percentage` number, required
    - `rd_amount` number, required
    - `apportionments` SalaryPayslipApportionment[], required
      - `activity_id` integer, required
      - `activity_name` string, required
      - `project_name` string, nullable, required
      - `percentage` number, required
      - `amount` number, required
  - `linked_refunds` QueryItemSummary[]
    - `id` integer, required
    - `name` string, required
    - `source_amount` number, nullable, required
    - `source_date` string, nullable, required
    - `category` string, nullable, required
    - `eligibility` string, required
    - `rd_percentage` number, nullable, required
    - `refund_of_item_id` integer, nullable, required
    - `apportionments` ApportionmentOut[], required
      - `activity_id` integer, required
      - `activity_name` string, nullable
      - `percentage` number, required
  - `subgroup_items` QuerySubgroupItemSummary[]
    - `id` integer, required
    - `name` string, required
    - `source_amount` number, nullable, required
    - `source_date` string, nullable, required
    - `category` string, nullable, required
    - `eligibility` string, required
    - `rd_percentage` number, nullable, required
    - `refund_of_item_id` integer, nullable, required
    - `apportionments` ApportionmentOut[], required
      - `activity_id` integer, required
      - `activity_name` string, nullable
      - `percentage` number, required
  - `selected_items` QuerySubgroupItemSummary[]
    - `id` integer, required
    - `name` string, required
    - `source_amount` number, nullable, required
    - `source_date` string, nullable, required
    - `category` string, nullable, required
    - `eligibility` string, required
    - `rd_percentage` number, nullable, required
    - `refund_of_item_id` integer, nullable, required
    - `apportionments` ApportionmentOut[], required
      - `activity_id` integer, required
      - `activity_name` string, nullable
      - `percentage` number, required
  - `selected_items_missing` integer

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