Skip to main content
Pools

Upsert Pool

Create or replace a node pool's configuration.

Omitted fields take their defaults. Unknown fields are rejected.

PUT https://rivet.example.com/pools/{pool}

Examples

Authentication

Send your namespace token as a bearer token in the Authorization header. Every control plane request also requires the namespace query parameter. See Authentication.

Path Parameters

NameTypeRequiredDescription
poolstringYesName of the node pool. A DNS label of 1 to 63 lowercase letters, digits and hyphens.

Query Parameters

NameTypeRequiredDescription
namespacestringNoName of the namespace to operate in.

Request Body

Content type: application/json.

FieldTypeRequiredDescription
drain_on_version_upgradebooleanNoDrain nodes running an older version when a newer version connects.
actor_eviction_delayintegerNoSeconds to wait before evicting actors from a draining node.
actor_eviction_periodintegerNoSeconds over which actors are evicted from a draining node.
actor_eviction_ratenumberNoRate at which actors are evicted from a draining node. Must be finite and greater than 0.
metadataanyNoOpaque JSON stored with the pool, at most 16 KiB when serialized.

Responses

200

The stored node pool.

FieldTypeDescription
poolobject
pool.namestringName of the node pool.
pool.drain_on_version_upgradebooleanDrain nodes running an older version when a newer version connects.
pool.actor_eviction_delayintegerSeconds to wait before evicting actors from a draining node.
pool.actor_eviction_periodintegerSeconds over which actors are evicted from a draining node.
pool.actor_eviction_ratenumberRate at which actors are evicted from a draining node. Must be finite and greater than 0.
pool.metadataanyOpaque JSON stored with the pool, or null when unset.
{
  "pool": {
    "name": "default",
    "drain_on_version_upgrade": false,
    "actor_eviction_delay": 0,
    "actor_eviction_period": 0,
    "actor_eviction_rate": 0,
    "metadata": null
  }
}

400

pool.invalid: the body has an unknown field or a value out of range. pool.serverless_unsupported: the body sets serverless or kind: "serverless". envoy.invalid_pool_name: the pool name is not valid. envoy.invalid_namespace_name: the namespace value is not a DNS label of 1 to 63 lowercase letters, digits and hyphens. A body that is not valid JSON is rejected with a plain-text 400.

FieldTypeDescription
groupstringError group, for example actor.
codestringError code within the group, for example not_found.
messagestringHuman-readable error message.
metadataanyExtra details. Only present on some errors raised while authenticating or authorizing the request.
{
  "group": "pool",
  "code": "invalid",
  "message": "Node pool configuration is invalid."
}

401

auth.invalid_token: the request carries no token, or the token is not valid. auth.token_expired: the token has expired.

FieldTypeDescription
groupstringError group, for example actor.
codestringError code within the group, for example not_found.
messagestringHuman-readable error message.
metadataanyExtra details. Only present on some errors raised while authenticating or authorizing the request.
{
  "group": "auth",
  "code": "invalid_token",
  "message": "Authentication token is invalid."
}

403

auth.insufficient_permissions: the token’s grants do not cover this request.

FieldTypeDescription
groupstringError group, for example actor.
codestringError code within the group, for example not_found.
messagestringHuman-readable error message.
metadataanyExtra details. Only present on some errors raised while authenticating or authorizing the request.
{
  "group": "auth",
  "code": "insufficient_permissions",
  "message": "Insufficient permissions to access this resource."
}

404

namespace.not_found: the namespace does not exist.

FieldTypeDescription
groupstringError group, for example actor.
codestringError code within the group, for example not_found.
messagestringHuman-readable error message.
metadataanyExtra details. Only present on some errors raised while authenticating or authorizing the request.
{
  "group": "namespace",
  "code": "not_found",
  "message": "The namespace does not exist."
}

415

The request is missing the Content-Type: application/json header. Returned as plain text.

Content type: text/plain.

500

core.internal_error: an unexpected failure. Details are only logged on the server.

FieldTypeDescription
groupstringError group, for example actor.
codestringError code within the group, for example not_found.
messagestringHuman-readable error message.
metadataanyExtra details. Only present on some errors raised while authenticating or authorizing the request.
{
  "group": "core",
  "code": "internal_error",
  "message": "An internal error occurred"
}

503

auth.verification_unavailable: token verification keys are temporarily unavailable. Retry the request.

FieldTypeDescription
groupstringError group, for example actor.
codestringError code within the group, for example not_found.
messagestringHuman-readable error message.
metadataanyExtra details. Only present on some errors raised while authenticating or authorizing the request.
{
  "group": "auth",
  "code": "verification_unavailable",
  "message": "The server could not verify the authentication token because verification keys are temporarily unavailable. Retry the request."
}
Edit this page Last updated November 10, 2026