Confirm this is a Python library issue and not an underlying Cloudflare API issue.
Describe the bug
Bug: path_template URL-encodes slashes in model name, breaking ai.run() in v5
Description
After upgrading from cloudflare Python SDK v4.3.1 to v5.x, my calls to client.ai.run() fail with a 400 error:
{
"success": false,
"errors": [{"code": 7000, "message": "No route for that URI"}],
"messages": [],
"result": null
}
The root cause seems to be that path_template() URL-encodes the forward slashes (/ → %2F) in the model_name parameter, producing an invalid API path.
Expected path
/accounts/{account_id}/ai/run/@cf/black-forest-labs/flux-1-schnell
Actual path (v5)
/accounts/{account_id}/ai/run/@cf%2Fblack-forest-labs%2Fflux-1-schnell
Reproduction
from cloudflare import Cloudflare
client = Cloudflare(api_token="<valid_token>")
# This worked in v4.3.1, fails in v5 with "No route for that URI"
result = client.ai.run(
"@cf/black-forest-labs/flux-1-schnell",
account_id="<account_id>",
prompt="a cat sitting on a chair",
)
I also confirmed the encoding without making an API call:
from cloudflare._utils import path_template
path = path_template(
"/accounts/{account_id}/ai/run/{model_name}",
account_id="test123",
model_name="@cf/black-forest-labs/flux-1-schnell",
)
print(path)
# Output: /accounts/test123/ai/run/@cf%2Fblack-forest-labs%2Fflux-1-schnell
# Expected: /accounts/test123/ai/run/@cf/black-forest-labs/flux-1-schnell
Environment
- SDK version: 5.0.0 / 5.1.0 (both affected)
- Python: 3.12
- OS: Ubuntu 24 (GitHub Actions runner) — also reproducible locally
- Last working version: 4.3.1
Impact
This breaks every client.ai.run() call for any model which identifiers contain slashes (e.g. @cf/meta/llama-3.1-8b-instruct, @cf/black-forest-labs/flux-1-schnell, etc.).
Workaround
In the meantime, I am using a workaround based on the REST API directly to bypass the SDK:
import requests
response = requests.post(
f"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/run/@cf/black-forest-labs/flux-1-schnell",
headers={"Authorization": f"Bearer {api_token}"},
json={"prompt": "a cat sitting on a chair"},
)
data = response.json()
To Reproduce
from cloudflare import Cloudflare
client = Cloudflare(api_token="<valid_token>")
# This worked in v4.3.1, fails in v5 with "No route for that URI"
result = client.ai.run(
"@cf/black-forest-labs/flux-1-schnell",
account_id="<account_id>",
prompt="a cat sitting on a chair",
)
Code snippets
OS
Linux Fedora
Python version
3.12
Library version
5.1.0
Confirm this is a Python library issue and not an underlying Cloudflare API issue.
Describe the bug
Bug:
path_templateURL-encodes slashes in model name, breakingai.run()in v5Description
After upgrading from
cloudflarePython SDK v4.3.1 to v5.x, my calls toclient.ai.run()fail with a400error:{ "success": false, "errors": [{"code": 7000, "message": "No route for that URI"}], "messages": [], "result": null }The root cause seems to be that
path_template()URL-encodes the forward slashes (/→%2F) in themodel_nameparameter, producing an invalid API path.Expected path
Actual path (v5)
Reproduction
I also confirmed the encoding without making an API call:
Environment
Impact
This breaks every
client.ai.run()call for any model which identifiers contain slashes (e.g.@cf/meta/llama-3.1-8b-instruct,@cf/black-forest-labs/flux-1-schnell, etc.).Workaround
In the meantime, I am using a workaround based on the REST API directly to bypass the SDK:
To Reproduce
Code snippets
OS
Linux Fedora
Python version
3.12
Library version
5.1.0