---
title: "Update an organization seal"
method: PATCH
path: "/seals/{id}"
tags: ["Organization Seals"]
---

# Update an organization seal

`PATCH /seals/{id}`

Update a seal's name, display name, image, or default status. Image-changing updates create a new version (replace). Company-scope seals require a protected API key for mutations.

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `name` string — New internal name
  - `display_name` string — New display name (triggers image re-render)
  - `signatory_title` string, nullable — New signatory title
  - `image` string — New base64 PNG data URI
  - `typed` object
    - `text` string
    - `style` string
  - `statement` SealStatement — Attestation statement affirming authority to apply the seal.
    - `language` string, required — Language code of the statement
    - `signatory_name` string, required — Name of the person attesting
    - `signatory_title` string, nullable — Title of the person attesting
    - `text` string, required — Full text of the attestation statement
    - `accepted` boolean, required — Must be true to confirm acceptance
    - `version` integer — Statement version number
  - `is_default` boolean — Set as default seal for its scope

## Response `200`

Seal updated successfully

- OrganizationSeal — Organization seal metadata (image and statement internals are stripped from list/get responses).
  - `id` string, uuid
  - `lineage_id` string, uuid — Shared across versions of the same seal
  - `version` integer
  - `companies_id` string, uuid
  - `companies_workspaces_id` string, uuid, nullable — Null for company-scope seals
  - `name` string
  - `display_name` string
  - `signatory_title` string, nullable
  - `kind` 'uploaded' | 'typed' | 'drawn'
  - `is_default` 0 | 1 — 1 if this is the default seal for its scope
  - `statement_language` string
  - `statement_version` integer
  - `signatory_name` string
  - `signatory_title_attested` string, nullable
  - `attested_at` string, date-time
  - `revoked_on` string, date-time, nullable
  - `created_at` string, date-time
  - `deleted` 0 | 1

## Other responses

- `400` — Bad Request - Validation failed
- `401` — Unauthorized - Invalid or missing API key
- `403` — Forbidden - Insufficient permissions
- `404` — Not Found - Resource does not exist
- `409` — Conflict. Possible codes: SEAL_ALREADY_REVOKED, SEAL_ORDER_COLLISION, SEAL_ERASE_NOT_ELIGIBLE
- `429` — Too Many Requests - Rate limit exceeded
- `503` — Seal image processing is unavailable on this host (SEAL_CREATION_DISABLED_EDGE). Retry against the primary API host.

## Changes

- **2026-09-15** `f179958c3bee` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/firma/apis/firma-partner-api/changes/seals/:id/patch.md)

---

[API](https://skmtc.dev/firma/apis/firma-partner-api.md) · [All operations](https://skmtc.dev/firma/apis/firma-partner-api/llms.txt) · [OpenAPI document](https://skmtc.dev/firma/apis/firma-partner-api/revisions/7160ab24558c?raw)
