---
title: "Update an Identity"
method: PUT
path: "/admin/identities/{id}"
tags: ["identity"]
---

# Update an Identity

`PUT /admin/identities/{id}`

This endpoint updates an [identity](https://www.ory.sh/docs/kratos/concepts/identity-user-model). The full identity
payload (except credentials) is expected. It is possible to update the identity's credentials as well.

## Path parameters

- `id` string, required

## Request body

- UpdateIdentityBody — Update Identity Body
  - `credentials` IdentityWithCredentials — Create Identity and Import Credentials
    - `oidc` IdentityWithCredentialsOidc — Create Identity and Import Social Sign In Credentials
      - `config` IdentityWithCredentialsOidcConfig
        - `config` IdentityWithCredentialsPasswordConfig — Create Identity and Import Password Credentials Configuration
          - `hashed_password` string — The hashed password in [PHC format](https://www.ory.sh/docs/kratos/manage-identities/import-user-accounts-identities#hashed-passwords)
          - `password` string — The password in plain text if no hash is available.
        - `providers` IdentityWithCredentialsOidcConfigProvider[] — A list of OpenID Connect Providers
          - `provider` string, required — The OpenID Connect provider to link the subject to. Usually something like `google` or `github`.
          - `subject` string, required — The subject (`sub`) of the OpenID Connect connection. Usually the `sub` field of the ID Token.
    - `password` IdentityWithCredentialsPassword — Create Identity and Import Password Credentials
      - `config` IdentityWithCredentialsPasswordConfig — Create Identity and Import Password Credentials Configuration
        - `hashed_password` string — The hashed password in [PHC format](https://www.ory.sh/docs/kratos/manage-identities/import-user-accounts-identities#hashed-passwords)
        - `password` string — The password in plain text if no hash is available.
  - `metadata_admin` unknown
  - `metadata_public` unknown
  - `schema_id` string, required — SchemaID is the ID of the JSON Schema to be used for validating the identity's traits. If set will update the Identity's SchemaID.
  - `state` 'active' | 'inactive', required — State is the identity's state. active StateActive inactive StateInactive
  - `traits` object, required — Traits represent an identity's traits. The identity is able to create, modify, and delete traits in a self-service manner. The input will always be validated against the JSON Schema defined in `schema_id`.

## Response `200`

identity

- Identity — An [identity](https://www.ory.sh/docs/kratos/concepts/identity-user-model) represents a (human) user in Ory.
  - `created_at` string, date-time — CreatedAt is a helper struct field for gobuffalo.pop.
  - `credentials` object — Credentials represents all credentials that can be used for authenticating this identity.
  - `id` string, uuid, required — ID is the identity's unique identifier. The Identity ID can not be changed and can not be chosen. This ensures future compatibility and optimization for distributed stores such as CockroachDB.
  - `metadata_admin` unknown
  - `metadata_public` unknown
  - `organization_id` string, uuid4, nullable
  - `recovery_addresses` RecoveryIdentityAddress[] — RecoveryAddresses contains all the addresses that can be used to recover an identity.
    - `created_at` string, date-time — CreatedAt is a helper struct field for gobuffalo.pop.
    - `id` string, uuid, required
    - `updated_at` string, date-time — UpdatedAt is a helper struct field for gobuffalo.pop.
    - `value` string, required
    - `via` string, required
  - `schema_id` string, required — SchemaID is the ID of the JSON Schema to be used for validating the identity's traits.
  - `schema_url` string, required — SchemaURL is the URL of the endpoint where the identity's traits schema can be fetched from. format: url
  - `state` 'active' | 'inactive' — State is the identity's state. This value has currently no effect. active StateActive inactive StateInactive
  - `state_changed_at` string, date-time
  - `traits` unknown, required
  - `updated_at` string, date-time — UpdatedAt is a helper struct field for gobuffalo.pop.
  - `verifiable_addresses` VerifiableIdentityAddress[] — VerifiableAddresses contains all the addresses that can be verified by the user.
    - `created_at` string, date-time — When this entry was created
    - `id` string, uuid — The ID
    - `status` string, required — VerifiableAddressStatus must not exceed 16 characters as that is the limitation in the SQL Schema
    - `updated_at` string, date-time — When this entry was last updated
    - `value` string, required — The address value example foo@user.com
    - `verified` boolean, required — Indicates if the address has already been verified
    - `verified_at` string, date-time
    - `via` 'email' | 'sms', required — The delivery method

## Other responses

- `400` — errorGeneric
- `404` — errorGeneric
- `409` — errorGeneric
- `default` — errorGeneric

## Changes

- **2024-06-05** `344e70f3542d` — 2 warning
  - added the new `passkey` enum value to the `credentials/additionalProperties/type` response property for the response status `200`
  - added the new `profile` enum value to the `credentials/additionalProperties/type` response property for the response status `200`
- **2024-02-20** `4f071812f3ea` — 5 warning, 1 info
  - added the new `code` enum value to the `credentials/additionalProperties/type` response property for the response status `200`
  - added the new `code_recovery` enum value to the `credentials/additionalProperties/type` response property for the response status `200`
  - added the new `email` enum value to the `verifiable_addresses/items/via` response property for the response status `200`
  - added the new `link_recovery` enum value to the `credentials/additionalProperties/type` response property for the response status `200`
  - …2 more
- **2022-12-02** `b6e5ffa30d4c` — 6 breaking, 5 info
  - the response property `metadata_admin` became nullable for the status `200`
  - the response property `metadata_public` became nullable for the status `200`
  - the response property `verifiable_addresses/items/id` became optional for the status `200`
  - the `id` response's property type/format changed from `string`/`uuid4` to `string`/`uuid` for status `200`
  - …7 more
- …earlier changes not shown

[Full history](https://skmtc.dev/ory/apis/ory-identities-api/changes/admin/identities/:id/put.md)

---

[API](https://skmtc.dev/ory/apis/ory-identities-api.md) · [All operations](https://skmtc.dev/ory/apis/ory-identities-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ory/ory-identities-api/revisions/344e70f3542d/schema)
