curl --request GET \
--url 'https://app.teable.ai/api/base/%7BbaseId%7D/workflow/%7BworkflowId%7D/run?skip=SOME_INTEGER_VALUE&take=SOME_INTEGER_VALUE&status=SOME_STRING_VALUE&createdTimeStart=SOME_STRING_VALUE&createdTimeEnd=SOME_STRING_VALUE&spentMin=SOME_NUMBER_VALUE&spentMax=SOME_NUMBER_VALUE&runIds=SOME_STRING_VALUE&cursor=SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'const url = 'https://app.teable.ai/api/base/%7BbaseId%7D/workflow/%7BworkflowId%7D/run?skip=SOME_INTEGER_VALUE&take=SOME_INTEGER_VALUE&status=SOME_STRING_VALUE&createdTimeStart=SOME_STRING_VALUE&createdTimeEnd=SOME_STRING_VALUE&spentMin=SOME_NUMBER_VALUE&spentMax=SOME_NUMBER_VALUE&runIds=SOME_STRING_VALUE&cursor=SOME_STRING_VALUE';
const options = {method: 'GET', headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}const http = require('https');
const options = {
method: 'GET',
hostname: 'app.teable.ai',
port: null,
path: '/api/base/%7BbaseId%7D/workflow/%7BworkflowId%7D/run?skip=SOME_INTEGER_VALUE&take=SOME_INTEGER_VALUE&status=SOME_STRING_VALUE&createdTimeStart=SOME_STRING_VALUE&createdTimeEnd=SOME_STRING_VALUE&spentMin=SOME_NUMBER_VALUE&spentMax=SOME_NUMBER_VALUE&runIds=SOME_STRING_VALUE&cursor=SOME_STRING_VALUE',
headers: {
Authorization: 'Bearer REPLACE_BEARER_TOKEN'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();import http.client
conn = http.client.HTTPSConnection("app.teable.ai")
headers = { 'Authorization': "Bearer REPLACE_BEARER_TOKEN" }
conn.request("GET", "/api/base/%7BbaseId%7D/workflow/%7BworkflowId%7D/run?skip=SOME_INTEGER_VALUE&take=SOME_INTEGER_VALUE&status=SOME_STRING_VALUE&createdTimeStart=SOME_STRING_VALUE&createdTimeEnd=SOME_STRING_VALUE&spentMin=SOME_NUMBER_VALUE&spentMax=SOME_NUMBER_VALUE&runIds=SOME_STRING_VALUE&cursor=SOME_STRING_VALUE", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.teable.ai/api/base/{baseId}/workflow/{workflowId}/run",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://app.teable.ai/api/base/{baseId}/workflow/{workflowId}/run"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.teable.ai/api/base/{baseId}/workflow/{workflowId}/run")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.teable.ai/api/base/{baseId}/workflow/{workflowId}/run")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"rowCount": 123,
"runs": [
{
"id": "<string>",
"status": "success",
"createdTime": "<string>",
"errorMsg": {
"i18nKey": "<string>",
"context": {}
},
"spent": 123,
"retryOfRunId": "<string>",
"snapshotId": "<string>"
}
],
"nextCursor": "<string>"
}Get project workflow run 1
get automation workflow run history list
curl --request GET \
--url 'https://app.teable.ai/api/base/%7BbaseId%7D/workflow/%7BworkflowId%7D/run?skip=SOME_INTEGER_VALUE&take=SOME_INTEGER_VALUE&status=SOME_STRING_VALUE&createdTimeStart=SOME_STRING_VALUE&createdTimeEnd=SOME_STRING_VALUE&spentMin=SOME_NUMBER_VALUE&spentMax=SOME_NUMBER_VALUE&runIds=SOME_STRING_VALUE&cursor=SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'const url = 'https://app.teable.ai/api/base/%7BbaseId%7D/workflow/%7BworkflowId%7D/run?skip=SOME_INTEGER_VALUE&take=SOME_INTEGER_VALUE&status=SOME_STRING_VALUE&createdTimeStart=SOME_STRING_VALUE&createdTimeEnd=SOME_STRING_VALUE&spentMin=SOME_NUMBER_VALUE&spentMax=SOME_NUMBER_VALUE&runIds=SOME_STRING_VALUE&cursor=SOME_STRING_VALUE';
const options = {method: 'GET', headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}const http = require('https');
const options = {
method: 'GET',
hostname: 'app.teable.ai',
port: null,
path: '/api/base/%7BbaseId%7D/workflow/%7BworkflowId%7D/run?skip=SOME_INTEGER_VALUE&take=SOME_INTEGER_VALUE&status=SOME_STRING_VALUE&createdTimeStart=SOME_STRING_VALUE&createdTimeEnd=SOME_STRING_VALUE&spentMin=SOME_NUMBER_VALUE&spentMax=SOME_NUMBER_VALUE&runIds=SOME_STRING_VALUE&cursor=SOME_STRING_VALUE',
headers: {
Authorization: 'Bearer REPLACE_BEARER_TOKEN'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();import http.client
conn = http.client.HTTPSConnection("app.teable.ai")
headers = { 'Authorization': "Bearer REPLACE_BEARER_TOKEN" }
conn.request("GET", "/api/base/%7BbaseId%7D/workflow/%7BworkflowId%7D/run?skip=SOME_INTEGER_VALUE&take=SOME_INTEGER_VALUE&status=SOME_STRING_VALUE&createdTimeStart=SOME_STRING_VALUE&createdTimeEnd=SOME_STRING_VALUE&spentMin=SOME_NUMBER_VALUE&spentMax=SOME_NUMBER_VALUE&runIds=SOME_STRING_VALUE&cursor=SOME_STRING_VALUE", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.teable.ai/api/base/{baseId}/workflow/{workflowId}/run",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://app.teable.ai/api/base/{baseId}/workflow/{workflowId}/run"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.teable.ai/api/base/{baseId}/workflow/{workflowId}/run")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.teable.ai/api/base/{baseId}/workflow/{workflowId}/run")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"rowCount": 123,
"runs": [
{
"id": "<string>",
"status": "success",
"createdTime": "<string>",
"errorMsg": {
"i18nKey": "<string>",
"context": {}
},
"spent": 123,
"retryOfRunId": "<string>",
"snapshotId": "<string>"
}
],
"nextCursor": "<string>"
}Autorizaciones
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Parámetros de consulta
skip number
x >= 0take number
1 <= x <= 500filter by status
success, failed, running, canceled, pending inclusive lower bound (ISO datetime)
inclusive upper bound (ISO datetime)
inclusive lower bound on spent (ms)
inclusive upper bound on spent (ms)
comma-separated run IDs to filter by
opaque continuation cursor for pages beyond the hot storage zone; when set, skip is ignored. Pages served from cold storage may be slower, especially with spent/runIds filters
Respuesta
Successful response
total number of the runs, deduplicated across hot and archived storage. One known exception: a run that turns terminal only after an archive pass, while sorting below the archive boundary, is omitted until the next successful archive pass picks it up.
workflow run history
Show child attributes
Show child attributes
cursor for the next page; pass it back as cursor. null means the list is exhausted. Present on every page — only the first request needs skip/take
¿Esta página le ayudó?

