Skip to main content
POST
Create User

Headers

Idempotency-Key
string

Optional. A unique value you choose, such as a UUID, that makes retries safe. For 24 hours, a request with the same Idempotency-Key value and the same path parameters, query and body returns the original response instead of running again. Values are scoped to your API key and to this endpoint. A 409 means the first request with this value is still running (this clears within 5 minutes), or the value was already used for a different request. A 503 with Retry-After means nothing ran: retry with the same value after that many seconds.

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-11-02"

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:
represents
object[]

People this user can sign on behalf of (e.g. a parent signing for a child). Same fields and mandatory fields as identity, plus an optional internalId. At most 10 per user.

Entries are matched by docId: a matching entry is replaced, a new one is added, and entries not sent are kept. Name one on Create Request with users[].onBehalfOf.docId to fill the document's identity fields with that person's identity. The credential webhook returns it in onBehalfOf.

These identities only live within your organization, are not verified by Humanos, and never change the user's identity status.

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.