BerriAI/litellm · error · BlackForestLabsError
No polling_url in BFL response
Error message
No polling_url in BFL response
What it means
Error "No polling_url in BFL response" thrown in BerriAI/litellm.
Source
Thrown at litellm/llms/black_forest_labs/image_edit/handler.py:330
# Parse initial response to get polling URL
try:
response_data: Final = initial_response.json()
except Exception as e:
raise BlackForestLabsError(
status_code=initial_response.status_code,
message=f"Error parsing initial response: {e}",
)
# Check for immediate errors
if "errors" in response_data:
raise BlackForestLabsError(
status_code=initial_response.status_code,
message=f"BFL error: {response_data['errors']}",
)
polling_url: Final = response_data.get("polling_url")
if not polling_url:
raise BlackForestLabsError(
status_code=500,
message="No polling_url in BFL response",
)
# Reject polling URLs that don't belong to BFL-controlled infrastructure.
# BFL uses regional subdomains (e.g. gateway.bfl.ai) that differ from the
# submission host (api.bfl.ai), so we validate against the registered
# domain rather than doing a strict same-origin check. VERIA-51.
assert_bfl_polling_url(polling_url)
# Get just the auth header for polling
polling_headers: Final = {"x-key": headers.get("x-key", "")}
start_time: Final = time.time()
verbose_logger.debug("BFL starting sync polling at %s", polling_url)
while time.time() - start_time < max_wait:
response = sync_client.get(View on GitHub (pinned to 6c2dcb801b)
Solutions
- The BFL response lacked a polling_url; check the request parameters and API status.
When it happens
Trigger: Thrown at litellm/llms/black_forest_labs/image_edit/handler.py:330 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BerriAI/litellm@6c2dcb801b (2026-08-15).
Data as JSON: /api/errors/9be868fa68e6051d.
Report an issue: GitHub.