Create backfill
curl --request POST \
--url https://api.example.com/api/v1/beam/backfillsimport requests
url = "https://api.example.com/api/v1/beam/backfills"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.example.com/api/v1/beam/backfills', 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.example.com/api/v1/beam/backfills",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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.example.com/api/v1/beam/backfills"
req, _ := http.NewRequest("POST", url, nil)
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.example.com/api/v1/beam/backfills")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/beam/backfills")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_bodyBackfills
Create backfill
Starts a historical backfill job that exports a Snowflake table slice to your destinations.
POST
/
api
/
v1
/
beam
/
backfills
Create backfill
curl --request POST \
--url https://api.example.com/api/v1/beam/backfillsimport requests
url = "https://api.example.com/api/v1/beam/backfills"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.example.com/api/v1/beam/backfills', 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.example.com/api/v1/beam/backfills",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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.example.com/api/v1/beam/backfills"
req, _ := http.NewRequest("POST", url, nil)
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.example.com/api/v1/beam/backfills")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/beam/backfills")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_bodyStages data from a Snowflake table for the given window, then streams it to one or more destinations. The job progresses through
Response:
Use
Request body:
Translates to
Uses the same sink types as pipelines. See the Sinks reference.
staging → transporting → completed (or failed / cancelled).
We currently only support Base tables (e.g.
base.assets.erc20_token_transfers). Contact [email protected] to request support for additional tables.curl -X POST https://api.allium.so/api/v1/beam/backfills \
-H "X-API-Key: ${ALLIUM_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"job_name": "USDC transfers on Base — Mar 2026",
"table": "base.assets.erc20_token_transfers",
"backfill_window": {
"partition_key": "block_timestamp",
"start": "2026-03-01T00:00:00",
"end": "2026-04-01T00:00:00"
},
"filter": {
"column": "token_address",
"values": ["0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"]
},
"destinations": [
{ "type": "kafka", "name": "base-usdc-transfers-backfill" }
]
}'
{
"job_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"workflow_id": "beam-backfill-org123-f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
job_id to poll job status via List backfills or to cancel via Cancel backfill.
Request body:
{
"job_name": str,
"table": str,
"backfill_window": { ... },
"filter": { ... },
"destinations": [ ... ],
"static_egress_ip": bool
}
backfill_window
start is inclusive, end is exclusive, and start must be less than end.
Backfill by block timestamp. Set partition_key to "block_timestamp".
{
"partition_key": "block_timestamp",
"start": "2024-01-01T00:00:00",
"end": "2024-01-02T00:00:00"
}
| Field | Type | Required | Description |
|---|---|---|---|
partition_key | "block_timestamp" | Yes | Must be block_timestamp |
start | string | Yes | Inclusive ISO 8601 start timestamp |
end | string | Yes | Exclusive ISO 8601 end timestamp |
filter (optional)
{
"column": "token_address",
"values": ["0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"]
}
WHERE column IN (values) on the Snowflake COPY INTO query.
destinations
Uses the same sink types as pipelines. See the Sinks reference.Was this page helpful?