# DBLab (Database Lab) API Documentation > DBLab enables 🖖 DB branching and ⚡️ thin cloning for any Postgres database and empowers DB testing in CI/CD. This optimizes database-related costs while improving time-to-market and software quality. ## API Reference - [DBLab instance status and detailed information](https://dblab.readme.io/reference/status.md): Retrieves detailed information about the DBLab instance: status, version, clones, snapshots, etc. - [Trigger full data refresh](https://dblab.readme.io/reference/refresh.md): Initiates a full data refresh. - [Data refresh status](https://dblab.readme.io/reference/instanceretrieval.md): Report a status of the data refresh subsystem (also known as "data retrieval"): timestamps of the previous and next refresh runs, status, messages. - [Service health check](https://dblab.readme.io/reference/healthz.md): Check the overall health and availability of the API system. This endpoint does not require the 'Verification-Token' header. - [List all snapshots](https://dblab.readme.io/reference/snapshots-1.md): Return a list of all available snapshots. - [Create a snapshot](https://dblab.readme.io/reference/post_snapshot.md): Create a new snapshot from the current state of the selected pool. This snapshot can later be used to create clones or new branches. - [Delete a snapshot](https://dblab.readme.io/reference/delete_snapshot-id.md): Permanently delete the specified snapshot. If the snapshot has dependent clones or datasets, `force=true` can be provided as a query parameter. - [Retrieve a snapshot](https://dblab.readme.io/reference/get_branch-snapshot-id.md): Retrieves the information for the specified snapshot. - [List all clones](https://dblab.readme.io/reference/get_clones.md): Return a list of all available clones (database endpoints). - [Create a clone](https://dblab.readme.io/reference/createclone.md) - [Retrieve a clone](https://dblab.readme.io/reference/getclone.md): Retrieves the information for the specified clone. - [Delete a clone](https://dblab.readme.io/reference/deleteclone.md): Permanently delete the specified clone. It cannot be undone. - [Update a clone](https://dblab.readme.io/reference/updateclone.md): Updates the specified clone by setting the values of the parameters passed. Currently, only one paramater is supported: 'protected'. - [Reset a clone](https://dblab.readme.io/reference/resetclone.md): Reset the specified clone to a previously stored state. This can be done by specifying a particular snapshot ID or using the 'latest' flag. All changes made after the snapshot are discarded during the reset, unless those changes were preserved in a snapshot. All database connections will be reset, requiring users and applications to reconnect. The duration of the reset operation is comparable to the creation of a new clone. However, unlike creating a new clone, the reset operation retains the database credentials and does not change the port. Consequently, users and applications can continue to use the same database credentials post-reset, though reconnection will be necessary. Please note that any unsaved changes will be irretrievably lost during this operation, so ensure necessary data is backed up in a snapshot prior to resetting the clone. - [List all branches](https://dblab.readme.io/reference/get_branches.md): Return a list of all available branches (named pointers to snapshots). - [Create a branch](https://dblab.readme.io/reference/post_branch.md) - [Delete a branch](https://dblab.readme.io/reference/delete_branch-branchname.md): Permanently delete the specified branch. It cannot be undone. - [Retrieve a branch log](https://dblab.readme.io/reference/get_branch-branchname-log.md): Retrieve a log of the specified branch (history of snapshots). - [Create a snapshot](https://dblab.readme.io/reference/post_branch-snapshot.md): Create a new snapshot using the specified clone. After a snapshot has been created, the original clone can be deleted in order to free up compute resources, if necessary. The snapshot created by this endpoint can be used later to create one or more new clones. - [Get config](https://dblab.readme.io/reference/getconfig.md): Retrieve the DBLab configuration. All sensitive values are masked. Only limited set of configuration parameters is returned – only those that can be changed via API (unless reconfiguration via API is disabled by admin). The result is provided in JSON format. - [Set config](https://dblab.readme.io/reference/setconfig.md): Set specific configurations for the DBLab instance using this endpoint. The returned configuration parameters are limited to those that can be modified via the API (unless the API-based reconfiguration has been disabled by an administrator). The result will be provided in JSON format. - [Get full config (YAML)](https://dblab.readme.io/reference/getconfigyaml.md): Retrieve the DBLab configuration in YAML format. All sensitive values are masked. This method allows seeing the entire configuration file and can be helpful for reviewing configuration and setting up workflows to automate DBLab provisioning and configuration. - [Test source database](https://dblab.readme.io/reference/testdbconnection1.md) - [Test source database](https://dblab.readme.io/reference/testdbconnection2.md) - [Start observing](https://dblab.readme.io/reference/startobservation.md): [EXPERIMENTAL] Start an observation session for the specified clone. Observation sessions help detect dangerous (long-lasting, exclusive) locks in CI/CD pipelines. One of common scenarios is using observation sessions to test schema changes (DB migrations). - [Stop observing](https://dblab.readme.io/reference/stopobservation.md): [EXPERIMENTAL] Stop the previously started observation session. - [Get observation summary](https://dblab.readme.io/reference/summaryobservation.md): [EXPERIMENTAL] Collect the observation summary info. - [Download an observation artifact](https://dblab.readme.io/reference/downloadobservationartifact.md): [EXPERIMENTAL] Download an artifact for the specified clone and observation session.