---
title: "Api Temporary Keys Update"
method: PUT
path: "/api/temporary-keys/{id}/"
tags: ["users"]
---

# Api Temporary Keys Update

`PUT /api/temporary-keys/{id}/`

Stamp server-controlled fields at save time — never by mutating
``request.data``.

DRF's contract: ``post()`` → ``create()`` → ``serializer.is_valid()`` →
``perform_create(serializer)`` → ``serializer.save(**kwargs)``. Server values
belong in that final ``save(**kwargs)`` — they override ``validated_data``,
never pass through client validation, and don't need to be *writable*
serializer fields. The matching serializer field becomes ``read_only=True``
(or is dropped from ``fields``), shrinking — not widening — the
mass-assignment surface, and the immutable-``QueryDict`` (multipart) failure
mode of the old ``request.data[...] =`` pattern disappears.

Declare the fields to stamp as ``field -> fn(view) -> value`` maps::

    class ExperimentV2sView(ServerStampedFieldsMixin, ...):
        create_stamped_fields = {"created_by": stamp_request_user_id}
    # + serializer: created_by = ...(read_only=True)

FK columns: when the stamped value is an ``int`` and the field names a
relation on the serializer's ``Meta.model``, the kwarg is rewritten to
``<field>_id`` so ``Model.objects.create`` accepts it (a raw ``int`` on the
FK attribute itself would raise). Non-relation fields (``scorer`` = email)
and instance values pass through unchanged.

Cooperative composition: subclasses that need to stamp *additional* server
values (e.g. ``OrganizationInjectionMixin`` stamping org/project) override
``get_create_save_kwargs`` / ``get_update_save_kwargs`` and merge onto
``super()`` — yielding exactly ONE ``serializer.save()`` per request (calling
``save()`` twice would re-run create/update side effects).

## Path parameters

- `id` string, required

## Headers

- `Authorization` string, required

## Request body

- OrganizationKeyUpdateRequest
  - `project` string, nullable
  - `name` string — A free-form name for the API key. Need not be unique. 50 characters max.
  - `revoked` boolean — If the API key is revoked, clients cannot use it anymore. (This cannot be undone.)
  - `expiry_date` string, date-time, nullable — Once API key expires, clients cannot use it anymore.
  - `max_usage` integer
  - `rate_limit` number, double, nullable
  - `spending_limit` number, double, nullable
  - `is_temporary` boolean

## Response `200`

- OrganizationKeyUpdate
  - `id` string, required
  - `api_key` string, required
  - `suffix` string, required
  - `tags` GenericTagDisplay[], required
    - `id` string, required
    - `name` string, required
    - `color` string, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `status` 'active' | 'expired' | 'revoked', required — * `active` - Active * `expired` - Expired * `revoked` - Revoked
  - `project` string, nullable
  - `prefix` string, required
  - `hashed_key` string, required
  - `created` string, date-time, required
  - `name` string — A free-form name for the API key. Need not be unique. 50 characters max.
  - `revoked` boolean — If the API key is revoked, clients cannot use it anymore. (This cannot be undone.)
  - `expiry_date` string, date-time, nullable — Once API key expires, clients cannot use it anymore.
  - `key_usage` integer, required
  - `max_usage` integer
  - `last_used` string, date-time, required
  - `rate_limit` number, double, nullable
  - `spending_limit` number, double, nullable
  - `spending_in_period` number, double, required
  - `is_test` boolean, required
  - `is_temporary` boolean
  - `revoked_at` string, date-time, nullable, required
  - `revoked_by_email` string, nullable, required
  - `user` integer, nullable, required
  - `organization` integer, nullable, required
  - `created_by` integer, nullable, required
  - `updated_by` integer, nullable, required

---

[API](https://skmtc.net/keywordsai/apis/api-reference.md) · [All operations](https://skmtc.net/keywordsai/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/keywordsai/api-reference/versions/c26d550029f8/schema)
