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"
}{
"error": "<string>",
"detail": "<string>",
"fields": [
{
"loc": [
"<string>"
],
"msg": "<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"
}{
"error": "<string>",
"detail": "<string>",
"fields": [
{
"loc": [
"<string>"
],
"msg": "<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.Body
application/json