Browse and Edit Rows
curl --request GET \
--url https://api.vertracloud.app/v1/databases/{id}/data/tables/{table}/rowsimport requests
url = "https://api.vertracloud.app/v1/databases/{id}/data/tables/{table}/rows"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.vertracloud.app/v1/databases/{id}/data/tables/{table}/rows', 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/tables/{table}/rows",
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/tables/{table}/rows"
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/tables/{table}/rows")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vertracloud.app/v1/databases/{id}/data/tables/{table}/rows")
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": {
"columns": [
{}
],
"rows": [
{}
],
"total": 123,
"page": 123,
"per_page": 123
}
}Data
Browse and Edit Rows
Reads a page of rows from a table, and creates, updates or deletes rows by primary key.
GET
/
v1
/
databases
/
{id}
/
data
/
tables
/
{table}
/
rows
Browse and Edit Rows
curl --request GET \
--url https://api.vertracloud.app/v1/databases/{id}/data/tables/{table}/rowsimport requests
url = "https://api.vertracloud.app/v1/databases/{id}/data/tables/{table}/rows"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.vertracloud.app/v1/databases/{id}/data/tables/{table}/rows', 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/tables/{table}/rows",
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/tables/{table}/rows"
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/tables/{table}/rows")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vertracloud.app/v1/databases/{id}/data/tables/{table}/rows")
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": {
"columns": [
{}
],
"rows": [
{}
],
"total": 123,
"page": 123,
"per_page": 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.OBJECT_NOT_FOUND.
string
required
The ID of the database.
string
required
Table name, URL-encoded.
string
required
Schema the table belongs to.
number
1-based page. Defaults to
1.number
Rows per page. Maximum 200; above that the request is rejected with
400.string
Column to order by. Must exist in the table.
string
asc (default) or desc.string
Free text; used with
filter_field as a “contains” match.string
Column the
filter text applies to.string
JSON array of
{ column, op, value }, up to 20 entries. op is one of
=, !=, <, <=, >, >=, LIKE, IS NULL, IS NOT NULL — no raw SQL is accepted.string
Workspace the database belongs to.
Response
object
Create, update and delete
Mutations require owner or admin in the workspace (the database owner always qualifies) and are recorded in the database activity log — the operation and the table, never the content.string
/v1/databases/{id}/data/rows{ schema, table, values }.
string
/v1/databases/{id}/data/rows{ schema, table, primary_key, values }. The row is always identified by its complete
primary key ({ "id": 42 }, or composite { "tenant_id": 1, "user_id": 9 }) — never by its position
on the page. A request without a primary key is rejected.
string
/v1/databases/{id}/data/rows{ schema, table, primary_keys } — up to 200 keys.
All three answer { "response": { "affected": <number> } }. Request bodies are capped at 1 MB.