Skip to main content
POST
Create User

Headers

Idempotency-Key
string

Optional key used to safely retry the same create/initiate request without duplicating side effects.

Example:

"a96d14c5-8e60-4f6b-9d80-5c18c0e4202a"

API-Version
string

Pin request, response, and webhook shapes to a specific dated API version (YYYY-MM-DD). Omit to use the version pinned to your API key (set when the key is created; new keys default to the latest version). New integrations should target the latest version.

Pattern: ^\d{4}-\d{2}-\d{2}$
Example:

"2026-07-06"

Body

application/json

Array of subjects to create. Each subject represents a user to be imported into Humanos

contact
string
required

The verified contact (email or phone number) that identifies this subject. This becomes a Contact row with a DID — Humanos can OTP it, route webhooks to it, and use it to participate in credential signing flows. See extraContacts for non-verified per-issuer metadata strings.

Example:

"john.doe@example.com"

internalId
string

Identifier to help you identify the user in your own system. We recommend using a unique value.

Example:

"internal-12345"

extraContacts
string[]

Array of contact emails or phone numbers. Any update will fully replace the existing extra contacts. These contacts only live within your organization, and are therefore not verified by Humanos. You will not be able to use them to contact the user.

Example:
identity
object

Identity information to be assigned to the user Only mandatory fields are {fullName, birth, docId, countryAlpha3}. Any extra field can be provided for visualization

Any update will fully replace the existing identity.

This identity only lives within your organization, therefore is not verified by Humanos.

Example:

Response

Returns an array of feedback objects, one for each subject in the request. The order in the response will match the order of of the request body.

Possible status codes for each subject:

  • 201: Subject created or updated
  • 400: Invalid body payload. Information will be at the message field
  • 409: Duplicate contact within the request body
  • 410: This subject (subjectId) has more than one contact in this request body
  • 500: Unknown error
status
enum<number>
required

HTTP status code indicating the result of the operation for this specific subject:

  • 201: Success — subject created or updated (the message distinguishes: "Subject created" vs updated)
  • 400: Invalid body payload. Information will be at the message field
  • 409: Duplicate contact within the request body
  • 410: Contact maps to a subject with inconsistent references (the same subject appears through more than one contact in this request)
  • 500: Unexpected processing error
Available options:
201,
400,
409,
410,
500
Example:

201

message
string
required

Success or error message

Example:

"Subject created"

user
SubjectIssuerEntity · object
required

User information. When the operation fails, only the identifying fields that were submitted (such as contact, internalId, and id) are echoed back.