I wrote this script for renaming a query tag. It uses redash-toolbelt and Python 3. It saved me a lot of time moving around tags on our org today.

from redash_toolbelt import Redash
import json

URL = "<your Redash url>"
KEY = "<your API key>"
client = Redash(URL, KEY)

OLD_NAME = "<the tag to be renamed>"
NEW_NAME = "<the new tag name>"
rename_dict = {OLD_NAME: NEW_NAME}


queries = client.paginate(client.queries)

tag_dict = {
    i.get("id"): i.get("tags")
    for i in queries
    if i.get("tags") != [] and OLD_NAME in i.get("tags")
}

new_tag_dict = {
    key: [rename_dict.get(i, i) for i in val] for key, val in tag_dict.items()
}

for query_id, new_tag_list in new_tag_dict.items():
	post_data = dict(tags=new_tag_list)
	response = client._post(f"api/queries/{query_id}", json=post_data)
	print("Tags for query {} were updated.".format(query_id))