Programmatic access to the entire Etlworks platform. Build and manage flows, configure connections, schedule executions, query the audit log, and drive Composer — all via REST.
Full reference, quickstart, and downloads on the marketing site: etlworks.com/dev/api/. The articles in this section cover the per-endpoint detail.
What you can do
| Capability | What it gives you |
|---|---|
| Flows and executions | Build, edit, run, and monitor data pipelines. List runs, fetch logs, inspect history, get plain-English documentation for any flow. |
| Connections and OAuth | 270+ connector types: databases, files, HTTP APIs, message queues, SaaS apps. Built-in OAuth helpers for Google, Microsoft, Salesforce, HubSpot, and more. |
| Schedules and webhooks | Cron schedules, listener-driven triggers, webhook endpoints. Pause, resume, reschedule programmatically. |
| Explorer and SQL | Inspect tables, views, endpoints, datasets in any connected system. Run ad-hoc SQL. Upload files for staging. |
| Audit and recycle bin | Every change is logged: who, what, when. Recover deleted flows, connections, schedules from the recycle bin. |
| JWT and API-key auth | Bearer-token authentication. Generate per-user API keys for service accounts, or sign in with username/password to mint short-lived JWTs. |
Quick example
List your flows, then run one. Same auth, same JSON response shape across the entire API.
cURL:
# List your flows
curl -s https://app.etlworks.com/rest/v1/flows \
-H "Authorization: Bearer YOUR_API_KEY"
# Run a flow by id. Body is a flat map of parameters (or {} for none).
# Response is a FlowExecutionResponse with flowId + auditId + status (int).
curl -s -X POST https://app.etlworks.com/rest/v1/flows/12345/run \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"runDate":"2026-05-09"}'
Python:
import requests
BASE = "https://app.etlworks.com/rest"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
# List flows
flows = requests.get(f"{BASE}/v1/flows", headers=HEADERS).json()
# Run a flow. Body is a flat parameter map; response is FlowExecutionResponse.
resp = requests.post(
f"{BASE}/v1/flows/12345/run",
headers=HEADERS,
json={"runDate": "2026-05-09"},
).json()
print(resp["auditId"]) # use this with GET /v1/executions/{flowId}?auditId=…
Endpoint reference (in this section)
| Group | Endpoint |
|---|---|
| Auth | Authentication API |
| Health API | |
| Run flows | Run Flow by ID API |
| Run Flow by name API | |
| Get Flow status API | |
| Manage flows | Flows management API |
| Flows Export/Import API | |
| Flow Documentation API | |
| Download the Flow log API | |
| Schedules | Schedules management API |
| Audit and reporting | Get audit-trail events API |
| Reporting API | |
| I/O | IO management API |
| Webhooks | Webhooks API |
| Operations | ETL threads info API |
| Currently Running Tasks API | |
| Core dump API |
Get started
- Quickstart — get an API key, set your base URL, make your first request: etlworks.com/dev/api/quickstart
- How to call the APIs — auth flow, request format, error handling: Calling Etlworks Built-in APIs
- Full API reference — ~400 endpoints across 14 groups: etlworks.com/dev/api/api-reference
- Code examples — end-to-end recipes in Python, Bash, PowerShell, cURL: etlworks.com/dev/api/examples
- Downloads — client scripts and Postman collection: etlworks.com/dev/api/downloads