Move a key-value store that runs Redis to Valkey
const url = 'https://opfield.example.com/api/databases/managed/550e8400-e29b-41d4-a716-446655440000/move-to-valkey';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"acceptPendingStreamLoss":true}'};
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://opfield.example.com/api/databases/managed/550e8400-e29b-41d4-a716-446655440000/move-to-valkey \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "acceptPendingStreamLoss": true }'Copies every key of a running key-value store that still runs Redis into Valkey on the same node and switches the store to it. Writes pause while the keys are copied; reads keep working. The Redis data stays on the node until the key counts match, and the store goes back to Redis if anything fails. A store holding keys that cannot be copied (Bloom or cuckoo filters, time series, vector sets, search indexes) is refused before anything changes, with the store left as it was. A store with pending entries in stream consumer groups is refused unless the body has acceptPendingStreamLoss: true: the groups are moved, their pending entries are not. A store in an app environment that is isolated by the kill switch is refused (409 APP_ISOLATED); a store paused by an app shutdown is not running, so start the app first. Check the store first with GET on the same path.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Example
550e8400-e29b-41d4-a716-446655440000Request Body
Section titled “Request Body”Optional JSON request body
object
Examplegenerated
{ "acceptPendingStreamLoss": true}Responses
Section titled “Responses”Successful response
object
Resource object. Exact fields depend on the endpoint.
object
Example
{ "data": { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "Production Postgres", "type": "postgres", "healthStatus": "online" }}Bad request
object
Error code
Human-readable error message
Additional error details
Example
{ "code": "VALIDATION_ERROR", "message": "Request validation failed", "details": [ { "path": [ "name" ], "message": "Required" } ]}Authentication required
object
Error code
Human-readable error message
Additional error details
Example
{ "code": "UNAUTHORIZED", "message": "Authentication required"}Forbidden
object
Error code
Human-readable error message
Additional error details
Example
{ "code": "FORBIDDEN", "message": "Insufficient permissions"}Not found
object
Error code
Human-readable error message
Additional error details
Example
{ "code": "NOT_FOUND", "message": "Resource not found"}Conflict
object
Error code
Human-readable error message
Additional error details
Example
{ "code": "CONFLICT", "message": "Resource already exists"}Unprocessable entity
object
Error code
Human-readable error message
Additional error details
Example
{ "code": "UNPROCESSABLE_ENTITY", "message": "Request could not be processed"}Internal server error
object
Error code
Human-readable error message
Additional error details
Example
{ "code": "INTERNAL_ERROR", "message": "Internal server error"}