---
title: "Update daemon API key"
method: PUT
path: "/api/v1/daemon-api-keys/{id}"
tags: ["Daemon API Keys"]
---

# Update daemon API key

`PUT /api/v1/daemon-api-keys/{id}`

## Request

- Base URL: `https://app.scanopy.net`
- URL: `https://app.scanopy.net/api/v1/daemon-api-keys/{id}`
- Auth: one of:
  - API key in header `Authorization`
  - API key in cookie `session_id`

## Path parameters

- `id` string, uuid, required

## Request body

- DaemonApiKey
  - `daemon_id` string, uuid, nullable: Daemon this key is bound to 1:1, when provisioned server-side. NULL for legacy site-shared keys created before 1:1 provisioning, which resolve daemon identity from the X-Daemon-ID header instead.
  - `expires_at` string, date-time, nullable: When this record stops being valid.
  - `is_enabled` boolean: Whether the key may still be used. Disabled keys are rejected.
  - `key` string, required: The stored key. Returned redacted except on creation and rotation.
  - `last_used` string, date-time, nullable, required: When a daemon last authenticated with this key.
  - `name` string, required: Human-facing name for this key.
  - `site_id` string, uuid, required: The site this entity belongs to.
  - `tags` string[], required: Tags assigned to this entity.
  - `created_at` string, date-time, required: When this record was first created.
  - `id` string, uuid, required: Server-assigned unique identifier.
  - `updated_at` string, date-time, required: When this record was last modified.

## Response `200`

Daemon API key updated

- ApiResponseDaemonApiKey: Envelope for a successful response. Failures are sent with a non-2xx status and an `ApiErrorResponse` body instead.
  - `data` object: The result payload. Omitted on failure.
    - `daemon_id` string, uuid, nullable: Daemon this key is bound to 1:1, when provisioned server-side. NULL for legacy site-shared keys created before 1:1 provisioning, which resolve daemon identity from the X-Daemon-ID header instead.
    - `expires_at` string, date-time, nullable: When this record stops being valid.
    - `is_enabled` boolean: Whether the key may still be used. Disabled keys are rejected.
    - `key` string, required: The stored key. Returned redacted except on creation and rotation.
    - `last_used` string, date-time, nullable, required: When a daemon last authenticated with this key.
    - `name` string, required: Human-facing name for this key.
    - `site_id` string, uuid, required: The site this entity belongs to.
    - `tags` string[], required: Tags assigned to this entity.
    - `created_at` string, date-time, required: When this record was first created.
    - `id` string, uuid, required: Server-assigned unique identifier.
    - `updated_at` string, date-time, required: When this record was last modified.
  - `error` string, nullable: Not sent on a successful response. Failure messages arrive in an `ApiErrorResponse`.
  - `meta` ApiMeta, required: API metadata included in all responses
    - `api_version` integer, required: API version (integer, increments on breaking changes)
    - `server_version` string, required: Server version (semver)
  - `success` boolean, required: Always `true` on a successful response.

## Other responses

- `404`: Daemon API key not found

## Changes

- **2026-10-26** `c9d9d46d1ae8`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/scanopy/apis/scanopy-api/changes/api/v1/daemon-api-keys/:id/put.md)

---

[API](https://skmtc.dev/scanopy/apis/scanopy-api.md) - [All operations](https://skmtc.dev/scanopy/apis/scanopy-api/llms.txt) - [OpenAPI document](https://skmtc.dev/scanopy/apis/scanopy-api/revisions/966ba786bdb5?raw)
