<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Apache Druid">
<meta name="keywords" content="druid,kafka,database,analytics,streaming,real-time,real time,apache,open source">
<meta name="author" content="Apache Software Foundation">

<title>Druid | Apache Druid (incubating) API Reference</title>

<link rel="alternate" type="application/atom+xml" href="/feed">
<link rel="shortcut icon" href="/img/favicon.png">

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">

<link href='//fonts.googleapis.com/css?family=Open+Sans+Condensed:300,700,300italic|Open+Sans:300italic,400italic,600italic,400,300,600,700' rel='stylesheet' type='text/css'>

<link rel="stylesheet" href="/css/bootstrap-pure.css?v=1.1">
<link rel="stylesheet" href="/css/base.css?v=1.1">
<link rel="stylesheet" href="/css/header.css?v=1.1">
<link rel="stylesheet" href="/css/footer.css?v=1.1">
<link rel="stylesheet" href="/css/syntax.css?v=1.1">
<link rel="stylesheet" href="/css/docs.css?v=1.1">

<script>
  (function() {
    var cx = '000162378814775985090:molvbm0vggm';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
        '//cse.google.com/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
  })();
</script>


  </head>

  <body>
    <!-- Start page_header include -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

<div class="top-navigator">
  <div class="container">
    <div class="left-cont">
      <a class="logo" href="/"><span class="druid-logo"></span></a>
    </div>
    <div class="right-cont">
      <ul class="links">
        <li class=""><a href="/technology">Technology</a></li>
        <li class=""><a href="/use-cases">Use Cases</a></li>
        <li class=""><a href="/druid-powered">Powered By</a></li>
        <li class=""><a href="/docs/latest/design/">Docs</a></li>
        <li class=""><a href="/community/">Community</a></li>
        <li class="header-dropdown">
          <a>Apache</a>
          <div class="header-dropdown-menu">
            <a href="https://www.apache.org/" target="_blank">Foundation</a>
            <a href="https://www.apache.org/events/current-event" target="_blank">Events</a>
            <a href="https://www.apache.org/licenses/" target="_blank">License</a>
            <a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a>
            <a href="https://www.apache.org/security/" target="_blank">Security</a>
            <a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship</a>
          </div>
        </li>
        <li class=" button-link"><a href="/downloads.html">Download</a></li>
      </ul>
    </div>
  </div>
  <div class="action-button menu-icon">
    <span class="fa fa-bars"></span> MENU
  </div>
  <div class="action-button menu-icon-close">
    <span class="fa fa-times"></span> MENU
  </div>
</div>

<script type="text/javascript">
  var $menu = $('.right-cont');
  var $menuIcon = $('.menu-icon');
  var $menuIconClose = $('.menu-icon-close');

  function showMenu() {
    $menu.fadeIn(100);
    $menuIcon.fadeOut(100);
    $menuIconClose.fadeIn(100);
  }

  $menuIcon.click(showMenu);

  function hideMenu() {
    $menu.fadeOut(100);
    $menuIconClose.fadeOut(100);
    $menuIcon.fadeIn(100);
  }

  $menuIconClose.click(hideMenu);

  $(window).resize(function() {
    if ($(window).width() >= 840) {
      $menu.fadeIn(100);
      $menuIcon.fadeOut(100);
      $menuIconClose.fadeOut(100);
    }
    else {
      $menu.fadeOut(100);
      $menuIcon.fadeIn(100);
      $menuIconClose.fadeOut(100);
    }
  });
</script>

<!-- Stop page_header include -->


    <div class="container doc-container">
      
      

      
      <p> Looking for the <a href="/docs/0.20.0/">latest stable documentation</a>?</p>
      

      <div class="row">
        <div class="col-md-9 doc-content">
          <p>
            <a class="btn btn-default btn-xs visible-xs-inline-block visible-sm-inline-block" href="#toc">Table of Contents</a>
          </p>
          <!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements.  See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership.  The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License.  You may obtain a copy of the License at
  ~
  ~   http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied.  See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<h1 id="apache-druid-incubating-api-reference">Apache Druid (incubating) API Reference</h1>

<p>This page documents all of the API endpoints for each Druid service type.</p>

<h2 id="table-of-contents">Table of Contents</h2>

<ul>
<li><a href="#common">Common</a></li>
<li><a href="#master-server">Master Server</a>

<ul>
<li><a href="#coordinator">Coordinator</a></li>
<li><a href="#overlord">Overlord</a></li>
</ul></li>
<li><a href="#data-server">Data Server</a>

<ul>
<li><a href="#middlemanager">MiddleManager</a></li>
<li><a href="#peon">Peon</a></li>
<li><a href="#historical">Historical</a></li>
</ul></li>
<li><a href="#query-server">Query Server</a>

<ul>
<li><a href="#broker">Broker</a></li>
</ul></li>
</ul>

<h2 id="common">Common</h2>

<p>The following endpoints are supported by all processes.</p>

<h3 id="process-information">Process information</h3>

<h4 id="get">GET</h4>

<ul>
<li><code>/status</code></li>
</ul>

<p>Returns the Druid version, loaded extensions, memory used, total memory and other useful information about the process.</p>

<ul>
<li><code>/status/health</code></li>
</ul>

<p>An endpoint that always returns a boolean &quot;true&quot; value with a 200 OK response, useful for automated health checks.</p>

<ul>
<li><code>/status/properties</code></li>
</ul>

<p>Returns the current configuration properties of the process.</p>

<h2 id="master-server">Master Server</h2>

<p>This section documents the API endpoints for the processes that reside on Master servers (Coordinators and Overlords) in the suggested <a href="../design/processes.html#server-types">three-server configuration</a>.</p>

<h3 id="coordinator">Coordinator</h3>

<h4 id="leadership">Leadership</h4>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/coordinator/v1/leader</code></li>
</ul>

<p>Returns the current leader Coordinator of the cluster.</p>

<ul>
<li><code>/druid/coordinator/v1/isLeader</code></li>
</ul>

<p>Returns a JSON object with field &quot;leader&quot;, either true or false, indicating if this server is the current leader
Coordinator of the cluster. In addition, returns HTTP 200 if the server is the current leader and HTTP 404 if not.
This is suitable for use as a load balancer status check if you only want the active leader to be considered in-service
at the load balancer.</p>

<h4 id="segment-loading">Segment Loading</h4>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/coordinator/v1/loadstatus</code></li>
</ul>

<p>Returns the percentage of segments actually loaded in the cluster versus segments that should be loaded in the cluster.</p>

<ul>
<li><code>/druid/coordinator/v1/loadstatus?simple</code></li>
</ul>

<p>Returns the number of segments left to load until segments that should be loaded in the cluster are available for queries. This does not include replication.</p>

<ul>
<li><code>/druid/coordinator/v1/loadstatus?full</code></li>
</ul>

<p>Returns the number of segments left to load in each tier until segments that should be loaded in the cluster are all available. This includes replication.</p>

<ul>
<li><code>/druid/coordinator/v1/loadqueue</code></li>
</ul>

<p>Returns the ids of segments to load and drop for each Historical process.</p>

<ul>
<li><code>/druid/coordinator/v1/loadqueue?simple</code></li>
</ul>

<p>Returns the number of segments to load and drop, as well as the total segment load and drop size in bytes for each Historical process.</p>

<ul>
<li><code>/druid/coordinator/v1/loadqueue?full</code></li>
</ul>

<p>Returns the serialized JSON of segments to load and drop for each Historical process.</p>

<h4 id="metadata-store-information">Metadata store information</h4>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/coordinator/v1/metadata/datasources</code></li>
</ul>

<p>Returns a list of the names of enabled datasources in the cluster.</p>

<ul>
<li><code>/druid/coordinator/v1/metadata/datasources?includeDisabled</code></li>
</ul>

<p>Returns a list of the names of enabled and disabled datasources in the cluster.</p>

<ul>
<li><code>/druid/coordinator/v1/metadata/datasources?full</code></li>
</ul>

<p>Returns a list of all enabled datasources with all metadata about those datasources as stored in the metadata store.</p>

<ul>
<li><code>/druid/coordinator/v1/metadata/datasources/{dataSourceName}</code></li>
</ul>

<p>Returns full metadata for a datasource as stored in the metadata store.</p>

<ul>
<li><code>/druid/coordinator/v1/metadata/datasources/{dataSourceName}/segments</code></li>
</ul>

<p>Returns a list of all segments for a datasource as stored in the metadata store.</p>

<ul>
<li><code>/druid/coordinator/v1/metadata/datasources/{dataSourceName}/segments?full</code></li>
</ul>

<p>Returns a list of all segments for a datasource with the full segment metadata as stored in the metadata store.</p>

<ul>
<li><code>/druid/coordinator/v1/metadata/datasources/{dataSourceName}/segments/{segmentId}</code></li>
</ul>

<p>Returns full segment metadata for a specific segment as stored in the metadata store.</p>

<h5 id="post">POST</h5>

<ul>
<li><code>/druid/coordinator/v1/metadata/datasources/{dataSourceName}/segments</code></li>
</ul>

<p>Returns a list of all segments, overlapping with any of given intervals,  for a datasource as stored in the metadata store. Request body is array of string IS0 8601 intervals like [interval1, interval2,...] for example [&quot;2012-01-01T00:00:00.000/2012-01-03T00:00:00.000&quot;, &quot;2012-01-05T00:00:00.000/2012-01-07T00:00:00.000&quot;]</p>

<ul>
<li><code>/druid/coordinator/v1/metadata/datasources/{dataSourceName}/segments?full</code></li>
</ul>

<p>Returns a list of all segments, overlapping with any of given intervals, for a datasource with the full segment metadata as stored in the metadata store. Request body is array of string ISO 8601 intervals like [interval1, interval2,...] for example [&quot;2012-01-01T00:00:00.000/2012-01-03T00:00:00.000&quot;, &quot;2012-01-05T00:00:00.000/2012-01-07T00:00:00.000&quot;]</p>

<h4 id="datasources">Datasources</h4>

<p>Note that all <em>interval</em> URL parameters are ISO 8601 strings delimited by a <code>_</code> instead of a <code>/</code> 
(e.g., 2016-06-27_2016-06-28).</p>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/coordinator/v1/datasources</code></li>
</ul>

<p>Returns a list of datasource names found in the cluster.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources?simple</code></li>
</ul>

<p>Returns a list of JSON objects containing the name and properties of datasources found in the cluster.  Properties include segment count, total segment byte size, minTime, and maxTime.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources?full</code></li>
</ul>

<p>Returns a list of datasource names found in the cluster with all metadata about those datasources.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}</code></li>
</ul>

<p>Returns a JSON object containing the name and properties of a datasource. Properties include segment count, total segment byte size, minTime, and maxTime.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}?full</code></li>
</ul>

<p>Returns full metadata for a datasource .</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}/intervals</code></li>
</ul>

<p>Returns a set of segment intervals.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}/intervals?simple</code></li>
</ul>

<p>Returns a map of an interval to a JSON object containing the total byte size of segments and number of segments for that interval.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}/intervals?full</code></li>
</ul>

<p>Returns a map of an interval to a map of segment metadata to a set of server names that contain the segment for that interval.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}/intervals/{interval}</code></li>
</ul>

<p>Returns a set of segment ids for an interval.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}/intervals/{interval}?simple</code></li>
</ul>

<p>Returns a map of segment intervals contained within the specified interval to a JSON object containing the total byte size of segments and number of segments for an interval.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}/intervals/{interval}?full</code></li>
</ul>

<p>Returns a map of segment intervals contained within the specified interval to a map of segment metadata to a set of server names that contain the segment for an interval.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}/intervals/{interval}/serverview</code></li>
</ul>

<p>Returns a map of segment intervals contained within the specified interval to information about the servers that contain the segment for an interval.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}/segments</code></li>
</ul>

<p>Returns a list of all segments for a datasource in the cluster.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}/segments?full</code></li>
</ul>

<p>Returns a list of all segments for a datasource in the cluster with the full segment metadata.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}/segments/{segmentId}</code></li>
</ul>

<p>Returns full segment metadata for a specific segment in the cluster.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}/tiers</code></li>
</ul>

<p>Return the tiers that a datasource exists in.</p>

<h5 id="post">POST</h5>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}</code></li>
</ul>

<p>Enables all segments of datasource which are not overshadowed by others.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}/segments/{segmentId}</code></li>
</ul>

<p>Enables a segment of a datasource.</p>

<h5 id="delete">DELETE<a name="coordinator-delete"></a></h5>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}</code></li>
</ul>

<p>Disables a datasource.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}/intervals/{interval}</code></li>
<li><code>@Deprecated. /druid/coordinator/v1/datasources/{dataSourceName}?kill=true&amp;interval={myInterval}</code></li>
</ul>

<p>Runs a <a href="../ingestion/tasks.html">Kill task</a> for a given interval and datasource.</p>

<ul>
<li><code>/druid/coordinator/v1/datasources/{dataSourceName}/segments/{segmentId}</code></li>
</ul>

<p>Disables a segment.</p>

<h4 id="retention-rules">Retention Rules</h4>

<p>Note that all <em>interval</em> URL parameters are ISO 8601 strings delimited by a <code>_</code> instead of a <code>/</code> 
(e.g., 2016-06-27_2016-06-28).</p>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/coordinator/v1/rules</code></li>
</ul>

<p>Returns all rules as JSON objects for all datasources in the cluster including the default datasource.</p>

<ul>
<li><code>/druid/coordinator/v1/rules/{dataSourceName}</code></li>
</ul>

<p>Returns all rules for a specified datasource.</p>

<ul>
<li><code>/druid/coordinator/v1/rules/{dataSourceName}?full</code></li>
</ul>

<p>Returns all rules for a specified datasource and includes default datasource.</p>

<ul>
<li><code>/druid/coordinator/v1/rules/history?interval=&lt;interval&gt;</code></li>
</ul>

<p>Returns audit history of rules for all datasources. default value of interval can be specified by setting <code>druid.audit.manager.auditHistoryMillis</code> (1 week if not configured) in Coordinator runtime.properties</p>

<ul>
<li><code>/druid/coordinator/v1/rules/history?count=&lt;n&gt;</code></li>
</ul>

<p>Returns last <n> entries of audit history of rules for all datasources.</p>

<ul>
<li><code>/druid/coordinator/v1/rules/{dataSourceName}/history?interval=&lt;interval&gt;</code></li>
</ul>

<p>Returns audit history of rules for a specified datasource. default value of interval can be specified by setting <code>druid.audit.manager.auditHistoryMillis</code> (1 week if not configured) in Coordinator runtime.properties</p>

<ul>
<li><code>/druid/coordinator/v1/rules/{dataSourceName}/history?count=&lt;n&gt;</code></li>
</ul>

<p>Returns last <n> entries of audit history of rules for a specified datasource.</p>

<h5 id="post">POST</h5>

<ul>
<li><code>/druid/coordinator/v1/rules/{dataSourceName}</code></li>
</ul>

<p>POST with a list of rules in JSON form to update rules.</p>

<p>Optional Header Parameters for auditing the config change can also be specified.</p>

<table><thead>
<tr>
<th>Header Param Name</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead><tbody>
<tr>
<td><code>X-Druid-Author</code></td>
<td>author making the config change</td>
<td>&quot;&quot;</td>
</tr>
<tr>
<td><code>X-Druid-Comment</code></td>
<td>comment describing the change being done</td>
<td>&quot;&quot;</td>
</tr>
</tbody></table>

<h4 id="intervals">Intervals</h4>

<p>Note that all <em>interval</em> URL parameters are ISO 8601 strings delimited by a <code>_</code> instead of a <code>/</code> 
(e.g., 2016-06-27_2016-06-28).</p>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/coordinator/v1/intervals</code></li>
</ul>

<p>Returns all intervals for all datasources with total size and count.</p>

<ul>
<li><code>/druid/coordinator/v1/intervals/{interval}</code></li>
</ul>

<p>Returns aggregated total size and count for all intervals that intersect given isointerval.</p>

<ul>
<li><code>/druid/coordinator/v1/intervals/{interval}?simple</code></li>
</ul>

<p>Returns total size and count for each interval within given isointerval.</p>

<ul>
<li><code>/druid/coordinator/v1/intervals/{interval}?full</code></li>
</ul>

<p>Returns total size and count for each datasource for each interval within given isointerval.</p>

<h4 id="compaction-configuration">Compaction Configuration</h4>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/coordinator/v1/config/compaction</code></li>
</ul>

<p>Returns all compaction configs.</p>

<ul>
<li><code>/druid/coordinator/v1/config/compaction/{dataSource}</code></li>
</ul>

<p>Returns a compaction config of a dataSource.</p>

<h5 id="post">POST</h5>

<ul>
<li><code>/druid/coordinator/v1/config/compaction/taskslots?ratio={someRatio}&amp;max={someMaxSlots}</code></li>
</ul>

<p>Update the capacity for compaction tasks. <code>ratio</code> and <code>max</code> are used to limit the max number of compaction tasks.
They mean the ratio of the total task slots to the copmaction task slots and the maximum number of task slots for compaction tasks, respectively.
The actual max number of compaction tasks is <code>min(max, ratio * total task slots)</code>.
Note that <code>ratio</code> and <code>max</code> are optional and can be omitted. If they are omitted, default values (0.1 and unbounded)
will be set for them.</p>

<ul>
<li><code>/druid/coordinator/v1/config/compaction</code></li>
</ul>

<p>Creates or updates the compaction config for a dataSource.
See <a href="../configuration/index.html#compaction-dynamic-configuration">Compaction Configuration</a> for configuration details.</p>

<h5 id="delete">DELETE</h5>

<ul>
<li><code>/druid/coordinator/v1/config/compaction/{dataSource}</code></li>
</ul>

<p>Removes the compaction config for a dataSource.</p>

<h4 id="server-information">Server Information</h4>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/coordinator/v1/servers</code></li>
</ul>

<p>Returns a list of servers URLs using the format <code>{hostname}:{port}</code>. Note that
processes that run with different types will appear multiple times with different
ports.</p>

<ul>
<li><code>/druid/coordinator/v1/servers?simple</code></li>
</ul>

<p>Returns a list of server data objects in which each object has the following keys:
* <code>host</code>: host URL include (<code>{hostname}:{port}</code>)
* <code>type</code>: process type (<code>indexer-executor</code>, <code>historical</code>)
* <code>currSize</code>: storage size currently used
* <code>maxSize</code>: maximum storage size
* <code>priority</code>
* <code>tier</code></p>

<h3 id="overlord">Overlord</h3>

<h4 id="leadership">Leadership</h4>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/indexer/v1/leader</code> </li>
</ul>

<p>Returns the current leader Overlord of the cluster. If you have multiple Overlords, just one is leading at any given time. The others are on standby.</p>

<ul>
<li><code>/druid/indexer/v1/isLeader</code></li>
</ul>

<p>This returns a JSON object with field &quot;leader&quot;, either true or false. In addition, this call returns HTTP 200 if the
server is the current leader and HTTP 404 if not. This is suitable for use as a load balancer status check if you
only want the active leader to be considered in-service at the load balancer.</p>

<h4 id="tasks">Tasks<a name="overlord-tasks"></a></h4>

<p>Note that all <em>interval</em> URL parameters are ISO 8601 strings delimited by a <code>_</code> instead of a <code>/</code> 
(e.g., 2016-06-27_2016-06-28).</p>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/indexer/v1/tasks</code></li>
</ul>

<p>Retrieve list of tasks. Accepts query string parameters <code>state</code>, <code>datasource</code>, <code>createdTimeInterval</code>, <code>max</code>, and <code>type</code>.</p>

<table><thead>
<tr>
<th>Query Parameter</th>
<th>Description</th>
</tr>
</thead><tbody>
<tr>
<td><code>state</code></td>
<td>filter list of tasks by task state, valid options are <code>running</code>, <code>complete</code>, <code>waiting</code>, and <code>pending</code>.</td>
</tr>
<tr>
<td><code>datasource</code></td>
<td>return tasks filtered by Druid datasource.</td>
</tr>
<tr>
<td><code>createdTimeInterval</code></td>
<td>return tasks created within the specified interval.</td>
</tr>
<tr>
<td><code>max</code></td>
<td>maximum number of <code>&quot;complete&quot;</code> tasks to return. Only applies when <code>state</code> is set to <code>&quot;complete&quot;</code>.</td>
</tr>
<tr>
<td><code>type</code></td>
<td>filter tasks by task type. See <a href="../ingestion/tasks.html">task documentation</a> for more details.</td>
</tr>
</tbody></table>

<ul>
<li><code>/druid/indexer/v1/completeTasks</code></li>
</ul>

<p>Retrieve list of complete tasks. Equivalent to <code>/druid/indexer/v1/tasks?state=complete</code>.</p>

<ul>
<li><code>/druid/indexer/v1/runningTasks</code></li>
</ul>

<p>Retrieve list of running tasks. Equivalent to <code>/druid/indexer/v1/tasks?state=running</code>.</p>

<ul>
<li><code>/druid/indexer/v1/waitingTasks</code></li>
</ul>

<p>Retrieve list of waiting tasks. Equivalent to <code>/druid/indexer/v1/tasks?state=waiting</code>.</p>

<ul>
<li><code>/druid/indexer/v1/pendingTasks</code></li>
</ul>

<p>Retrieve list of pending tasks. Equivalent to <code>/druid/indexer/v1/tasks?state=pending</code>.</p>

<ul>
<li><code>/druid/indexer/v1/task/{taskId}</code></li>
</ul>

<p>Retrieve the &#39;payload&#39; of a task.</p>

<ul>
<li><code>/druid/indexer/v1/task/{taskId}/status</code></li>
</ul>

<p>Retrieve the status of a task.</p>

<ul>
<li><code>/druid/indexer/v1/task/{taskId}/segments</code></li>
</ul>

<p>Retrieve information about the segments of a task.</p>

<div class="note caution">
This API is deprecated and will be removed in future releases.
</div>

<ul>
<li><code>/druid/indexer/v1/task/{taskId}/reports</code></li>
</ul>

<p>Retrieve a <a href="../ingestion/reports.html">task completion report</a> for a task. Only works for completed tasks.</p>

<h5 id="post">POST</h5>

<ul>
<li><code>/druid/indexer/v1/task</code> </li>
</ul>

<p>Endpoint for submitting tasks and supervisor specs to the Overlord. Returns the taskId of the submitted task.</p>

<ul>
<li><code>/druid/indexer/v1/task/{taskId}/shutdown</code></li>
</ul>

<p>Shuts down a task.</p>

<ul>
<li><code>/druid/indexer/v1/datasources/{dataSource}/shutdownAllTasks</code></li>
</ul>

<p>Shuts down all tasks for a dataSource.</p>

<ul>
<li><code>/druid/indexer/v1/taskStatus</code></li>
</ul>

<p>Retrieve list of task status objects for list of task id strings in request body.</p>

<h5 id="delete">DELETE</h5>

<ul>
<li><code>/druid/indexer/v1/pendingSegments/{dataSource}</code></li>
</ul>

<p>Manually clean up pending segments table in metadata storage for <code>datasource</code>. Returns a JSON object response with 
<code>numDeleted</code> and count of rows deleted from the pending segments table. This API is used by the 
<code>druid.coordinator.kill.pendingSegments.on</code> <a href="../configuration/index.html#coordinator-operation">coordinator setting</a>
which automates this operation to perform periodically.</p>

<h4 id="supervisors">Supervisors</h4>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/indexer/v1/supervisor</code></li>
</ul>

<p>Returns a list of strings of the currently active supervisor ids.</p>

<ul>
<li><code>/druid/indexer/v1/supervisor?full</code></li>
</ul>

<p>Returns a list of objects of the currently active supervisors.</p>

<table><thead>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead><tbody>
<tr>
<td><code>id</code></td>
<td>String</td>
<td>supervisor unique identifier</td>
</tr>
<tr>
<td><code>spec</code></td>
<td>SupervisorSpec</td>
<td>json specification of supervisor (See Supervisor Configuration for details)</td>
</tr>
</tbody></table>

<ul>
<li><code>/druid/indexer/v1/supervisor/&lt;supervisorId&gt;</code></li>
</ul>

<p>Returns the current spec for the supervisor with the provided ID.</p>

<ul>
<li><code>/druid/indexer/v1/supervisor/&lt;supervisorId&gt;/status</code></li>
</ul>

<p>Returns the current status of the supervisor with the provided ID.</p>

<ul>
<li><code>/druid/indexer/v1/supervisor/history</code></li>
</ul>

<p>Returns an audit history of specs for all supervisors (current and past).</p>

<ul>
<li><code>/druid/indexer/v1/supervisor/&lt;supervisorId&gt;/history</code></li>
</ul>

<p>Returns an audit history of specs for the supervisor with the provided ID.</p>

<h5 id="post">POST</h5>

<ul>
<li><code>/druid/indexer/v1/supervisor</code></li>
</ul>

<p>Create a new supervisor or update an existing one.</p>

<ul>
<li><code>/druid/indexer/v1/supervisor/&lt;supervisorId&gt;/suspend</code></li>
</ul>

<p>Suspend the current running supervisor of the provided ID. Responds with updated SupervisorSpec.</p>

<ul>
<li><code>/druid/indexer/v1/supervisor/suspendAll</code></li>
</ul>

<p>Suspend all supervisors at once.</p>

<ul>
<li><code>/druid/indexer/v1/supervisor/&lt;supervisorId&gt;/resume</code></li>
</ul>

<p>Resume indexing tasks for a supervisor. Responds with updated SupervisorSpec.</p>

<ul>
<li><code>/druid/indexer/v1/supervisor/resumeAll</code></li>
</ul>

<p>Resume all supervisors at once.</p>

<ul>
<li><code>/druid/indexer/v1/supervisor/&lt;supervisorId&gt;/reset</code></li>
</ul>

<p>Reset the specified supervisor.</p>

<ul>
<li><code>/druid/indexer/v1/supervisor/&lt;supervisorId&gt;/terminate</code></li>
</ul>

<p>Terminate a supervisor of the provided ID.</p>

<ul>
<li><code>/druid/indexer/v1/supervisor/terminateAll</code></li>
</ul>

<p>Terminate all supervisors at once.</p>

<ul>
<li><code>/druid/indexer/v1/supervisor/&lt;supervisorId&gt;/shutdown</code></li>
</ul>

<p>Shutdown a supervisor.</p>

<div class="note caution">
This API is deprecated and will be removed in future releases.
Please use the equivalent 'terminate' instead.
</div>

<h4 id="dynamic-configuration">Dynamic Configuration</h4>

<p>See <a href="../configuration/index.html#overlord-dynamic-configuration">Overlord Dynamic Configuration</a> for details. </p>

<p>Note that all <em>interval</em> URL parameters are ISO 8601 strings delimited by a <code>_</code> instead of a <code>/</code> 
(e.g., 2016-06-27_2016-06-28).</p>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/indexer/v1/worker</code></li>
</ul>

<p>Retreives current overlord dynamic configuration. </p>

<ul>
<li><code>/druid/indexer/v1/worker/history?interval={interval}&amp;counter={count}</code></li>
</ul>

<p>Retrieves history of changes to overlord dynamic configuration. Accepts <code>interval</code> and  <code>count</code> query string parameters 
to filter by interval and limit the number of results respectively.</p>

<ul>
<li><code>/druid/indexer/v1/scaling</code></li>
</ul>

<p>Retrieves overlord scaling events if auto-scaling runners are in use.</p>

<h5 id="post">POST</h5>

<ul>
<li>/druid/indexer/v1/worker</li>
</ul>

<p>Update overlord dynamic worker configuration.</p>

<h2 id="data-server">Data Server</h2>

<p>This section documents the API endpoints for the processes that reside on Data servers (MiddleManagers/Peons and Historicals) 
in the suggested <a href="../design/processes.html#server-types">three-server configuration</a>.</p>

<h3 id="middlemanager">MiddleManager</h3>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/worker/v1/enabled</code></li>
</ul>

<p>Check whether a MiddleManager is in an enabled or disabled state. Returns JSON object keyed by the combined <code>druid.host</code> 
and <code>druid.port</code> with the boolean state as the value.</p>
<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span><span class="nt">&quot;localhost:8091&quot;</span><span class="p">:</span><span class="kc">true</span><span class="p">}</span>
</code></pre></div>
<ul>
<li><code>/druid/worker/v1/tasks</code></li>
</ul>

<p>Retrieve a list of active tasks being run on MiddleManager. Returns JSON list of taskid strings.  Normal usage should 
prefer to use the <code>/druid/indexer/v1/tasks</code> <a href="#overlord">Overlord API</a> or one of it&#39;s task state specific variants instead.</p>
<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">[</span><span class="s2">&quot;index_wikiticker_2019-02-11T02:20:15.316Z&quot;</span><span class="p">]</span>
</code></pre></div>
<ul>
<li><code>/druid/worker/v1/task/{taskid}/log</code> </li>
</ul>

<p>Retrieve task log output stream by task id. Normal usage should prefer to use the <code>/druid/indexer/v1/task/{taskId}/log</code>
<a href="#overlord">Overlord API</a> instead.</p>

<h5 id="post">POST</h5>

<ul>
<li><code>/druid/worker/v1/disable</code></li>
</ul>

<p>&#39;Disable&#39; a MiddleManager, causing it to stop accepting new tasks but complete all existing tasks. Returns JSON  object 
keyed by the combined <code>druid.host</code> and <code>druid.port</code>:</p>
<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span><span class="nt">&quot;localhost:8091&quot;</span><span class="p">:</span><span class="s2">&quot;disabled&quot;</span><span class="p">}</span>
</code></pre></div>
<ul>
<li><code>/druid/worker/v1/enable</code></li>
</ul>

<p>&#39;Enable&#39; a MiddleManager, allowing it to accept new tasks again if it was previously disabled. Returns JSON  object 
keyed by the combined <code>druid.host</code> and <code>druid.port</code>:</p>
<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span><span class="nt">&quot;localhost:8091&quot;</span><span class="p">:</span><span class="s2">&quot;enabled&quot;</span><span class="p">}</span>
</code></pre></div>
<ul>
<li><code>/druid/worker/v1/task/{taskid}/shutdown</code></li>
</ul>

<p>Shutdown a running task by <code>taskid</code>. Normal usage should prefer to use the <code>/druid/indexer/v1/task/{taskId}/shutdown</code> 
<a href="#overlord">Overlord API</a> instead. Returns JSON:</p>
<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span><span class="nt">&quot;task&quot;</span><span class="p">:</span><span class="s2">&quot;index_kafka_wikiticker_f7011f8ffba384b_fpeclode&quot;</span><span class="p">}</span>
</code></pre></div>
<h3 id="peon">Peon</h3>

<h4 id="get">GET</h4>

<ul>
<li><code>/druid/worker/v1/chat/{taskId}/rowStats</code></li>
</ul>

<p>Retrieve a live row stats report from a Peon. See <a href="../ingestion/reports.html">task reports</a> for more details.</p>

<ul>
<li><code>/druid/worker/v1/chat/{taskId}/unparseableEvents</code></li>
</ul>

<p>Retrieve an unparseable events report from a Peon. See <a href="../ingestion/reports.html">task reports</a> for more details.</p>

<h3 id="historical">Historical</h3>

<h4 id="segment-loading">Segment Loading</h4>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/historical/v1/loadstatus</code></li>
</ul>

<p>Returns JSON of the form <code>{&quot;cacheInitialized&quot;:&lt;value&gt;}</code>, where value is either <code>true</code> or <code>false</code> indicating if all
segments in the local cache have been loaded. This can be used to know when a Historical process is ready
to be queried after a restart.</p>

<ul>
<li><code>/druid/historical/v1/readiness</code></li>
</ul>

<p>Similar to <code>/druid/historical/v1/loadstatus</code>, but instead of returning JSON with a flag, responses 200 OK if segments
in the local cache have been loaded, and 503 SERVICE UNAVAILABLE, if they haven&#39;t.</p>

<h2 id="query-server">Query Server</h2>

<p>This section documents the API endpoints for the processes that reside on Query servers (Brokers) in the suggested <a href="../design/processes.html#server-types">three-server configuration</a>.</p>

<h3 id="broker">Broker</h3>

<h4 id="datasource-information">Datasource Information</h4>

<p>Note that all <em>interval</em> URL parameters are ISO 8601 strings delimited by a <code>_</code> instead of a <code>/</code> 
(e.g., 2016-06-27_2016-06-28).</p>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/v2/datasources</code></li>
</ul>

<p>Returns a list of queryable datasources.</p>

<ul>
<li><code>/druid/v2/datasources/{dataSourceName}</code></li>
</ul>

<p>Returns the dimensions and metrics of the datasource. Optionally, you can provide request parameter &quot;full&quot; to get list of served intervals with dimensions and metrics being served for those intervals. You can also provide request param &quot;interval&quot; explicitly to refer to a particular interval.</p>

<p>If no interval is specified, a default interval spanning a configurable period before the current time will be used. The default duration of this interval is specified in ISO 8601 duration format via:</p>

<p>druid.query.segmentMetadata.defaultHistory</p>

<ul>
<li><code>/druid/v2/datasources/{dataSourceName}/dimensions</code></li>
</ul>

<p>Returns the dimensions of the datasource.</p>

<div class="note caution">
This API is deprecated and will be removed in future releases. Please use <a href="../querying/segmentmetadataquery.html">SegmentMetadataQuery</a> instead
which provides more comprehensive information and supports all dataSource types including streaming dataSources. It's also encouraged to use [INFORMATION_SCHEMA tables](../querying/sql.html#retrieving-metadata)
if you're using SQL.
</div>

<ul>
<li><code>/druid/v2/datasources/{dataSourceName}/metrics</code></li>
</ul>

<p>Returns the metrics of the datasource.</p>

<div class="note caution">
This API is deprecated and will be removed in future releases. Please use <a href="../querying/segmentmetadataquery.html">SegmentMetadataQuery</a> instead
which provides more comprehensive information and supports all dataSource types including streaming dataSources. It's also encouraged to use [INFORMATION_SCHEMA tables](../querying/sql.html#retrieving-metadata)
if you're using SQL.
</div>

<ul>
<li><code>/druid/v2/datasources/{dataSourceName}/candidates?intervals={comma-separated-intervals}&amp;numCandidates={numCandidates}</code></li>
</ul>

<p>Returns segment information lists including server locations for the given datasource and intervals. If &quot;numCandidates&quot; is not specified, it will return all servers for each interval.</p>

<h4 id="load-status">Load Status</h4>

<h5 id="get">GET</h5>

<ul>
<li><code>/druid/broker/v1/loadstatus</code></li>
</ul>

<p>Returns a flag indicating if the Broker knows about all segments in Zookeeper. This can be used to know when a Broker process is ready to be queried after a restart.</p>

<h4 id="queries">Queries</h4>

<h5 id="post">POST</h5>

<ul>
<li><code>/druid/v2/</code></li>
</ul>

<p>The endpoint for submitting queries. Accepts an option <code>?pretty</code> that pretty prints the results.</p>

<ul>
<li><code>/druid/v2/candidates/</code></li>
</ul>

<p>Returns segment information lists including server locations for the given query..</p>

        </div>
        <div class="col-md-3">
          <div class="searchbox">
            <gcse:searchbox-only></gcse:searchbox-only>
          </div>
          <div id="toc" class="nav toc hidden-print">
          </div>
        </div>
      </div>
    </div>

    <!-- Start page_footer include -->
<footer class="druid-footer">
<div class="container">
  <div class="text-center">
    <p>
    <a href="/technology">Technology</a>&ensp;·&ensp;
    <a href="/use-cases">Use Cases</a>&ensp;·&ensp;
    <a href="/druid-powered">Powered by Druid</a>&ensp;·&ensp;
    <a href="/docs/latest/">Docs</a>&ensp;·&ensp;
    <a href="/community/">Community</a>&ensp;·&ensp;
    <a href="/downloads.html">Download</a>&ensp;·&ensp;
    <a href="/faq">FAQ</a>
    </p>
  </div>
  <div class="text-center">
    <a title="Join the user group" href="https://groups.google.com/forum/#!forum/druid-user" target="_blank"><span class="fa fa-comments"></span></a>&ensp;·&ensp;
    <a title="Follow Druid" href="https://twitter.com/druidio" target="_blank"><span class="fab fa-twitter"></span></a>&ensp;·&ensp;
    <a title="GitHub" href="https://github.com/apache/druid" target="_blank"><span class="fab fa-github"></span></a>
  </div>
  <div class="text-center license">
    Copyright © 2020 <a href="https://www.apache.org/" target="_blank">Apache Software Foundation</a>.<br>
    Except where otherwise noted, licensed under <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.<br>
    Apache Druid, Druid, and the Druid logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.
  </div>
</div>
</footer>

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'UA-131010415-1');
</script>
<script>
  function trackDownload(type, url) {
    ga('send', 'event', 'download', type, url);
  }
</script>
<script src="//code.jquery.com/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="/assets/js/druid.js"></script>
<!-- stop page_footer include -->


    <script>
    $(function() {
      $(".toc").load("/docs/0.14.0-incubating/toc.html");

      // There is no way to tell when .gsc-input will be async loaded into the page so just try to set a placeholder until it works
      var tries = 0;
      var timer = setInterval(function() {
        tries++;
        if (tries > 300) clearInterval(timer);
        var searchInput = $('input.gsc-input');
        if (searchInput.length) {
          searchInput.attr('placeholder', 'Search');
          clearInterval(timer);
        }
      }, 100);
    });
    </script>
  </body>
</html>
