curl --request GET \
--url https://api.getoneprofile.ai/tables/{table_id}/rows/{record_id}/cells/{column_id}/run-detail/ \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.getoneprofile.ai/tables/{table_id}/rows/{record_id}/cells/{column_id}/run-detail/"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.getoneprofile.ai/tables/{table_id}/rows/{record_id}/cells/{column_id}/run-detail/', 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}/rows/{record_id}/cells/{column_id}/run-detail/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.getoneprofile.ai/tables/{table_id}/rows/{record_id}/cells/{column_id}/run-detail/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.getoneprofile.ai/tables/{table_id}/rows/{record_id}/cells/{column_id}/run-detail/")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/tables/{table_id}/rows/{record_id}/cells/{column_id}/run-detail/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"action_key": "<string>",
"business_context_empty": true,
"cached_tokens": 123,
"completion_tokens": 123,
"confidence": "high",
"created_at": "2023-11-07T05:31:56Z",
"credits_breakdown": {},
"credits_charged": 123,
"credits_max": 123,
"details_pruned": true,
"duration_ms": 123,
"error": "<string>",
"error_class": "timeout",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"model_key": "<string>",
"outcome": "succeeded",
"prompt_text": "<string>",
"prompt_tokens": 123,
"raw_response": {},
"reasoning": "<string>",
"reasoning_tokens": 123,
"run_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_attempts": [
{
"attempt_index": 123,
"credits_charged": 123,
"error": "<string>",
"error_class": "timeout",
"outcome": "succeeded",
"served_from_cache": false,
"skipped_reason": "<string>"
}
],
"sources": [
{
"fetched_at": "2023-11-07T05:31:56Z",
"title": "<string>",
"url": "<string>"
}
],
"steps": [
{
"action": "search",
"detail": "<string>",
"duration_ms": 123,
"observation": "<string>",
"outcome": "completed",
"thought": "<string>"
}
],
"total_tokens": 123,
"web_read_credits": 123
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Get a cell's enrichment run detail
The cell’s most recent enrichment execution: the resolved prompt, action and model, outcome, duration, and the agent’s investigation (reasoning, confidence, steps, sources) when there was one. Raw provider responses are never stored, so nothing internal can leak.
curl --request GET \
--url https://api.getoneprofile.ai/tables/{table_id}/rows/{record_id}/cells/{column_id}/run-detail/ \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.getoneprofile.ai/tables/{table_id}/rows/{record_id}/cells/{column_id}/run-detail/"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.getoneprofile.ai/tables/{table_id}/rows/{record_id}/cells/{column_id}/run-detail/', 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}/rows/{record_id}/cells/{column_id}/run-detail/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.getoneprofile.ai/tables/{table_id}/rows/{record_id}/cells/{column_id}/run-detail/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.getoneprofile.ai/tables/{table_id}/rows/{record_id}/cells/{column_id}/run-detail/")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/tables/{table_id}/rows/{record_id}/cells/{column_id}/run-detail/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"action_key": "<string>",
"business_context_empty": true,
"cached_tokens": 123,
"completion_tokens": 123,
"confidence": "high",
"created_at": "2023-11-07T05:31:56Z",
"credits_breakdown": {},
"credits_charged": 123,
"credits_max": 123,
"details_pruned": true,
"duration_ms": 123,
"error": "<string>",
"error_class": "timeout",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"model_key": "<string>",
"outcome": "succeeded",
"prompt_text": "<string>",
"prompt_tokens": 123,
"raw_response": {},
"reasoning": "<string>",
"reasoning_tokens": 123,
"run_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_attempts": [
{
"attempt_index": 123,
"credits_charged": 123,
"error": "<string>",
"error_class": "timeout",
"outcome": "succeeded",
"served_from_cache": false,
"skipped_reason": "<string>"
}
],
"sources": [
{
"fetched_at": "2023-11-07T05:31:56Z",
"title": "<string>",
"url": "<string>"
}
],
"steps": [
{
"action": "search",
"detail": "<string>",
"duration_ms": 123,
"observation": "<string>",
"outcome": "completed",
"thought": "<string>"
}
],
"total_tokens": 123,
"web_read_credits": 123
}{
"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
Response
Successful Response
One cell's most recent enrichment execution, for inspection.
raw_response is the model's STRUCTURED payload (the parsed fields,
pre-coercion), never the provider transcript; summaries and error text
stay sanitized and length-capped, so nothing here needs masking after
the fact.
Whether the column asked for the workspace's business context and there was none, so the run worked without it.
Prompt tokens served from cache; null when unreported.
Completion tokens used; null when unreported.
The agent's own read on the answer; null for non-agent actions.
high, medium, low What credits_charged is made of, in decimal credits: 'research' (the agent's own work) plus one entry per lookup that found something, keyed 'find_work_email' / 'read_linkedin_profile'. Null for every other cell.
Show child attributes
Show child attributes
What executing this cell cost, by the page charge's rule.
The most this cell could have cost, in decimal credits, when its action charges what a row used under a per-row maximum (Use AI); null otherwise.
Whether the run is past detail retention. When true, empty trail fields (steps, reasoning, sources) mean the detail aged out, not that the run never had one.
Machine-readable classification of a failed enrichment cell.
The class decides everything downstream: whether the executor retries (transient classes) or gives up (terminal ones), what the cell tooltip names, and whether the failure is free. Errors never charge, but only a classified error can prove which kind it was. A clean no-answer (no_data) is free for a lookup; an AI column's is charged what it used.
timeout, rate_limited, quota_exhausted, provider_error, network, schema_violation, refused, invalid_input, no_data, enrichment_failed, unexpected How one cell's enrichment execution ended.
SKIPPED is a first-class third outcome: the action was deliberately
not run (a required input was empty), no work was done, and nothing is
charged.
succeeded, failed, skipped The resolved per-row prompt the action received.
Prompt tokens used; null when unreported.
The model's structured payload exactly as returned, before coercion; null when the action produced none.
Hidden reasoning tokens billed as output; null when unreported.
The table run that executed the cell.
A curated enrichment's per-attempt trail; empty elsewhere.
Show child attributes
Show child attributes
The pages the agent successfully read, deduplicated.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Total tokens used; null when unreported.
Web-read credits the run's page fetches billed, summed across steps; null for cells without web tools or rows predating the telemetry.
Was this page helpful?