---
title: "Create multiple identities"
method: PATCH
path: "/admin/identities"
tags: ["identity"]
---

# Create multiple identities

`PATCH /admin/identities`

Creates multiple [identities](https://www.ory.com/docs/kratos/concepts/identity-user-model).

You can also use this endpoint to [import credentials](https://www.ory.com/docs/kratos/manage-identities/import-user-accounts-identities),
including passwords, social sign-in settings, and multi-factor authentication methods.

If the patch includes hashed passwords you can import up to 1,000 identities per request.

If the patch includes at least one plaintext password you can import up to 200 identities per request.

Avoid importing large batches with plaintext passwords. They can cause timeouts as the passwords need to be hashed before they are stored.

If at least one identity is imported successfully, the response status is 200 OK.
If all imports fail, the response is one of the following 4xx errors:
400 Bad Request: The request payload is invalid or improperly formatted.
409 Conflict: Duplicate identities or conflicting data were detected.

If you get a 504 Gateway Timeout:
Reduce the batch size
Avoid duplicate identities
Pre-hash passwords with BCrypt

If the issue persists, contact support.

## Request body

- PatchIdentitiesBody — Patch Identities Body
  - `identities` IdentityPatch[] — Identities holds the list of patches to apply required
    - `create` CreateIdentityBody — Create Identity Body
      - `credentials` IdentityWithCredentials — Create Identity and Import Credentials
        - `lookup_secret` AdminIdentityImportCredentialsLookupSecret — Create Identity and Import Lookup Secret Credentials
          - `config` AdminIdentityImportCredentialsLookupSecretConfig — Create Identity and Import Lookup Secret Credentials Configuration
            - `codes` IdentityCredentialsLookupSecretCode[] — Codes is a list of "lookup secret" codes configured for the user.
              - …
        - `oidc` IdentityWithCredentialsOidc — Create Identity and Import Social Sign In Credentials
          - `config` IdentityWithCredentialsOidcConfig
            - `providers` IdentityWithCredentialsOidcConfigProvider[] — A list of OpenID Connect Providers
              - …
        - `passkey` IdentityWithCredentialsPasskey — Create Identity and Import Passkey Credentials
          - `config` IdentityWithCredentialsPasskeyConfig — Create Identity and Import Passkey Credentials Configuration
            - `credentials` IdentityCredentialsWebAuthn[]
              - …
            - `user_handle` integer[] — UserHandle is the user handle of the webauthn credential.
        - `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.com/docs/kratos/manage-identities/import-user-accounts-identities#hashed-passwords)
            - `password` string — The password in plain text if no hash is available.
            - `use_password_migration_hook` boolean — If set to true, the password will be migrated using the password migration hook.
        - `saml` IdentityWithCredentialsSaml — Payload to import SAML credentials
          - `config` IdentityWithCredentialsSamlConfig — Payload of SAML providers
            - `providers` IdentityWithCredentialsSamlConfigProvider[] — A list of SAML Providers
              - …
        - `totp` IdentityWithCredentialsTotp — Create Identity and Import TOTP 2FA Credentials
          - `config` IdentityWithCredentialsTotpConfig — Create Identity and Import TOTP 2FA Credentials Configuration
            - `totp_url` string — TOTPURL is the TOTP URL For more details see: https://github.com/google/google-authenticator/wiki/Key-Uri-Format
        - `webauthn` IdentityWithCredentialsWebAuthn — Create Identity and Import WebAuthn Credentials
          - `config` IdentityWithCredentialsWebAuthnConfig — Create Identity and Import WebAuthn Credentials Configuration
            - `credentials` IdentityCredentialsWebAuthn[]
              - …
            - `user_handle` integer[] — UserHandle is the user handle of the webauthn credential.
      - `external_id` string — ExternalID is an optional external ID of the identity. This is used to link the identity to an external system. If set, the external ID must be unique across all identities.
      - `metadata_admin` object — Store metadata about the user which is only accessible through admin APIs such as `GET /admin/identities/<id>`.
      - `metadata_public` object — Store metadata about the identity which the identity itself can see when calling for example the session endpoint. Do not store sensitive information (e.g. credit score) about the identity in this field.
      - `organization_id` NullUUID — NullUUID can be used with the standard sql package to represent a UUID value that can be NULL in the database.
        - `UUID` string, uuid
        - `Valid` boolean
      - `recovery_addresses` RecoveryIdentityAddress[] — RecoveryAddresses contains all the addresses that can be used to recover an identity. Use this structure to import recovery addresses for an identity. Please keep in mind that the address needs to be represented in the Identity Schema or this field will be overwritten on the next identity update.
        - `break_glass_for_organization` NullUUID — NullUUID can be used with the standard sql package to represent a UUID value that can be NULL in the database.
          - `UUID` string, uuid
          - `Valid` boolean
        - `created_at` string, date-time — CreatedAt is a helper struct field for gobuffalo.pop.
        - `id` string, uuid
        - `updated_at` string, date-time — UpdatedAt is a helper struct field for gobuffalo.pop.
        - `value` string, required
        - `via` string, required
      - `region` 'eu-central' | 'asia-northeast' | 'us-east' | 'us-west' | 'eu' | 'asia' | 'us' | 'global' — Region is the Ory Network region this identity will be created in. Optional; defaults to the project home region if omitted. Only effective on the Ory Network. eu-central EUCentral asia-northeast AsiaNorthEast us-east USEast us-west USWest eu EU asia Asia us US global Global
      - `schema_id` string, required — SchemaID is the ID of the JSON Schema to be used for validating the identity's traits.
      - `state` 'active' | 'inactive' — 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_url`.
      - `verifiable_addresses` VerifiableIdentityAddress[] — VerifiableAddresses contains all the addresses that can be verified by the user. Use this structure to import verified addresses for an identity. Please keep in mind that the address needs to be represented in the Identity Schema or this field will be overwritten on the next identity update.
        - `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
    - `patch_id` string, uuid — The ID of this patch. The patch ID is optional. If specified, the ID will be returned in the response, so consumers of this API can correlate the response with the patch.

## Response `200`

batchPatchIdentitiesResponse

- BatchPatchIdentitiesResponse — Patch identities response
  - `identities` IdentityPatchResponse[] — The patch responses for the individual identities.
    - `action` 'create' | 'error' — The action for this specific patch create ActionCreate Create this identity. error ActionError Error indicates that the patch failed.
    - `error` unknown
    - `identity` string, uuid — The identity ID payload of this patch
    - `patch_id` string, uuid — The ID of this patch response, if an ID was specified in the patch.

## Other responses

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

---

[API](https://skmtc.net/ory/apis/ory-kratos.md) · [All operations](https://skmtc.net/ory/apis/ory-kratos/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ory/ory-kratos/revisions/cc87f41fbd6d/schema)
