Create an account and return a session token.
const url = 'https://infra-hyphae.run/v0/signup';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"email":"example","password":"example","invite_code":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Required when the deployment is invite-gated (CLOUDD_SIGNUP_MODE=invite); ignored otherwise. Missing or unknown → 403 authorization_denied.
Examplegenerated
{ "email": "example", "password": "example", "invite_code": "example"}Responses
Section titled “ Responses ”Account created.
object
Bearer for /v0/*. Stored server-side as a digest; no refresh.
RFC 3339, UTC.
RFC 3339, UTC.
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).
object
object
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).
object
object
Example
{ "error": { "code": "invalid_request" }}Uniqueness violated (conflict).
object
object
Example
{ "error": { "code": "invalid_request" }}Body exceeds the surface’s limit (payload_too_large).
object
object
Example
{ "error": { "code": "invalid_request" }}