---
title: "Status endpoint"
layout: default
canonical: "/puppetdb/latest/api/status/v1/status.html"
---

# Status endpoint

[curl]: ../curl.markdown#using-curl-from-localhost-non-sslhttp
[status-api]: https://puppet.com/docs/pe/latest/status_api.html

The `/status` endpoint implements the Puppet Labs Status API for coordinated
monitoring of Puppet Labs services. See the [central documentation][status-api]
for detailed information.

## `/status/v1/services/puppetdb-status`

This query endpoint will return status about the PuppetDB instance on a host.

### Response format

The response will be in `application/json`, and will return a JSON map like the
following:

    {
        "detail_level": "info",
         "service_status_version": 1,
         "service_version": "4.0.0-SNAPSHOT",
         "state": "running",
         "status": {
             "maintenance_mode?": false,
             "read_db_up?": true,
             "write_db_up?": true,
             "queue_depth": 0
         }
    }

* `detail_level`: info is currently the only level.
* `service_status_version`: version of the status API.
* `service_version`: version of PuppetDB.
* `state`: short description of PuppetDB's current state:
    * "starting" if PuppetDB is in maintenance mode.
    * "running" if not in maintenance mode and read and write databases are up.
    * "error" if the read or write databases are down.
* `status`:
    * `maintenance_mode?`: indicates whether PuppetDB is in maintenance mode.
    PuppetDB enters maintenance mode at startup and exits it after completing any
    pending migrations and initial data synchronization (when using HA).
    While in maintenance mode, PuppetDB will not respond to queries.
    * `read_db_up?`: indicates whether the read database is responding to queries.
    * `write_db_up?`: boolean indicating whether at least one write
      database is responding to queries.
    * `write_dbs_up?`: boolean indicating whether all of the write
      databases are responding to queries.
    * `write_dbs_up?`: map of database (string) names to `{"up?":
      boolean}` values indicating whether the database is responding
      to queries.  If there is only one write database, the name will
      be an empty string.
    * `queue_depth`: depth of the command queue. If the queue is not yet
      initialized, this field will be null.
