Managed services API

These routes let you inspect the Valkey catalog and operate an existing managed project. Creation still uses the public project route with config.type_project: "valkey", config.profile, and the matching plan.

Authentication and permissions

Send session authentication or the project API Key together with the organization context:

Authorization: Bearer <token>
x-organization-id: <organization-id>

For automation, use an organization API key through the authentication mechanism configured for your profile instead of a bearer token. The public catalog does not require these headers.

The organization header selects the billing and authorization context when a user belongs to more than one organization. Keep the API key in a secret manager, never in a versioned file. For reads, treat 404 as an inaccessible or missing project without guessing IDs. For rotation, show the response only to the authorized operator, update the application secret, and discard the password from memory as soon as clients restart.

Project operations require the matching permissions for the managed_service resource:

OperationPermission
Read statusmanaged_service.status.read
Read masked connectionmanaged_service.connection.read
Rotate credentialmanaged_service.credentials.rotate

Catalog

GET /v1/managed-services/catalog

Authentication is not required. The catalog reports the Valkey version, currency, profiles, plans, hourly/monthly/yearly prices, benefits, included storage, and public high-availability availability.

{
  "status": "success",
  "data": {
    "engine": "valkey",
    "version": "9.1.1",
    "currency": "brl",
    "profiles": [
      { "id": "key_value", "persistence": true },
      { "id": "cache", "persistence": false },
      { "id": "queue", "persistence": true }
    ],
    "plans": [
      {
        "id": "queue-basic",
        "profile": "queue",
        "prices": { "hourly": 13, "monthly": 7490, "yearly": 74900 },
        "features": ["1 GB memory", "1 vCPU", "High availability"],
        "included_storage_gb": 5,
        "high_availability": true
      }
    ]
  }
}

Values are BRL cents. Read the catalog at execution time; do not hardcode prices in automations.

Read status

GET /v1/managed-services/:id/status

Reduced response:

{
  "status": "success",
  "data": {
    "id": "<project-id>",
    "status": "running",
    "engine": "valkey",
    "profile": "queue",
    "version": "9.1.1",
    "persistence": true,
    "instances": 3
  }
}

Read the connection

GET /v1/managed-services/:id/connection

The password cannot be recovered through this route:

{
  "status": "success",
  "data": {
    "host": "valkey-<project-id>.managed.zenifra.com",
    "port": 30000,
    "username": "default",
    "tls": true,
    "connection_string": "valkeys://default:********@valkey-<project-id>.managed.zenifra.com:30000/0"
  }
}

Rotate the credential

PATCH /v1/managed-services/:id/credentials

The response contains the new password once. Update the application secret before discarding it:

{
  "status": "success",
  "data": {
    "username": "default",
    "host": "valkey-<project-id>.managed.zenifra.com",
    "port": 30000,
    "tls": true,
    "connection_string": "valkeys://default:<new-password>@valkey-<project-id>.managed.zenifra.com:30000/0"
  }
}

Common errors

CodeSituation
400Invalid ID or parameters
401Missing or invalid session/API Key
403Insufficient organization permission
404Managed project not found
502Credential rotation failed
503Commercial catalog temporarily unavailable

Next steps

On this page