curl --request POST \
--url https://be.datagol.ai/noCo/api/v2/workspaces/{workspace_id}/extraction/{extraction_id}/{element_type}/{element_id}/run \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"rows": [
{
"id": 0,
"cellValues": {
"workspace_id": "35bb2bfb-5b7b-451c-9be4-6de7b5ed307e",
"noco_e0e0ea6e": 0,
"web_url": "https://app.datagol.ai/",
"meeting_id": 24124,
"call_recording_id": 21512512,
"id": "{\"meeting_id\":\"325325\",\"workspace_id\":\"214215\",\"call_recording_id\":\"21515124\"}",
"raw_transcript": "Iris: Hello. Alex: Hi. Iris: We’re exploring software you can summon"
},
"cellValuesByColumnId": {}
}
],
"whereClause": "1 = 1",
"selectAll": false
}
'import requests
url = "https://be.datagol.ai/noCo/api/v2/workspaces/{workspace_id}/extraction/{extraction_id}/{element_type}/{element_id}/run"
payload = {
"rows": [
{
"id": 0,
"cellValues": {
"workspace_id": "35bb2bfb-5b7b-451c-9be4-6de7b5ed307e",
"noco_e0e0ea6e": 0,
"web_url": "https://app.datagol.ai/",
"meeting_id": 24124,
"call_recording_id": 21512512,
"id": "{\"meeting_id\":\"325325\",\"workspace_id\":\"214215\",\"call_recording_id\":\"21515124\"}",
"raw_transcript": "Iris: Hello. Alex: Hi. Iris: We’re exploring software you can summon"
},
"cellValuesByColumnId": {}
}
],
"whereClause": "1 = 1",
"selectAll": False
}
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({
rows: [
{
id: 0,
cellValues: {
workspace_id: '35bb2bfb-5b7b-451c-9be4-6de7b5ed307e',
noco_e0e0ea6e: 0,
web_url: 'https://app.datagol.ai/',
meeting_id: 24124,
call_recording_id: 21512512,
id: '{"meeting_id":"325325","workspace_id":"214215","call_recording_id":"21515124"}',
raw_transcript: 'Iris: Hello. Alex: Hi. Iris: We’re exploring software you can summon'
},
cellValuesByColumnId: {}
}
],
whereClause: '1 = 1',
selectAll: false
})
};
fetch('https://be.datagol.ai/noCo/api/v2/workspaces/{workspace_id}/extraction/{extraction_id}/{element_type}/{element_id}/run', 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://be.datagol.ai/noCo/api/v2/workspaces/{workspace_id}/extraction/{extraction_id}/{element_type}/{element_id}/run",
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([
'rows' => [
[
'id' => 0,
'cellValues' => [
'workspace_id' => '35bb2bfb-5b7b-451c-9be4-6de7b5ed307e',
'noco_e0e0ea6e' => 0,
'web_url' => 'https://app.datagol.ai/',
'meeting_id' => 24124,
'call_recording_id' => 21512512,
'id' => '{"meeting_id":"325325","workspace_id":"214215","call_recording_id":"21515124"}',
'raw_transcript' => 'Iris: Hello. Alex: Hi. Iris: We’re exploring software you can summon'
],
'cellValuesByColumnId' => [
]
]
],
'whereClause' => '1 = 1',
'selectAll' => false
]),
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://be.datagol.ai/noCo/api/v2/workspaces/{workspace_id}/extraction/{extraction_id}/{element_type}/{element_id}/run"
payload := strings.NewReader("{\n \"rows\": [\n {\n \"id\": 0,\n \"cellValues\": {\n \"workspace_id\": \"35bb2bfb-5b7b-451c-9be4-6de7b5ed307e\",\n \"noco_e0e0ea6e\": 0,\n \"web_url\": \"https://app.datagol.ai/\",\n \"meeting_id\": 24124,\n \"call_recording_id\": 21512512,\n \"id\": \"{\\\"meeting_id\\\":\\\"325325\\\",\\\"workspace_id\\\":\\\"214215\\\",\\\"call_recording_id\\\":\\\"21515124\\\"}\",\n \"raw_transcript\": \"Iris: Hello. Alex: Hi. Iris: We’re exploring software you can summon\"\n },\n \"cellValuesByColumnId\": {}\n }\n ],\n \"whereClause\": \"1 = 1\",\n \"selectAll\": false\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://be.datagol.ai/noCo/api/v2/workspaces/{workspace_id}/extraction/{extraction_id}/{element_type}/{element_id}/run")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"rows\": [\n {\n \"id\": 0,\n \"cellValues\": {\n \"workspace_id\": \"35bb2bfb-5b7b-451c-9be4-6de7b5ed307e\",\n \"noco_e0e0ea6e\": 0,\n \"web_url\": \"https://app.datagol.ai/\",\n \"meeting_id\": 24124,\n \"call_recording_id\": 21512512,\n \"id\": \"{\\\"meeting_id\\\":\\\"325325\\\",\\\"workspace_id\\\":\\\"214215\\\",\\\"call_recording_id\\\":\\\"21515124\\\"}\",\n \"raw_transcript\": \"Iris: Hello. Alex: Hi. Iris: We’re exploring software you can summon\"\n },\n \"cellValuesByColumnId\": {}\n }\n ],\n \"whereClause\": \"1 = 1\",\n \"selectAll\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://be.datagol.ai/noCo/api/v2/workspaces/{workspace_id}/extraction/{extraction_id}/{element_type}/{element_id}/run")
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 \"rows\": [\n {\n \"id\": 0,\n \"cellValues\": {\n \"workspace_id\": \"35bb2bfb-5b7b-451c-9be4-6de7b5ed307e\",\n \"noco_e0e0ea6e\": 0,\n \"web_url\": \"https://app.datagol.ai/\",\n \"meeting_id\": 24124,\n \"call_recording_id\": 21512512,\n \"id\": \"{\\\"meeting_id\\\":\\\"325325\\\",\\\"workspace_id\\\":\\\"214215\\\",\\\"call_recording_id\\\":\\\"21515124\\\"}\",\n \"raw_transcript\": \"Iris: Hello. Alex: Hi. Iris: We’re exploring software you can summon\"\n },\n \"cellValuesByColumnId\": {}\n }\n ],\n \"whereClause\": \"1 = 1\",\n \"selectAll\": false\n}"
response = http.request(request)
puts response.read_bodyTrigger Extraction
1️⃣ Overview
Purpose:
Triggers an extraction run for a specified extraction configuration and element.
Supports extraction modes for:
-
New records only
-
Selected rows
-
Filter-based extraction
-
Full dataset extraction
2️⃣ Endpoint
POST /noCo/api/v2/workspaces/{workspaceId}/extraction/{extractionId}/{elementType}/{elementId}/run?extractOnlyNew=true
3️⃣ Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| workspaceId | UUID | ✅ Yes | Workspace identifier |
| extractionId | string | ✅ Yes | Extraction configuration ID |
| elementType | string | ✅ Yes | COLUMN / FILE / FOLDER |
| elementId | string | ✅ Yes | Element identifier |
4️⃣ Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| extractOnlyNew | boolean | ❌ No | Default false |
Behavior:
-
true→ Only new records are extracted -
false→ Selected records are upserted (update existing + insert new)
5️⃣ Authentication
Requires authentication using:
Authorization: Bearer <token>
6️⃣ Request Headers
| Header | Required |
|---|---|
| Authorization | ✅ Yes |
| Content-Type: application/json | Optional |
7️⃣ Request Body Schema (Optional)
{
"rows": [],
"whereClause": "string",
"selectAll": true
}
8️⃣ Field Descriptions
Extraction Execution Controls
| Field | Type | Required | Description |
|---|---|---|---|
| rows | array | ❌ No | Specific rows to extract |
| whereClause | string | ❌ No | Filter condition |
| selectAll | boolean | ❌ No | Select all rows flag |
9️⃣ Example Request
Trigger extraction for selected rows
curl -X POST "https://be.datagol.ai/noCo/api/v2/workspaces/{workspaceId}/extraction/{extractionId}/{elementType}/{elementId}/run?extractOnlyNew=true" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"selectAll": false,
"rows": [
{
"id": "row1",
"name": "Sample Data"
}
]
}'
🔟 Behavior Summary
Triggers an extraction execution job for the specified configuration.
Supports:
• Incremental Extraction — When extractOnlyNew=true, only new records are processed.
• Upsert Extraction — When extractOnlyNew=false, existing records are updated and new records are inserted.
• Selective Extraction — Allows extraction of specific rows using the rows field.
• Filtered Extraction — Supports conditional extraction using whereClause.
• Full Extraction — When selectAll=true, extracts all matching records (rows field should be omitted).
📌 Additional Description
When selectAll is true, the system extracts all matching records.
If selectAll is false, the client must provide the complete row data in the rows field.
The request supports two major extraction strategies:
-
Incremental Extraction: Controlled by
extractOnlyNew=true -
Upsert Extraction: When
extractOnlyNew=false, existing records are updated and new records are inserted.
curl --request POST \
--url https://be.datagol.ai/noCo/api/v2/workspaces/{workspace_id}/extraction/{extraction_id}/{element_type}/{element_id}/run \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"rows": [
{
"id": 0,
"cellValues": {
"workspace_id": "35bb2bfb-5b7b-451c-9be4-6de7b5ed307e",
"noco_e0e0ea6e": 0,
"web_url": "https://app.datagol.ai/",
"meeting_id": 24124,
"call_recording_id": 21512512,
"id": "{\"meeting_id\":\"325325\",\"workspace_id\":\"214215\",\"call_recording_id\":\"21515124\"}",
"raw_transcript": "Iris: Hello. Alex: Hi. Iris: We’re exploring software you can summon"
},
"cellValuesByColumnId": {}
}
],
"whereClause": "1 = 1",
"selectAll": false
}
'import requests
url = "https://be.datagol.ai/noCo/api/v2/workspaces/{workspace_id}/extraction/{extraction_id}/{element_type}/{element_id}/run"
payload = {
"rows": [
{
"id": 0,
"cellValues": {
"workspace_id": "35bb2bfb-5b7b-451c-9be4-6de7b5ed307e",
"noco_e0e0ea6e": 0,
"web_url": "https://app.datagol.ai/",
"meeting_id": 24124,
"call_recording_id": 21512512,
"id": "{\"meeting_id\":\"325325\",\"workspace_id\":\"214215\",\"call_recording_id\":\"21515124\"}",
"raw_transcript": "Iris: Hello. Alex: Hi. Iris: We’re exploring software you can summon"
},
"cellValuesByColumnId": {}
}
],
"whereClause": "1 = 1",
"selectAll": False
}
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({
rows: [
{
id: 0,
cellValues: {
workspace_id: '35bb2bfb-5b7b-451c-9be4-6de7b5ed307e',
noco_e0e0ea6e: 0,
web_url: 'https://app.datagol.ai/',
meeting_id: 24124,
call_recording_id: 21512512,
id: '{"meeting_id":"325325","workspace_id":"214215","call_recording_id":"21515124"}',
raw_transcript: 'Iris: Hello. Alex: Hi. Iris: We’re exploring software you can summon'
},
cellValuesByColumnId: {}
}
],
whereClause: '1 = 1',
selectAll: false
})
};
fetch('https://be.datagol.ai/noCo/api/v2/workspaces/{workspace_id}/extraction/{extraction_id}/{element_type}/{element_id}/run', 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://be.datagol.ai/noCo/api/v2/workspaces/{workspace_id}/extraction/{extraction_id}/{element_type}/{element_id}/run",
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([
'rows' => [
[
'id' => 0,
'cellValues' => [
'workspace_id' => '35bb2bfb-5b7b-451c-9be4-6de7b5ed307e',
'noco_e0e0ea6e' => 0,
'web_url' => 'https://app.datagol.ai/',
'meeting_id' => 24124,
'call_recording_id' => 21512512,
'id' => '{"meeting_id":"325325","workspace_id":"214215","call_recording_id":"21515124"}',
'raw_transcript' => 'Iris: Hello. Alex: Hi. Iris: We’re exploring software you can summon'
],
'cellValuesByColumnId' => [
]
]
],
'whereClause' => '1 = 1',
'selectAll' => false
]),
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://be.datagol.ai/noCo/api/v2/workspaces/{workspace_id}/extraction/{extraction_id}/{element_type}/{element_id}/run"
payload := strings.NewReader("{\n \"rows\": [\n {\n \"id\": 0,\n \"cellValues\": {\n \"workspace_id\": \"35bb2bfb-5b7b-451c-9be4-6de7b5ed307e\",\n \"noco_e0e0ea6e\": 0,\n \"web_url\": \"https://app.datagol.ai/\",\n \"meeting_id\": 24124,\n \"call_recording_id\": 21512512,\n \"id\": \"{\\\"meeting_id\\\":\\\"325325\\\",\\\"workspace_id\\\":\\\"214215\\\",\\\"call_recording_id\\\":\\\"21515124\\\"}\",\n \"raw_transcript\": \"Iris: Hello. Alex: Hi. Iris: We’re exploring software you can summon\"\n },\n \"cellValuesByColumnId\": {}\n }\n ],\n \"whereClause\": \"1 = 1\",\n \"selectAll\": false\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://be.datagol.ai/noCo/api/v2/workspaces/{workspace_id}/extraction/{extraction_id}/{element_type}/{element_id}/run")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"rows\": [\n {\n \"id\": 0,\n \"cellValues\": {\n \"workspace_id\": \"35bb2bfb-5b7b-451c-9be4-6de7b5ed307e\",\n \"noco_e0e0ea6e\": 0,\n \"web_url\": \"https://app.datagol.ai/\",\n \"meeting_id\": 24124,\n \"call_recording_id\": 21512512,\n \"id\": \"{\\\"meeting_id\\\":\\\"325325\\\",\\\"workspace_id\\\":\\\"214215\\\",\\\"call_recording_id\\\":\\\"21515124\\\"}\",\n \"raw_transcript\": \"Iris: Hello. Alex: Hi. Iris: We’re exploring software you can summon\"\n },\n \"cellValuesByColumnId\": {}\n }\n ],\n \"whereClause\": \"1 = 1\",\n \"selectAll\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://be.datagol.ai/noCo/api/v2/workspaces/{workspace_id}/extraction/{extraction_id}/{element_type}/{element_id}/run")
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 \"rows\": [\n {\n \"id\": 0,\n \"cellValues\": {\n \"workspace_id\": \"35bb2bfb-5b7b-451c-9be4-6de7b5ed307e\",\n \"noco_e0e0ea6e\": 0,\n \"web_url\": \"https://app.datagol.ai/\",\n \"meeting_id\": 24124,\n \"call_recording_id\": 21512512,\n \"id\": \"{\\\"meeting_id\\\":\\\"325325\\\",\\\"workspace_id\\\":\\\"214215\\\",\\\"call_recording_id\\\":\\\"21515124\\\"}\",\n \"raw_transcript\": \"Iris: Hello. Alex: Hi. Iris: We’re exploring software you can summon\"\n },\n \"cellValuesByColumnId\": {}\n }\n ],\n \"whereClause\": \"1 = 1\",\n \"selectAll\": false\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
This API uses OAuth 2.0 with the authorization code grant flow.
Path Parameters
Query Parameters
Response
Trigger Extraction