JWT-based authentication with access tokens. Login, register, and manage sessions.
POST /auth/loginPOST /auth/registerGET /auth/meCreate, schedule, and manage data pipelines from any source to any destination.
GET /pipelines/POST /pipelines/POST /pipelines/{id}/runGET /pipelines/{id}/runsList available connectors, their capabilities, and configuration schemas.
GET /connectors/GET /connectors/{name}GET /connectors/categoriesManage subscriptions, check usage limits, and handle Stripe webhooks.
GET /billing/plansGET /billing/subscriptionGET /billing/usagePOST /billing/checkoutimport requests
# Authenticate
resp = requests.post("https://api.yourdomain.com/auth/login", data={
"username": "your@email.com",
"password": "your_password",
})
token = resp.json()["access_token"]
headers = {"Authorization": f"Bearer {token}"}
# List pipelines
pipelines = requests.get(
"https://api.yourdomain.com/pipelines/",
headers=headers,
).json()
# Trigger a pipeline run
run = requests.post(
f"https://api.yourdomain.com/pipelines/{pipelines[0]['public_id']}/run",
headers=headers,
).json()
print(f"Pipeline run started: {run['public_id']}")const API_URL = "https://api.yourdomain.com";
// Authenticate
const loginResp = await fetch(`${API_URL}/auth/login`, {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
username: "your@email.com",
password: "your_password",
}),
});
const { access_token } = await loginResp.json();
// List pipelines
const pipelines = await fetch(`${API_URL}/pipelines/`, {
headers: { Authorization: `Bearer ${access_token}` },
}).then(r => r.json());
// Trigger a pipeline run
const run = await fetch(
`${API_URL}/pipelines/${pipelines[0].public_id}/run`,
{
method: "POST",
headers: { Authorization: `Bearer ${access_token}` },
}
).then(r => r.json());
console.log("Pipeline run started:", run.public_id);# Authenticate
TOKEN=$(curl -s -X POST https://api.yourdomain.com/auth/login \
-d "username=your@email.com&password=your_password" | jq -r '.access_token')
# List pipelines
curl -s https://api.yourdomain.com/pipelines/ \
-H "Authorization: Bearer $TOKEN" | jq
# Check usage
curl -s https://api.yourdomain.com/billing/usage \
-H "Authorization: Bearer $TOKEN" | jq
# List available connectors
curl -s https://api.yourdomain.com/connectors/ | jqBuild custom data source connectors with our Python SDK. Your connector automatically gets schema discovery, incremental loading, and integration with the platform's pipeline engine.
from backend.connectors.sdk import BaseConnector, register_connector
@register_connector
class MyConnector(BaseConnector):
metadata = ConnectorMetadata(
name="my_source",
display_name="My Data Source",
category="api",
)
def extract(self, tables=None, **kwargs):
yield {"id": 1, "name": "Alice"}
yield {"id": 2, "name": "Bob"}