Skip to content

Create an account and return a session token.

POST
/v0/signup
curl --request POST \
--url https://infra-hyphae.run/v0/signup \
--header 'Content-Type: application/json' \
--data '{ "email": "example", "password": "example", "invite_code": "example" }'

Open by default. When the deployment is invite-gated (CLOUDD_SIGNUP_MODE=invite), invite_code is required: a missing or unknown code answers 403 authorization_denied with the same body either way and before any account lookup, so the response reveals nothing about the email. Codes are compared in constant time and are never stored, logged, or receipted.

Media typeapplication/json
object
email
required
string
<= 254 characters
password
required
string
>= 8 characters <= 1024 characters
invite_code

Required when the deployment is invite-gated (CLOUDD_SIGNUP_MODE=invite); ignored otherwise. Missing or unknown → 403 authorization_denied.

string
>= 8 characters <= 128 characters
Examplegenerated
{
"email": "example",
"password": "example",
"invite_code": "example"
}

Account created.

Media typeapplication/json
object
user_id
required
string
/^usr_[0-9a-f]{16}$/
token
required

Bearer for /v0/*. Stored server-side as a digest; no refresh.

string
/^hyc0_[0-9a-f]{64}$/
issued_at
required

RFC 3339, UTC.

string format: date-time
expires_at
required

RFC 3339, UTC.

string format: date-time
Examplegenerated
{
"user_id": "example",
"token": "example",
"issued_at": "2026-04-15T12:00:00Z",
"expires_at": "2026-04-15T12:00:00Z"
}

Malformed or out-of-bounds input (invalid_request).

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid_request authentication_required authorization_denied not_found conflict payload_too_large not_implemented tenant_not_running tenant_running function_runtime_missing function_timeout function_bad_output function_busy orchestrator_unavailable upstream_unavailable internal
message
required
string
Example
{
"error": {
"code": "invalid_request"
}
}

Valid credential for a different project than the one referenced, or an account signup without a valid invite code on an invite-gated deployment (authorization_denied).

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid_request authentication_required authorization_denied not_found conflict payload_too_large not_implemented tenant_not_running tenant_running function_runtime_missing function_timeout function_bad_output function_busy orchestrator_unavailable upstream_unavailable internal
message
required
string
Example
{
"error": {
"code": "invalid_request"
}
}

Uniqueness violated (conflict).

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid_request authentication_required authorization_denied not_found conflict payload_too_large not_implemented tenant_not_running tenant_running function_runtime_missing function_timeout function_bad_output function_busy orchestrator_unavailable upstream_unavailable internal
message
required
string
Example
{
"error": {
"code": "invalid_request"
}
}

Body exceeds the surface’s limit (payload_too_large).

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid_request authentication_required authorization_denied not_found conflict payload_too_large not_implemented tenant_not_running tenant_running function_runtime_missing function_timeout function_bad_output function_busy orchestrator_unavailable upstream_unavailable internal
message
required
string
Example
{
"error": {
"code": "invalid_request"
}
}