curl --request POST \
--url https://api.getoneprofile.ai/tables/{table_id}/cells/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"value": "<string>"
}
'import requests
url = "https://api.getoneprofile.ai/tables/{table_id}/cells/"
payload = {
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"value": "<string>"
}
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({
column_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
record_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
value: '<string>'
})
};
fetch('https://api.getoneprofile.ai/tables/{table_id}/cells/', 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}/cells/",
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_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'record_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'value' => '<string>'
]),
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}/cells/"
payload := strings.NewReader("{\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"value\": \"<string>\"\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}/cells/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"value\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/tables/{table_id}/cells/")
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 \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"value\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"cells": {},
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"stale_column_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"recomputed_column_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Set a table cell value
Edit one manual cell (read-your-writes: the response carries the post-write row state and version). When the edit marks formula dependents stale, a small scope is recomputed INLINE inside this request: those columns are listed in recomputed_column_ids and their final values are already in cells, with no run requested. A larger scope instead requests a cell-edited recompute run that appears on the next active-runs poll; the response never carries a run ID. A same-value edit writes nothing, recomputes nothing, and requests no run.
A Select or Multi-select cell takes only the column’s own options (its type_options.choices): a value is matched to one ignoring case and spacing and stored as the option is spelled, and anything else is refused with a 422 cell_value_not_a_choice that lists the options.
curl --request POST \
--url https://api.getoneprofile.ai/tables/{table_id}/cells/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"value": "<string>"
}
'import requests
url = "https://api.getoneprofile.ai/tables/{table_id}/cells/"
payload = {
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"value": "<string>"
}
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({
column_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
record_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
value: '<string>'
})
};
fetch('https://api.getoneprofile.ai/tables/{table_id}/cells/', 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}/cells/",
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_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'record_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'value' => '<string>'
]),
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}/cells/"
payload := strings.NewReader("{\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"value\": \"<string>\"\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}/cells/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"value\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/tables/{table_id}/cells/")
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 \"column_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"record_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"value\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"cells": {},
"column_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"stale_column_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"recomputed_column_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}{
"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
Request body for editing one manual cell.
The new cell value; coerced to the column's data type. A Decimal or Currency value is rounded to the column's decimal places, half away from zero: 2.005 at 2 places is stored as 2.01.
Response
Successful Response
Read-your-writes result of a cell mutation. Never carries a run ID.
When recomputed_column_ids is non-empty the downstream formula values
are already final in cells; otherwise the recompute run appears on the
next active-runs poll. stale_column_ids is empty on a same-value edit,
which writes nothing. Each returned cell carries its own version, which is
what the client gates its cache on.
Show child attributes
Show child attributes
Transitive formula dependents now marked stale; empty on a same-value edit.
Formula columns recomputed INLINE within this request. Their values in cells are final and no background run was requested. Empty when a run was queued instead, in which case those cells arrive later.
Was this page helpful?