Browse and Edit Keys
curl --request GET \
--url https://api.vertracloud.app/v1/databases/{id}/data/keysimport requests
url = "https://api.vertracloud.app/v1/databases/{id}/data/keys"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.vertracloud.app/v1/databases/{id}/data/keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.vertracloud.app/v1/databases/{id}/data/keys",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.vertracloud.app/v1/databases/{id}/data/keys"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.vertracloud.app/v1/databases/{id}/data/keys")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vertracloud.app/v1/databases/{id}/data/keys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"response": {
"keys": [
{}
],
"cursor": "<string>",
"scanned": 123
}
}Data
Browse and Edit Keys
Scans the keyspace, reads a key by type, writes a key, sets its TTL and deletes keys.
GET
/
v1
/
databases
/
{id}
/
data
/
keys
Browse and Edit Keys
curl --request GET \
--url https://api.vertracloud.app/v1/databases/{id}/data/keysimport requests
url = "https://api.vertracloud.app/v1/databases/{id}/data/keys"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.vertracloud.app/v1/databases/{id}/data/keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.vertracloud.app/v1/databases/{id}/data/keys",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.vertracloud.app/v1/databases/{id}/data/keys"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.vertracloud.app/v1/databases/{id}/data/keys")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vertracloud.app/v1/databases/{id}/data/keys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"response": {
"keys": [
{}
],
"cursor": "<string>",
"scanned": 123
}
}Every
/data endpoint needs the Intermediary plan or higher, on the database owner’s
account — not the caller’s. Below that the answer is PLAN_RESTRICTED_FEATURE (403).
It is also dashboard-session only: an API key gets API_KEY_SCOPE_DENIED (403) here, regardless of
its scopes.SCAN, typed reads, typed
writes, UNLINK, EXPIRE/PERSIST and INFO. KEYS, FLUSHALL, FLUSHDB, CONFIG, DEBUG,
SCRIPT and EVAL are not reachable through the API.
string
required
The ID of the database.
string
Glob for
SCAN MATCH. Defaults to *.string
Cursor from the previous page. Numeric; anything else is rejected.
number
Hint for the scan batch. Maximum 200.
string
Workspace the database belongs to.
SCAN, never KEYS — KEYS blocks the customer’s own Redis while it runs.
Response
object
Read one key
string
/v1/databases/{id}/data/keys/{key}{ key, type, ttl_seconds, value, truncated }, discriminated by type: string (string),
hash (object), list / set / stream (array of strings), zset (array of { member, score }).
The read stops at 1000 items or 1 MB, whichever comes first, and truncated is true when it
did. A truncated value is a partial read: writing it back replaces the key with only what you received.
Write, expire and delete
Mutations require owner or admin in the workspace and are recorded in the activity log.string
/v1/databases/{id}/data/keys/{key}{ key, type, value, ttl_seconds? }. The key in the URL is the one written — a different
key in the body is ignored. The write replaces the key rather than merging into it. Values are
capped at 1 MB. Streams are read-only.
string
/v1/databases/{id}/data/keys/{key}/expire{ ttl_seconds } — null means PERSIST.
string
/v1/databases/{id}/data/keys{ keys } — up to 200 keys, removed with UNLINK.
All three answer { "response": { "affected": <number> } }.