Skip to content

Publish one event to a project channel (fanout to current subscribers only).

POST
/v0/projects/{id}/realtime/publish
curl --request POST \
--url https://infra-hyphae.run/v0/projects/example/realtime/publish \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "channel": "example", "event": "example", "payload": "example" }'

Realtime is an ephemeral in-process fanout inside cloudd: not Native, not durable, not a WAL. A daemon restart drops subscribers and every buffered event. Channel names match ^[a-z0-9._-]{1,64}$; system is reserved for Cloud lifecycle events. Payload is at most 32 KiB as JSON. Session owner only.

id
required
string
/^prj_[0-9a-f]{16}$/
Media typeapplication/json
object
channel
required
string
/^[a-z0-9._-]{1,64}$/
event
required
string
/^[a-zA-Z0-9._:-]{1,64}$/
payload

Any JSON value

Examplegenerated
{
"channel": "example",
"event": "example",
"payload": "example"
}

Accepted for fanout; the event as delivered (id, ts assigned by the Cloud).

Media typeapplication/json
object
id
required

Per-process sequence; resets when cloudd restarts.

integer
channel
required
string
event
required
string
payload
required
ts
required

RFC 3339, UTC.

string format: date-time
Examplegenerated
{
"id": 1,
"channel": "example",
"event": "example",
"payload": "example",
"ts": "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"
}
}

Missing, malformed, duplicate, or unknown credential (authentication_required).

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"
}
}
WWW-Authenticate
string
Allowed value: Bearer realm="hyphae-cloud"

Unknown route, or a project the caller does not own (not_found).

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"
}
}