curl --request POST \
--url https://api.getoneprofile.ai/tables/{table_id}/runs/preview/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"all": false,
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"column_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"limit": 5000,
"offset": 500000,
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"scope": "all",
"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}/runs/preview/"
payload = {
"all": False,
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"column_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"limit": 5000,
"offset": 500000,
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"scope": "all",
"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 = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
all: false,
column_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
column_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
limit: 5000,
offset: 500000,
record_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
record_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
scope: 'all',
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}/runs/preview/', 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}/runs/preview/",
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([
'all' => false,
'column_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'column_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'limit' => 5000,
'offset' => 500000,
'record_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'record_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'scope' => 'all',
'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 => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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}/runs/preview/"
payload := strings.NewReader("{\n \"all\": false,\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"column_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"limit\": 5000,\n \"offset\": 500000,\n \"record_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"scope\": \"all\",\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("X-API-Key", "<api-key>")
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}/runs/preview/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"all\": false,\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"column_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"limit\": 5000,\n \"offset\": 500000,\n \"record_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"scope\": \"all\",\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}/runs/preview/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"all\": false,\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"column_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"limit\": 5000,\n \"offset\": 500000,\n \"record_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"scope\": \"all\",\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{
"balance_sufficient": true,
"cells_total": 123,
"estimated_credits": 123,
"is_estimate": true,
"unit_price": 123,
"units": 123,
"columns": [
{
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"credits_at_most": 123,
"credits_usually": 123,
"display_name": "<string>"
}
],
"expected_credits": 0,
"export_writes": [
{
"action": "<string>",
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"display_name": "<string>",
"integration_type": "<string>",
"record_type": "<string>",
"rows": 123
}
],
"requires_confirmation": false,
"rows_held_back": 0,
"rows_in_scope": 0,
"scope_too_large": false
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Preview a table run
What a run would cover and cost, without running it. Takes the same body as starting the run, so the price quoted is the price of the run asked for. Free runs cost nothing and are always covered. A view too wide to run answers scope_too_large with its row count rather than an error. A failed_cells run is priced column by column: preview each column with kind column and scope errored.
curl --request POST \
--url https://api.getoneprofile.ai/tables/{table_id}/runs/preview/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"all": false,
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"column_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"limit": 5000,
"offset": 500000,
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"scope": "all",
"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}/runs/preview/"
payload = {
"all": False,
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"column_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"limit": 5000,
"offset": 500000,
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"scope": "all",
"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 = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
all: false,
column_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
column_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
limit: 5000,
offset: 500000,
record_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
record_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
scope: 'all',
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}/runs/preview/', 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}/runs/preview/",
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([
'all' => false,
'column_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'column_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'limit' => 5000,
'offset' => 500000,
'record_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'record_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'scope' => 'all',
'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 => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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}/runs/preview/"
payload := strings.NewReader("{\n \"all\": false,\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"column_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"limit\": 5000,\n \"offset\": 500000,\n \"record_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"scope\": \"all\",\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("X-API-Key", "<api-key>")
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}/runs/preview/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"all\": false,\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"column_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"limit\": 5000,\n \"offset\": 500000,\n \"record_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"scope\": \"all\",\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}/runs/preview/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"all\": false,\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"column_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"limit\": 5000,\n \"offset\": 500000,\n \"record_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"scope\": \"all\",\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{
"balance_sufficient": true,
"cells_total": 123,
"estimated_credits": 123,
"is_estimate": true,
"unit_price": 123,
"units": 123,
"columns": [
{
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"credits_at_most": 123,
"credits_usually": 123,
"display_name": "<string>"
}
],
"expected_credits": 0,
"export_writes": [
{
"action": "<string>",
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"display_name": "<string>",
"integration_type": "<string>",
"record_type": "<string>",
"rows": 123
}
],
"requires_confirmation": false,
"rows_held_back": 0,
"rows_in_scope": 0,
"scope_too_large": false
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Path Parameters
Body
What to run: a column, several columns over rows, rows, or every failed cell.
One body for the run and its preview, so the price quoted is the price of
the run asked for. kind says which of the fields apply.
What the run covers. column: one computed column (column_id) over a scope. columns: several columns (column_ids) over chosen rows (record_ids), as one run in dependency order, which is what a swept selection in the grid becomes. rows: chosen rows (record_ids), or every row the view matches (all), across every computed column. failed_cells: only the cells that failed, in every computed column; it takes no other field.
column, columns, rows, failed_cells kind=rows: run every row the view matches (where, row_status) instead of record_ids. At most view_scope_max_rows rows may match; a wider view is refused with scope_too_large.
kind=column: the column to run.
kind=columns: the computed columns to run, in any order. A column another one here feeds is planned once, after its input, so no column reads a value a sibling is still computing.
1 - 100 elementskind=column, scope=first_n: how many rows (default 10).
1 <= x <= 10000kind=column, scope=first_n: the row to start from, in display order; omit to start at the first row.
0 <= x <= 1000000kind=column, scope=cell: the target row; see also record_ids.
The target rows. kind=column with scope=cell (wins over record_id); kind=columns, shared by every column named; kind=rows, the rows to run instead of all. Duplicates are dropped and the order is kept.
1000The grid's active smart view (errored or fully computed rows), ANDed with where. kind=column, or kind=rows with all.
errored, fully_computed kind=column: all | errored | unfilled | first_n | cell. all, errored and first_n share the column's own run: a broader run replaces a narrower one still going, and cells already computed under the same definition are skipped. cell runs are independent of each other.
all, errored, unfilled, first_n, cell kind=column: the grid's active sort, so first_n means the first N rows the person can SEE rather than the first N in stored order. Ignored by every other scope.
8Show child attributes
Show child attributes
The grid's active filter, in the rows query's own vocabulary. kind=column: narrows every scope but cell to the matching rows (all runs every matching row, errored / unfilled keep only matching rows, first_n counts within them). kind=rows with all: the rows to run.
Show child attributes
Show child attributes
Response
Successful Response
What a run would cover and cost, before it is asked for.
Priced by the same plan the run is minted from. Free runs (formula/manual columns) cost nothing and are always sufficient, even at a zero balance. Row counts and cell freshness can still shift between the preview and the run.
Whether the organization's available credits cover the estimate.
All cells the run would compute over the rows that run, charged or not.
The most the run can cost, in credits: every row of every paid column charged its full per-row price. What the credit hold and the confirmation gate reason about.
Always true: freshness and row counts can shift by run time.
Blended credits per charged cell (total estimate / units); 0 for free runs.
Cells that would incur a charge (0 for free runs).
Every enrichment or export column the run would work on, in the order it runs: the column asked for first, then the columns that read it. Each with the most its part can cost and what it usually costs.
Show child attributes
Show child attributes
What a run like this usually costs, in credits: a column charged by use (an AI column) at the share of its per-row maximum the same kind of cell has actually been charged (a typical share while there is no history yet), every other column at its price. Quote both: up to estimated_credits, usually about expected_credits. Equal to estimated_credits for a flat price (no column charged by use, as in a run of enrichments): then quote that one figure, without up to.
Export columns this run would fire. Present so the confirmation can name the destination, the object and the action instead of only a row count. Empty for a run that writes nothing outside this table.
Show child attributes
Show child attributes
True when the estimate crosses the confirmation threshold: ask before spending instead of running on first click.
Rows in scope the column's run condition would hold back. The run skips them and charges nothing for them, so they are already subtracted from rows_in_scope and from the price.
Rows the run would compute. This is what a scope choice is about, and what the credit estimate is derived from; cells_total also counts the dependent columns the run would recompute.
True when the filtered view names more rows than a run may be scoped to (view_scope_max_rows). rows_in_scope still carries the matching count; the run itself would be refused with scope_too_large. Narrow the filter, or run the whole table.
Was this page helpful?