def base64_encode(string):
Removes any `=` used as padding from the encoded string.
encoded = base64.b64encode(string.encode())
encoded = encoded.rstrip(b'=')
user_id = "be6a052e-bce8-4c14-8bbb-ea6b6f9941d5"
secret_key = "secretzzzz"
base_id = "TEafv3AfNptmzii4zj2jkc"
{ "name": "text_candidate", "text": "John Wick" }
# ensure no spaces in json output
encoded = json.dumps(modifications, separators=(',', ':'))
encoded = base64_encode(encoded).decode()
parameters = "{user_id}+{base_id}+{modifications}".format(user_id=user_id, base_id=base_id, modifications=encoded)
signature = hmac.new(secret_key.encode(), parameters.encode(), hashlib.sha256).hexdigest()
url = "https://images.usestencil.com/signed-images/{user_id}/{base_id}.png?modifications={modifications}&s={signature}".format(
if __name__ == "__main__":