---
title: "Bulk approve, change, or reject class proposals"
method: POST
path: "/accountant/companies/{customerId}/classes/proposals/bulk"
tags: ["Accounting Classes"]
---

# Bulk approve, change, or reject class proposals

`POST /accountant/companies/{customerId}/classes/proposals/bulk`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/accountant/companies/{customerId}/classes/proposals/bulk`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

## Request body

- union
  - object
    - `action` 'approve', required
    - `proposalIds` string[], required
    - `apply` boolean
  - object
    - `action` 'change', required
    - `proposalIds` string[], required
    - `classId` string, uuid, required
    - `apply` boolean
  - object
    - `action` 'reject', required
    - `proposalIds` string[], required
    - `reason` string

## Response `200`

Bulk class proposal action result

- AccountingClassProposalBulkActionResponse
  - `success` boolean
  - `data` object
    - `results` AccountingClassProposalActionResult[]
      - `proposal` AccountingClassProposal
        - `id` string, uuid
        - `companyId` string, uuid
        - `engineRunId` string, uuid, nullable
        - `transactionId` string, uuid, nullable
        - `transactionSplitId` string, uuid, nullable
        - `proposedClassId` string, uuid, nullable
        - `proposedClassName` string, nullable
        - `proposedClass` AccountingClass
          - `id` string, uuid
          - `companyId` string, uuid
          - `name` string
          - `description` string, nullable
          - `status` 'draft' | 'active' | 'inactive'
          - `source` 'accountant' | 'bookkeeping_engine' | 'import'
          - `isActive` boolean
          - `approvedAt` string, date-time, nullable
          - `approvedByUserId` string, uuid, nullable
          - `metadata` object
          - `createdAt` string, date-time
          - `updatedAt` string, date-time
        - `approvedClassId` string, uuid, nullable
        - `status` 'proposed' | 'approved' | 'applied' | 'rejected' | 'correction_proposed'
        - `confidence` number, nullable
        - `applyEligibility` boolean
        - `source` 'bookkeeping_engine' | 'accountant' | 'import'
        - `reasoningSummary` string, nullable
        - `evidence` object
        - `metadata` object
        - `approvedAt` string, date-time, nullable
        - `approvedByUserId` string, uuid, nullable
        - `appliedAt` string, date-time, nullable
        - `rejectedAt` string, date-time, nullable
        - `rejectedByUserId` string, uuid, nullable
        - `createdAt` string, date-time
        - `updatedAt` string, date-time
      - `outcome` 'approved' | 'applied' | 'rejected' | 'correction_proposed'
      - `transactionId` string, uuid, nullable
      - `classId` string, uuid, nullable

## Other responses

- `401`: Authentication required
- `403`: Insufficient permissions or not a company member
- `422`: Request failed validation

---

[API](https://skmtc.dev/medianfi/apis/median-api.md) · [All operations](https://skmtc.dev/medianfi/apis/median-api/llms.txt) · [OpenAPI document](https://skmtc.dev/medianfi/apis/median-api/revisions/20090ea32b0d?raw)
