Warehouse Sync
Create Warehouse Connection
Connect Snowflake, BigQuery, Redshift or Postgres
POST
/
api
/
v1
/
warehouse-connections
Create Warehouse Connection
curl --request POST \
--url https://api.sequenzy.com/api/v1/warehouse-connections \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"provider": "<string>",
"config": {},
"credentials": {}
}
'import requests
url = "https://api.sequenzy.com/api/v1/warehouse-connections"
payload = {
"name": "<string>",
"provider": "<string>",
"config": {},
"credentials": {}
}
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({name: '<string>', provider: '<string>', config: {}, credentials: {}})
};
fetch('https://api.sequenzy.com/api/v1/warehouse-connections', 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.sequenzy.com/api/v1/warehouse-connections",
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([
'name' => '<string>',
'provider' => '<string>',
'config' => [
],
'credentials' => [
]
]),
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://api.sequenzy.com/api/v1/warehouse-connections"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"provider\": \"<string>\",\n \"config\": {},\n \"credentials\": {}\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://api.sequenzy.com/api/v1/warehouse-connections")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"provider\": \"<string>\",\n \"config\": {},\n \"credentials\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/warehouse-connections")
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 \"name\": \"<string>\",\n \"provider\": \"<string>\",\n \"config\": {},\n \"credentials\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"connection": {
"id": "wconn_abc123",
"name": "Snowflake prod",
"provider": "snowflake",
"config": {
"account": "myorg-myaccount",
"username": "SEQUENZY_READER",
"warehouse": "ANALYTICS_WH",
"database": "PROD",
"schema": "PUBLIC",
"role": "SEQUENZY_READ"
},
"status": "connected",
"lastTestedAt": "2026-09-30T12:00:00.000Z",
"lastError": null,
"syncCount": 1,
"createdAt": "2026-09-30T12:00:00.000Z",
"updatedAt": "2026-09-30T12:00:00.000Z"
}
}
{
"success": false,
"code": "connection_failed",
"error": "Snowflake rejected the credentials: JWT token is invalid. Check the account, user, and that the user's RSA_PUBLIC_KEY matches this private key."
}
{
"success": false,
"code": "connection_failed",
"error": "Host must resolve to a public internet address."
}
Connects a data warehouse. Sequenzy runs
SELECT 1 with the credentials before saving; if it fails, nothing is saved and the response contains the warehouse’s reason. Requires warehouse:write.
Use a user that can only read the tables you want to sync. See Warehouse Sync for setup steps per warehouse.
Request
string
required
Display name, up to 255 characters.
string
required
snowflake, bigquery, redshift or postgres.object
required
Non-secret settings. snowflake:
account (for example myorg-myaccount
or xy12345.us-east-1), username, warehouse, database, optional
schema and role. bigquery: projectId, optional location (for
example US). redshift and postgres: host, database, username,
optional port (default 5439 or 5432) and sslMode (require, the
default, or verify-full). The host must resolve to a public address.object
required
Secrets, stored encrypted and never returned. snowflake:
privateKey
(PKCS#8 PEM for key-pair authentication) and optional privateKeyPassphrase.
bigquery: serviceAccountJson, the contents of the service account key
file. redshift and postgres: password.curl -X POST "https://api.sequenzy.com/api/v1/warehouse-connections" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Analytics Postgres",
"provider": "postgres",
"config": { "host": "db.example.com", "database": "analytics", "username": "sequenzy_reader" },
"credentials": { "password": "..." }
}'
{
"success": true,
"connection": {
"id": "wconn_abc123",
"name": "Snowflake prod",
"provider": "snowflake",
"config": {
"account": "myorg-myaccount",
"username": "SEQUENZY_READER",
"warehouse": "ANALYTICS_WH",
"database": "PROD",
"schema": "PUBLIC",
"role": "SEQUENZY_READ"
},
"status": "connected",
"lastTestedAt": "2026-09-30T12:00:00.000Z",
"lastError": null,
"syncCount": 1,
"createdAt": "2026-09-30T12:00:00.000Z",
"updatedAt": "2026-09-30T12:00:00.000Z"
}
}
{
"success": false,
"code": "connection_failed",
"error": "Snowflake rejected the credentials: JWT token is invalid. Check the account, user, and that the user's RSA_PUBLIC_KEY matches this private key."
}
{
"success": false,
"code": "connection_failed",
"error": "Host must resolve to a public internet address."
}
⌘I
Create Warehouse Connection
curl --request POST \
--url https://api.sequenzy.com/api/v1/warehouse-connections \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"provider": "<string>",
"config": {},
"credentials": {}
}
'import requests
url = "https://api.sequenzy.com/api/v1/warehouse-connections"
payload = {
"name": "<string>",
"provider": "<string>",
"config": {},
"credentials": {}
}
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({name: '<string>', provider: '<string>', config: {}, credentials: {}})
};
fetch('https://api.sequenzy.com/api/v1/warehouse-connections', 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.sequenzy.com/api/v1/warehouse-connections",
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([
'name' => '<string>',
'provider' => '<string>',
'config' => [
],
'credentials' => [
]
]),
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://api.sequenzy.com/api/v1/warehouse-connections"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"provider\": \"<string>\",\n \"config\": {},\n \"credentials\": {}\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://api.sequenzy.com/api/v1/warehouse-connections")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"provider\": \"<string>\",\n \"config\": {},\n \"credentials\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/warehouse-connections")
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 \"name\": \"<string>\",\n \"provider\": \"<string>\",\n \"config\": {},\n \"credentials\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"connection": {
"id": "wconn_abc123",
"name": "Snowflake prod",
"provider": "snowflake",
"config": {
"account": "myorg-myaccount",
"username": "SEQUENZY_READER",
"warehouse": "ANALYTICS_WH",
"database": "PROD",
"schema": "PUBLIC",
"role": "SEQUENZY_READ"
},
"status": "connected",
"lastTestedAt": "2026-09-30T12:00:00.000Z",
"lastError": null,
"syncCount": 1,
"createdAt": "2026-09-30T12:00:00.000Z",
"updatedAt": "2026-09-30T12:00:00.000Z"
}
}
{
"success": false,
"code": "connection_failed",
"error": "Snowflake rejected the credentials: JWT token is invalid. Check the account, user, and that the user's RSA_PUBLIC_KEY matches this private key."
}
{
"success": false,
"code": "connection_failed",
"error": "Host must resolve to a public internet address."
}