curl --request POST \
--url https://api.getoneprofile.ai/tables/{table_id}/export/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"column_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"record_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"sorts": [
{
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"direction": "asc"
}
],
"where": {
"items": [
{
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "condition",
"value": "<string>"
}
],
"joiner": "and"
}
}
'import requests
url = "https://api.getoneprofile.ai/tables/{table_id}/export/"
payload = {
"column_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"record_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"sorts": [
{
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"direction": "asc"
}
],
"where": {
"items": [
{
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "condition",
"value": "<string>"
}
],
"joiner": "and"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
column_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
record_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
sorts: [{column_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a', direction: 'asc'}],
where: {
items: [
{
column_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
type: 'condition',
value: '<string>'
}
],
joiner: 'and'
}
})
};
fetch('https://api.getoneprofile.ai/tables/{table_id}/export/', 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.getoneprofile.ai/tables/{table_id}/export/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'column_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'record_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'sorts' => [
[
'column_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'direction' => 'asc'
]
],
'where' => [
'items' => [
[
'column_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'type' => 'condition',
'value' => '<string>'
]
],
'joiner' => 'and'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.getoneprofile.ai/tables/{table_id}/export/"
payload := strings.NewReader("{\n \"column_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"sorts\": [\n {\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"direction\": \"asc\"\n }\n ],\n \"where\": {\n \"items\": [\n {\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"type\": \"condition\",\n \"value\": \"<string>\"\n }\n ],\n \"joiner\": \"and\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.getoneprofile.ai/tables/{table_id}/export/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"column_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"sorts\": [\n {\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"direction\": \"asc\"\n }\n ],\n \"where\": {\n \"items\": [\n {\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"type\": \"condition\",\n \"value\": \"<string>\"\n }\n ],\n \"joiner\": \"and\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/tables/{table_id}/export/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"column_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"sorts\": [\n {\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"direction\": \"asc\"\n }\n ],\n \"where\": {\n \"items\": [\n {\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"type\": \"condition\",\n \"value\": \"<string>\"\n }\n ],\n \"joiner\": \"and\"\n }\n}"
response = http.request(request)
puts response.read_body{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Export table rows as CSV
Stream a table’s rows as a CSV download. Two scopes: send sorts/where/column_ids to export what the grid is currently showing, or record_ids to export a specific row selection. The two are mutually exclusive.
Values are written RAW rather than as the grid renders them — timestamps in ISO 8601, lists and objects as JSON — so the file round-trips back through an import. Free-text cells are neutralised against spreadsheet formula injection; numbers are not, so they stay summable.
Streams synchronously in keyset pages, so a large export starts downloading immediately rather than waiting for the whole table to be read.
curl --request POST \
--url https://api.getoneprofile.ai/tables/{table_id}/export/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"column_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"record_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"sorts": [
{
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"direction": "asc"
}
],
"where": {
"items": [
{
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "condition",
"value": "<string>"
}
],
"joiner": "and"
}
}
'import requests
url = "https://api.getoneprofile.ai/tables/{table_id}/export/"
payload = {
"column_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"record_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"sorts": [
{
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"direction": "asc"
}
],
"where": {
"items": [
{
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "condition",
"value": "<string>"
}
],
"joiner": "and"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
column_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
record_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
sorts: [{column_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a', direction: 'asc'}],
where: {
items: [
{
column_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
type: 'condition',
value: '<string>'
}
],
joiner: 'and'
}
})
};
fetch('https://api.getoneprofile.ai/tables/{table_id}/export/', 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.getoneprofile.ai/tables/{table_id}/export/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'column_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'record_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'sorts' => [
[
'column_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'direction' => 'asc'
]
],
'where' => [
'items' => [
[
'column_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'type' => 'condition',
'value' => '<string>'
]
],
'joiner' => 'and'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.getoneprofile.ai/tables/{table_id}/export/"
payload := strings.NewReader("{\n \"column_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"sorts\": [\n {\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"direction\": \"asc\"\n }\n ],\n \"where\": {\n \"items\": [\n {\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"type\": \"condition\",\n \"value\": \"<string>\"\n }\n ],\n \"joiner\": \"and\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.getoneprofile.ai/tables/{table_id}/export/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"column_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"sorts\": [\n {\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"direction\": \"asc\"\n }\n ],\n \"where\": {\n \"items\": [\n {\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"type\": \"condition\",\n \"value\": \"<string>\"\n }\n ],\n \"joiner\": \"and\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/tables/{table_id}/export/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"column_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"sorts\": [\n {\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"direction\": \"asc\"\n }\n ],\n \"where\": {\n \"items\": [\n {\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"type\": \"condition\",\n \"value\": \"<string>\"\n }\n ],\n \"joiner\": \"and\"\n }\n}"
response = http.request(request)
puts response.read_body{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
Request body for a table CSV export.
Two scopes, one body. Send sorts/where to export what the grid is
currently showing — the same vocabulary the rows query accepts, so a
filtered view exports exactly the rows the user can see. Send record_ids
to export a specific selection instead. The two are mutually exclusive: an
enumerated selection has already answered the question a filter asks.
column_ids is the projection, in display order, so hiding or reordering
a column in the grid is reflected in the file.
Export these columns, in this order. Omit for every column, in the table's own column order.
500Export exactly these rows, in display order. Mutually exclusive with sorts and where.
1000Order rows by these columns instead of the display order.
3Show child attributes
Show child attributes
Export only rows satisfying this predicate tree.
Show child attributes
Show child attributes
Response
The table as a CSV file.
Was this page helpful?