---
title: "Update a company (name, status, branding; the theme is merged field by field, null removes a field)"
method: PATCH
path: "/api/v1/companies/{id}"
tags: ["Companies"]
---

# Update a company (name, status, branding; the theme is merged field by field, null removes a field)

`PATCH /api/v1/companies/{id}`

## Request

- Base URL: `https://qrlia.dev.castlesoft.eu`
- URL: `https://qrlia.dev.castlesoft.eu/api/v1/companies/{id}`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `qrc_session`

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `name` string: Human-readable display name.
  - `status` 'active' | 'suspended' | 'archived': Lifecycle state. `archived` companies are hidden from default listings but kept for analytics joins.
  - `theme` object: Company branding, merged field by field: absent = unchanged, null = removed (the workspace value applies). primaryColor/accentColor are hex #RRGGBB; logoUrl/faviconUrl an upload (/uploads/…) or https URL; fontFamily a CSS font list.
    - `primaryColor` union: Hex #RRGGBB. Buttons, accents and the landing-page glow.
      - string
      - ''
    - `accentColor` union: Hex #RRGGBB. Secondary colour.
      - string
      - ''
    - `logoUrl` union: An uploaded asset (/uploads/…) or an https URL.
      - string
      - ''
    - `faviconUrl` union: An uploaded asset (/uploads/…) or an https URL.
      - string
      - ''
    - `fontFamily` union: CSS font-family list, e.g. "Georgia, serif".
      - string
      - ''
    - `footerText` union
      - string
      - ''
    - `defaultCta` union: Call-to-action on QR frames, e.g. SCAN ME.
      - string
      - ''

## Response `200`

Updated

- Company
  - `id` string, uuid, required: UUID of the company.
  - `tenantId` string, uuid, required
  - `slug` string, required: Stable identifier within a tenant. Lowercase, dashes allowed, 3–40 chars.
  - `name` string, required: Human-readable display name.
  - `status` 'active' | 'suspended' | 'archived', required: Lifecycle state. `archived` companies are hidden from default listings but kept for analytics joins.
  - `theme` object, required: The company's own branding. Its QR landing pages use it over the workspace theme; missing fields fall back to the workspace.
    - `primaryColor` string
    - `accentColor` string
    - `logoUrl` string
    - `faviconUrl` string
    - `fontFamily` string
    - `footerText` string
    - `defaultCta` string
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required

## Other responses

- `400`: Validation failed
- `401`: Authentication required
- `403`: Forbidden
- `404`: Not found
- `409`: Conflict
- `500`: Internal

---

[API](https://skmtc.dev/qrlia/apis/qrlia-api.md) · [All operations](https://skmtc.dev/qrlia/apis/qrlia-api/llms.txt) · [OpenAPI document](https://skmtc.dev/qrlia/apis/qrlia-api/revisions/01c5dd6002ab?raw)
