REST API Reference

Airflow exposes an REST API. It is available through the webserver. Endpoints are available at /api/experimental/.

Warning

The API structure is not stable. We expect the endpoint definitions to change.

Endpoints

POST /api/experimental/dags/<DAG_ID>/dag_runs

Creates a dag_run for a given dag id. Note: If execution_date is not specified in the body, airflow by default creates only one DAG per second for a given DAG_ID. In order to create multiple DagRun within one second, execution_date must be specified with the format “YYYY-mm-DDTHH:MM:SS.ssssss”.

Trigger DAG with config, example:

curl -X POST \
  http://localhost:8080/api/experimental/dags/<DAG_ID>/dag_runs \
  -H 'Cache-Control: no-cache' \
  -H 'Content-Type: application/json' \
  -d '{"conf":"{\"key\":\"value\"}"}'
GET /api/experimental/dags/<DAG_ID>/dag_runs

Returns a list of Dag Runs for a specific DAG ID.

GET /api/experimental/dags/<string:dag_id>/dag_runs/<string:execution_date>

Returns a JSON with a dag_run’s public instance variables. The format for the <string:execution_date> is expected to be “YYYY-mm-DDTHH:MM:SS”, for example: “2016-11-16T11:34:15”.

GET /api/experimental/test

To check REST API server correct work. Return status ‘OK’.

GET /api/experimental/dags/<DAG_ID>/tasks/<TASK_ID>

Returns info for a task.

GET /api/experimental/dags/<DAG_ID>/dag_runs/<string:execution_date>/tasks/<TASK_ID>

Returns a JSON with a task instance’s public instance variables. The format for the <string:execution_date> is expected to be “YYYY-mm-DDTHH:MM:SS”, for example: “2016-11-16T11:34:15”.

GET /api/experimental/dags/<DAG_ID>/paused/<string:paused>

‘<string:paused>’ must be a ‘true’ to pause a DAG and ‘false’ to unpause.

GET /api/experimental/dags/<DAG_ID>/paused

Returns the paused state of a DAG

GET /api/experimental/latest_runs

Returns the latest DagRun for each DAG formatted for the UI.

GET /api/experimental/pools

Get all pools.

GET /api/experimental/pools/<string:name>

Get pool by a given name.

POST /api/experimental/pools

Create a pool.

DELETE /api/experimental/pools/<string:name>

Delete pool.

GET /api/experimental/lineage/<DAG_ID>/<string:execution_date>/

Returns the lineage information for the dag.