# Key-Value Store Documentation > Managed key-value storage for lists and values, accessible from Streams filters and a REST API. Used for watchlists, dedup keys, and counters that need to persist across blocks. Part of the Quicknode docs index: https://www.quicknode.com/docs/llms.txt - [Getting Started with Key-Value Store](https://www.quicknode.com/docs/key-value-store.md): Managed key-value storage for lists and values, accessible from Streams filters and a REST API. Used for watchlists, dedup keys, and counters that need to persist across blocks. - [/kv/rest/v1/lists/{key}/contains/{item} REST API Endpoint](https://www.quicknode.com/docs/key-value-store/rest-api/lists/check-list-for-item.md): Checks whether a specific item exists in a Key-Value Store list. Returns a boolean indicating membership. This is useful for external services that need to verify list membership outside of a Streams filter. Within Streams filters, use qnContainsListItems for batch membership checks, which is more efficient for checking multiple items at once. - [/kv/rest/v1/values/bulk REST API Endpoint](https://www.quicknode.com/docs/key-value-store/rest-api/values/bulk-update-values.md): Creates and/or deletes multiple Key-Value Store values in a single request. Provide addValues as an object of key-value pairs to create or overwrite, and deleteValues as an array of keys to remove. This is the most efficient way to manage multiple values at once, reducing the number of API calls needed for batch operations. - [DELETE /kv/rest/v1/lists/{key} REST API Endpoint](https://www.quicknode.com/docs/key-value-store/rest-api/lists/delete-list-by-key.md): Permanently deletes a Key-Value Store list and all of its items. This action cannot be undone. If you only need to remove specific items from the list, use the PATCH /kv/rest/v1/lists/{key} endpoint with removeItems or DELETE /kv/rest/v1/lists/{key}/items/{item} instead. - [DELETE /kv/rest/v1/lists/{key}/items/{item} REST API Endpoint](https://www.quicknode.com/docs/key-value-store/rest-api/lists/delete-list-item.md): Removes a specific item from a Key-Value Store list. The item is identified by its exact string value (case-sensitive). For removing multiple items at once, use the PATCH /kv/rest/v1/lists/{key} endpoint with the removeItems array instead. To delete the entire list, use DELETE /kv/rest/v1/lists/{key}. - [DELETE /kv/rest/v1/values/{key} REST API Endpoint](https://www.quicknode.com/docs/key-value-store/rest-api/values/delete-value.md): Permanently deletes a specific Key-Value Store value (key-value pair) by its key. This action cannot be undone. For deleting multiple values at once, use the POST /kv/rest/v1/values/bulk endpoint with the deleteValues array instead. - [GET /kv/rest/v1/lists REST API Endpoint](https://www.quicknode.com/docs/key-value-store/rest-api/lists/retrieve-lists.md): Retrieves the keys of all Key-Value Store lists in your account. Returns an array of list key names (not the list contents). Use this to discover which lists exist before retrieving specific list items with the GET /kv/rest/v1/lists/{key} endpoint. - [GET /kv/rest/v1/lists/{key} REST API Endpoint](https://www.quicknode.com/docs/key-value-store/rest-api/lists/retrieve-list-by-key.md): Retrieves all items from a specific Key-Value Store list by its key. Returns the complete array of string items stored in the list. Use this to inspect the current contents of a list, verify that items were added correctly, or export list data for external processing. - [GET /kv/rest/v1/values REST API Endpoint](https://www.quicknode.com/docs/key-value-store/rest-api/values/retrieve-values.md): Retrieves the keys of all Key-Value Store values in your account. Returns an array of key names (not the values). Use this to discover which values exist before retrieving specific values with the GET /kv/rest/v1/values/{key} endpoint. - [GET /kv/rest/v1/values/{key} REST API Endpoint](https://www.quicknode.com/docs/key-value-store/rest-api/values/retrieve-value.md): Retrieves a specific value from Key-Value Store by its key. Use this to read stored data points such as last-processed block numbers, cached values, or configuration data managed through the Key-Value Store. - [Key-Value Store REST API](https://www.quicknode.com/docs/key-value-store/rest-api/getting-started.md): Introducing the Key-Value Store REST API - [PATCH /kv/rest/v1/lists/{key} REST API Endpoint](https://www.quicknode.com/docs/key-value-store/rest-api/lists/upsert-list.md): Adds and/or removes items from an existing Key-Value Store list in a single request. Provide addItems to insert new entries and removeItems to delete existing ones. This is the most efficient way to perform batch updates on a list, as it handles both additions and removals in one API call. Items are case-sensitive. - [POST /kv/rest/v1/lists REST API Endpoint](https://www.quicknode.com/docs/key-value-store/rest-api/lists/create-list.md): Creates a new Key-Value Store list with the specified key and initial items. Use lists to store collections of string values (such as wallet addresses, token contract addresses, or account IDs) that you can later check against streaming blockchain data in Streams filters. The list key must be unique — attempting to create a list with an existing key will result in an error. Items are case-sensitive. - [POST /kv/rest/v1/lists/{key}/items REST API Endpoint](https://www.quicknode.com/docs/key-value-store/rest-api/lists/add-item-to-list.md): Adds a single item to an existing Key-Value Store list. The list must already exist (use POST /kv/rest/v1/lists to create one first). For adding multiple items at once, use the PATCH /kv/rest/v1/lists/{key} endpoint with the addItems array instead — this is more efficient than making multiple single-item requests. - [POST /kv/rest/v1/values REST API Endpoint](https://www.quicknode.com/docs/key-value-store/rest-api/values/create-value.md): Creates a new value (a single key-value pair) in Key-Value Store. Use values to store individual data points such as configuration values, running totals, last-processed block numbers, or cached computed values. Both the key and value are strings. If a value with the specified key already exists, this operation will overwrite the existing value.