Send a signup invitation
POST
/admin/v1/flows:createSignup
Create a signup flow.
This invites a person to join the app.
body parameters
The email address of the person to invite.
The display name of the person to invite.
createOrganization
boolean
Whether to create an organization as part of the signup flow.
The identifier of the user sending the invite.
The time the flow will expire.
This field is not allowed if ttl
is specified.
The amount of time a flow will be available (e.g. 86400s
).
This must be a string with the number of seconds followed by a trailing s
.
This field is not allowed if expireTime
is specified.
Returns
The system-assigned identifier of the flow.
The current state of the flow.
Possible values:START_PENDING
STARTED
COMPLETED
CANCELED
EXPIRED
The code that best describes the reason for the state.
Possible values:JOIN_ORGANIZATION
SIGNUP
organization
Organization
BASICThe target organization for the flow.
The system-assigned identifier of the organization.
The current state of the organization.
Possible values:ACTIVE
DISABLED
ARCHIVED
PENDING_DELETION
The code that best describes the reason for the state.
The client defined unique identifier of the organization account.
The human-readable display name of the organization.
The email address of the organization.
Whether the organization's email address has been verified.
The E164 phone number for the organization (e.g. +12125550123
).
phoneNumberVerified
boolean
Whether the organization's phone number has been verified.
The photo/avatar URL of the organization.
The default ISO-4217 currency code for the organization (e.g. USD
).
The IETF BCP-47 language code for the organization (e.g. en
).
The country/region code for the organization (e.g. US
).
The IANA time zone for the organization (e.g. America/New_York
).
The default address for the organization.
The city, district, suburb, town, or village.
The state, country, province, or region.
The 2-letter country code.
The sign-up time for the organization.
The number of members in the organization.
This includes disabled users, but does not include user's marked for deletion.
Whether the organization is disabled.
Possible values:BASIC
FULL
The creation time of the organization.
The last update time of the organization.
The target user for the flow.
The system-assigned identifier of the user.
The current state of the user.
Possible values:ACTIVE
DISABLED
ARCHIVED
PENDING_DELETION
The code that best describes the reason for the state.
The client defined unique identifier of the user account.
The human-readable display name of the user.
The email address of the user.
Whether the user's email address has been verified.
The E164 phone number for the user (e.g. +12125550123
).
phoneNumberVerified
boolean
Whether the user's phone number has been verified.
The photo/avatar URL of the user.
The default ISO-4217 currency code for the user (e.g. USD
).
The IETF BCP-47 language code for the user (e.g. en
).
The country/region code for the user (e.g. US
).
The IANA time zone for the user (e.g. America/New_York
).
The default address for the user.
The city, district, suburb, town, or village.
The state, country, province, or region.
The 2-letter country code.
The sign-up time for the user.
Whether the user is disabled.
Possible values:BASIC
FULL
The creation time of the user.
The last update time of the user.
The user who created the flow.
This will not be set if the invitation was created by an admin.
The system-assigned identifier of the user.
The current state of the user.
Possible values:ACTIVE
DISABLED
ARCHIVED
PENDING_DELETION
The code that best describes the reason for the state.
The client defined unique identifier of the user account.
The human-readable display name of the user.
The email address of the user.
Whether the user's email address has been verified.
The E164 phone number for the user (e.g. +12125550123
).
phoneNumberVerified
boolean
Whether the user's phone number has been verified.
The photo/avatar URL of the user.
The default ISO-4217 currency code for the user (e.g. USD
).
The IETF BCP-47 language code for the user (e.g. en
).
The country/region code for the user (e.g. US
).
The IANA time zone for the user (e.g. America/New_York
).
The default address for the user.
The city, district, suburb, town, or village.
The state, country, province, or region.
The 2-letter country code.
The sign-up time for the user.
Whether the user is disabled.
Possible values:BASIC
FULL
The creation time of the user.
The last update time of the user.
The start time of the flow.
The time the flow will expire.
The expire duration of the flow.
The flow secret.
This is only populated on create.
joinOrganization
JoinOrganizationFlow
The join organization flow type specific data.
The display name of the invitee.
The email address of the invitee.
The role to be assigned to the invitee.
The system-assigned identifier of the role.
The client defined unique identifier of the role.
It is restricted to letters, numbers, underscores, and hyphens, with the first character a letter or a number, and a 255 character maximum.
ID's starting with role_
are reserved.
The human-readable display name of the role.
Possible values:OWNER
MEMBER
GUEST
The description of the role.
The maximum length is 1000 characters.
The policy that defines how a member is assigned a seat.
Possible values:DEFAULT
MANUAL
The additional permissions allowed by the role.
Whether the role is the default for the tenant.
The archived status of the role.
Possible values:BASIC
FULL
The creation time of the role.
The last update time of the role.
The signup flow type specific data
The email address of the invitee.
The display name of the invitee.
createOrganization
boolean
Whether to create an organization as part of the signup flow.
Possible values:BASIC
FULL
The creation time of the flow.
The last update time of the flow.
The general error code (e.g. INVALID_ARGUMENT
).
Possible values:OK
CANCELLED
UNKNOWN
INVALID_ARGUMENT
DEADLINE_EXCEEDED
NOT_FOUND
ALREADY_EXISTS
PERMISSION_DENIED
UNAUTHENTICATED
RESOURCE_EXHAUSTED
FAILED_PRECONDITION
ABORTED
OUT_OF_RANGE
UNIMPLEMENTED
INTERNAL
UNAVAILABLE
DATA_LOSS
A developer-facing error message.
A reason code for the error (e.g. USER_PENDING_DELETION
).
The parameter path related to the error (e.g. member.userId
).
Additional metadata related to the error.
A user-facing error message.
curl https://api.userhub.com/admin/v1/flows:createSignup \
-H "Authorization: Bearer $USERHUB_ADMIN_KEY" \
--json '{
"email": "[email protected]"
}'
res, err := adminApi.Flows().CreateSignup(
context.Background(),
&adminapi.FlowCreateSignupInput{
Email: "[email protected]",
},
)
Response bodyJSON
{
"id": "flow_2VSCZXUfZVeRY3",
"state": "START_PENDING",
"type": "SIGNUP",
"expireTime": "2025-06-15T13:00:00Z",
"secret": "3fnpb3kr3q4ymtmD5Hnmh19GuD1uDzXdZeRZ3R",
"signup": {
"email": "[email protected]"
},
"view": "FULL",
"createTime": "2025-05-15T13:00:00Z",
"updateTime": "2025-05-15T13:00:00Z"
}