Bulk run a flow
curl --request POST \
--url https://api.databar.ai/v1/flows/{flow_id}/bulk-run \
--header 'Content-Type: application/json' \
--header 'x-apikey: <x-apikey>' \
--data '
{
"inputs": [
{
"domain": "stripe.com"
},
{
"domain": "databar.ai"
}
]
}
'import requests
url = "https://api.databar.ai/v1/flows/{flow_id}/bulk-run"
payload = { "inputs": [{ "domain": "stripe.com" }, { "domain": "databar.ai" }] }
headers = {
"x-apikey": "<x-apikey>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-apikey': '<x-apikey>', 'Content-Type': 'application/json'},
body: JSON.stringify({inputs: [{domain: 'stripe.com'}, {domain: 'databar.ai'}]})
};
fetch('https://api.databar.ai/v1/flows/{flow_id}/bulk-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://api.databar.ai/v1/flows/{flow_id}/bulk-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([
'inputs' => [
[
'domain' => 'stripe.com'
],
[
'domain' => 'databar.ai'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-apikey: <x-apikey>"
],
]);
$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.databar.ai/v1/flows/{flow_id}/bulk-run"
payload := strings.NewReader("{\n \"inputs\": [\n {\n \"domain\": \"stripe.com\"\n },\n {\n \"domain\": \"databar.ai\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-apikey", "<x-apikey>")
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.databar.ai/v1/flows/{flow_id}/bulk-run")
.header("x-apikey", "<x-apikey>")
.header("Content-Type", "application/json")
.body("{\n \"inputs\": [\n {\n \"domain\": \"stripe.com\"\n },\n {\n \"domain\": \"databar.ai\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.databar.ai/v1/flows/{flow_id}/bulk-run")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-apikey"] = '<x-apikey>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"inputs\": [\n {\n \"domain\": \"stripe.com\"\n },\n {\n \"domain\": \"databar.ai\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"task_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "processing"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Flows
Run a flow in bulk
Start a flow over many input sets and return one task_id. Poll GET /v1/tasks/{task_id}. Results are aligned to inputs: one element per input, in the same order, with null for misses — same contract as POST /v1/enrichments/{id}/bulk-run.
POST
/
v1
/
flows
/
{flow_id}
/
bulk-run
Bulk run a flow
curl --request POST \
--url https://api.databar.ai/v1/flows/{flow_id}/bulk-run \
--header 'Content-Type: application/json' \
--header 'x-apikey: <x-apikey>' \
--data '
{
"inputs": [
{
"domain": "stripe.com"
},
{
"domain": "databar.ai"
}
]
}
'import requests
url = "https://api.databar.ai/v1/flows/{flow_id}/bulk-run"
payload = { "inputs": [{ "domain": "stripe.com" }, { "domain": "databar.ai" }] }
headers = {
"x-apikey": "<x-apikey>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-apikey': '<x-apikey>', 'Content-Type': 'application/json'},
body: JSON.stringify({inputs: [{domain: 'stripe.com'}, {domain: 'databar.ai'}]})
};
fetch('https://api.databar.ai/v1/flows/{flow_id}/bulk-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://api.databar.ai/v1/flows/{flow_id}/bulk-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([
'inputs' => [
[
'domain' => 'stripe.com'
],
[
'domain' => 'databar.ai'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-apikey: <x-apikey>"
],
]);
$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.databar.ai/v1/flows/{flow_id}/bulk-run"
payload := strings.NewReader("{\n \"inputs\": [\n {\n \"domain\": \"stripe.com\"\n },\n {\n \"domain\": \"databar.ai\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-apikey", "<x-apikey>")
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.databar.ai/v1/flows/{flow_id}/bulk-run")
.header("x-apikey", "<x-apikey>")
.header("Content-Type", "application/json")
.body("{\n \"inputs\": [\n {\n \"domain\": \"stripe.com\"\n },\n {\n \"domain\": \"databar.ai\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.databar.ai/v1/flows/{flow_id}/bulk-run")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-apikey"] = '<x-apikey>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"inputs\": [\n {\n \"domain\": \"stripe.com\"\n },\n {\n \"domain\": \"databar.ai\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"task_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "processing"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}This endpoint is asynchronous. It returns a
task_id — poll Get task status to retrieve your results. Task data expires after 24 hours.Results are aligned to your inputs: the
data array has one element per
input, in the same order you submitted them, with null for inputs that
returned no data. So len(data) equals the number of inputs and data[i] is
the result for input i — join results back to inputs by position.Headers
API Key for authentication
Path Parameters
Flow identifier, e.g. fl_ab12cd34
Body
application/json
One input set per record, in the order you want results back. Each object maps flow input id → value string, same shape as POST /flows/{id}/run.
Minimum array length:
1Show child attributes
Show child attributes