List tables
curl --request GET \
--url https://origami.chat/api/v1/tables \
--header 'Authorization: Bearer <token>'import requests
url = "https://origami.chat/api/v1/tables"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://origami.chat/api/v1/tables', 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://origami.chat/api/v1/tables",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://origami.chat/api/v1/tables"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://origami.chat/api/v1/tables")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://origami.chat/api/v1/tables")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"tables": [
{
"id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"name": "Series A SaaS Companies",
"workspaceId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"workspaceName": "Outbound Q2",
"rowCount": 150,
"columns": [
{
"name": "Company Name",
"slug": "company-name",
"kind": "input"
},
{
"name": "Website",
"slug": "website",
"kind": "input"
},
{
"name": "CEO Email",
"slug": "ceo-email",
"kind": "enrichment",
"autoTrigger": true
},
{
"name": "Quality Score",
"slug": "quality-score",
"kind": "score"
}
],
"defaultFilters": [
{
"column": "website",
"operator": "is_not_empty",
"value": ""
}
],
"defaultSort": {
"column": "quality-score",
"direction": "desc"
},
"createdAt": "2025-06-01T12:00:00Z",
"updatedAt": "2025-06-15T09:30:00Z"
}
],
"total": 1,
"page": 0,
"pageSize": 50
}{
"error": "Invalid API key",
"code": "UNAUTHORIZED"
}{
"error": "Subscription required",
"code": "SUBSCRIPTION_REQUIRED",
"hint": "Upgrade to a Growth or Business plan to use this feature."
}{
"error": "Rate limit exceeded",
"code": "RATE_LIMITED"
}{
"error": "Internal server error",
"code": "INTERNAL_ERROR"
}Tables
List tables
deprecated
Returns the tables in the organization with column metadata. Tables that are not shown in the app are omitted, and total counts only the tables returned.
The API key scopes to the org; no workspace ID needed.
The typical workflow is: list tables → find the one you want by name → note its
input columns → use the tableId and column slugs in POST /tables/{tableId}/rows.
GET
/
tables
List tables
curl --request GET \
--url https://origami.chat/api/v1/tables \
--header 'Authorization: Bearer <token>'import requests
url = "https://origami.chat/api/v1/tables"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://origami.chat/api/v1/tables', 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://origami.chat/api/v1/tables",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://origami.chat/api/v1/tables"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://origami.chat/api/v1/tables")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://origami.chat/api/v1/tables")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"tables": [
{
"id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"name": "Series A SaaS Companies",
"workspaceId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"workspaceName": "Outbound Q2",
"rowCount": 150,
"columns": [
{
"name": "Company Name",
"slug": "company-name",
"kind": "input"
},
{
"name": "Website",
"slug": "website",
"kind": "input"
},
{
"name": "CEO Email",
"slug": "ceo-email",
"kind": "enrichment",
"autoTrigger": true
},
{
"name": "Quality Score",
"slug": "quality-score",
"kind": "score"
}
],
"defaultFilters": [
{
"column": "website",
"operator": "is_not_empty",
"value": ""
}
],
"defaultSort": {
"column": "quality-score",
"direction": "desc"
},
"createdAt": "2025-06-01T12:00:00Z",
"updatedAt": "2025-06-15T09:30:00Z"
}
],
"total": 1,
"page": 0,
"pageSize": 50
}{
"error": "Invalid API key",
"code": "UNAUTHORIZED"
}{
"error": "Subscription required",
"code": "SUBSCRIPTION_REQUIRED",
"hint": "Upgrade to a Growth or Business plan to use this feature."
}{
"error": "Rate limit exceeded",
"code": "RATE_LIMITED"
}{
"error": "Internal server error",
"code": "INTERNAL_ERROR"
}