Skip to content

Take a verified Native backup of the sleeping tenant.

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

Runs hyphae status --data-dir (lineage) then hyphae backup create --data-dir … --out <new dir> on the tenant’s directory. Native creates and independently verifies the backup; every identifier in the response (lineage.*, backup.checkpoint_digest, backup.visible_csn, …) is copied from the engine’s output. The Cloud adds an id, a label, timestamps, and paths, and computes no digest of its own. Requires the directory lock, so the tenant must be asleep (409 tenant_running otherwise); a tenant that has never started has no directory (409 tenant_not_running).

id
required
string
/^prj_[0-9a-f]{16}$/
Media typeapplication/json
object
label
string | null
<= 64 characters
Examplegenerated
{
"label": "example"
}

Snapshot created and verified by Native.

Media typeapplication/json
object
id
required
string
/^snap_[0-9a-f]{16}$/
project
required
string
/^prj_[0-9a-f]{16}$/
label
string | null
created_at
required

RFC 3339, UTC.

string format: date-time
engine_version
required
string
Allowed value: 3.0.0
source_data_dir
required
string
backup_dir
required

Native backup directory (NATIVE_BACKUP.json + data/), under the snapshot root.

string
lineage
required

The snapshot object printed by hyphae status --data-dir. Field names are Native’s.

object
catalog_version
required
integer
directory_lineage
required
string
logical_time_micros
required
integer
root_digest
required
string
visible_csn
required
integer
backup
required

Output of hyphae backup create / backup verify. Field names are Native’s.

object
backup_path
required
string
checkpoint_digest
required
string
file_count
required
integer
total_bytes
required
integer
status
required
string
Allowed values: created verified
visible_csn
required
integer
Example
{
"engine_version": "3.0.0",
"backup": {
"status": "created"
}
}

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

The operation needs Native’s directory lock and the engine is running; sleep the tenant first (tenant_running).

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

The engine failed to start or did not answer (upstream_unavailable).

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

The host cannot run tenants right now — engine binary missing, wrong pin, or ports exhausted (orchestrator_unavailable).

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