---
title: "Update a contract type"
method: PATCH
path: "/contract-types/{id}"
tags: ["Contract Types"]
---

# Update a contract type

`PATCH /contract-types/{id}`

## Request

- Base URL: `https://contracko.com/api/v1`
- URL: `https://contracko.com/api/v1/contract-types/{id}`
- Auth: one of:
  - API key in header `x-contracko-api-key`
  - HTTP bearer

Updates a contract type. Include `fields` to reconcile the full custom-field set, or omit `fields` to leave custom fields unchanged.

- `impact` reports whether the edit changed what AI extraction reads. Contracts already using this type keep their saved values and are never re-read by this call.

## Path parameters

- `id` string, uuid, required: Contract type UUID

## Request body

- object: Input payload for updating a contract type.
  - `name` string, required: Contract type name
  - `description` string, nullable: Optional description
  - `fields` object[]: Optional full custom-field set to reconcile. Omit this field to leave existing custom fields unchanged.
    - `name` string, required
    - `fieldKey` string, required
    - `description` string
    - `placeholder` string
    - `fieldType` 'text' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'select' | 'multi_select', required
    - `required` boolean
    - `config` object: Type-specific settings: select and multi_select need options (string array); number may set min, max and decimalPlaces.
    - `options` string[]
    - `defaultValue` union
      - string
      - number
      - boolean
      - union[]
        - union
          - string
          - number
          - boolean
          - unknown[]
            - unknown
          - object
      - object
    - `id` string

## Response `200`

Contract type updated.

- object
  - `contractType` object, required: Contract type stored in Contracko
    - `id` string, uuid, required
    - `name` string, required
    - `description` string, nullable, required
    - `organisationId` string, required
    - `isDefault` boolean, required
    - `source` 'manual' | 'template_adoption' | 'starting_template' | 'ai_generated', required
    - `sourceTemplateId` string, uuid, nullable, required
    - `sourceTemplateSlug` string, nullable, required
    - `entityStatus` 'pending-review' | 'archived', nullable, required: Read-only review state. AI-created types can be pending-review; any update clears it to null.
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `fields` object[], required: Custom fields of this contract type
      - `id` string, uuid, required
      - `name` string, required
      - `fieldKey` string, required
      - `description` string, nullable, required
      - `placeholder` string, nullable, required
      - `fieldType` 'text' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'select' | 'multi_select', required
      - `required` boolean, required
      - `config` union, required
        - string
        - number
        - boolean
        - object
        - unknown[]
          - unknown
      - `defaultValue` union, required
        - string
        - number
        - boolean
        - object
        - unknown[]
          - unknown
      - `displayOrder` integer, required
      - `categoryId` string, uuid, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
  - `impact` object, required: What this edit did, and did not, do to contracts already using this type
    - `extractionSchemaChanged` boolean, required: Whether this edit changed what AI extraction reads for this contract type
    - `changedFieldKeys` string[], required: Information field keys added, removed, or redefined by this edit
    - `existingContractsReprocessed` unknown, required
    - `existingContractValuesChanged` unknown, required
    - `reprocessingRecommended` boolean, required: Whether re-reading affected documents would now produce different suggestions
    - `recommendedNextAction` 'reprocess_relevant_documents' | 'none', required: Suggested follow-up for this edit
    - `applicationRequiresExplicitApproval` unknown, required
    - `previousExtractionSchemaFingerprint` string, required: Fingerprint of the extraction-relevant field definitions before this edit
    - `extractionSchemaFingerprint` string, required: Fingerprint of the extraction-relevant field definitions after this edit

## Other responses

- `400`: Request validation failed (payload, query, or path format is invalid).
- `401`: Authentication failed (missing, invalid, revoked, or expired API key).
- `403`: Access denied because the API key does not include the required access for this operation.
- `404`: The requested resource was not found.
- `409`: A previous request with the same idempotency key is still being processed.
- `422`: Request is well-formed but contains values the API cannot process.
- `429`: Retry later because the request rate limit was reached.
- `500`: The server could not complete the request.

---

[API](https://skmtc.dev/contracko/apis/contracko-parsing-api.md) · [All operations](https://skmtc.dev/contracko/apis/contracko-parsing-api/llms.txt) · [OpenAPI document](https://skmtc.dev/contracko/apis/contracko-parsing-api/revisions/2f90b1d3cafd?raw)
