langflow-ai/langflow · warning · HTTPException
Missing provider_data for {provider_label}.
Error message
Missing provider_data for {provider_label}. What it means
422 from BaseDeploymentMapper.parse_api_request_slot when slot.parse raises AdapterPayloadMissingError: the request's provider_data is empty/absent for an operation that requires it. Unlike the adapter-side variants (455-457), this is a user-input error — the fix is in the request payload. The detail names the provider whose provider_data is missing.
Source
Thrown at src/backend/base/langflow/api/v1/mappers/deployments/base.py:976
raw: Any,
outer_payload: Any | None = None,
) -> Any:
"""Parse a user-supplied API payload, raising 422 on failure.
Use for data sent **by** the user in the API request (inbound).
Failures are input errors — the user can fix them.
``slot_name`` is logged for debugging but not exposed to the user.
See ``parse_adapter_slot`` for adapter-boundary payloads.
"""
provider_label = self.get_provider_label()
if slot is None:
logger.error("Payload slot '%s' is not configured for %s", slot_name, provider_label)
msg = f"The {provider_label} integration is not configured for this operation."
raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=msg)
try:
parsed = slot.parse(raw)
except AdapterPayloadMissingError as exc:
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Missing provider_data for {provider_label}.",
) from exc
except AdapterPayloadValidationError as exc:
detail = exc.format_first_error()
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Invalid provider_data for {provider_label}: {detail}",
) from exc
if outer_payload is None:
return parsed
try:
self.validate_with_outer_request(parsed, outer_payload)
except OuterRequestValidationError as exc:
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Invalid provider_data for {provider_label}: {exc.detail}",
) from excView on GitHub (pinned to 976ec789d2)
Solutions
- Include a non-empty provider_data object matching the provider's expected schema in the request body
- Fetch the provider's expected shape from the deployment create/update schema (or a working create request) and mirror it
- Validate provider_data client-side before submit: present, non-null, non-empty
Example fix
# before
await client.post("/api/v1/deployments", json={"flow_id": fid, "deployment_type": "langflow"})
# after
await client.post("/api/v1/deployments", json={
"flow_id": fid,
"deployment_type": provider_type,
"provider_data": {"connection_id": cid, "region": "us-east-1"},
}) Defensive patterns
Strategy: validation
Validate before calling
pd = body.get("provider_data")
if deployment_type != "base" and (pd is None or not pd.strip() if isinstance(pd, str) else not pd):
raise ValueError(f"provider_data required for {deployment_type} deployments") Type guard
function hasProviderData(body: unknown): boolean {
const b = body as Record<string, unknown>;
const pd = b.provider_data;
return pd !== undefined && pd !== null &&
(typeof pd === "object" ? Object.keys(pd).length > 0 : String(pd).length > 0);
} Try / catch
try:
await client.post("/api/v1/deployments", json=body)
except httpx.HTTPStatusError as e:
if e.response.status_code == 422 and "Missing provider_data" in e.response.json()["detail"]:
body["provider_data"] = await fetch_default_provider_data(provider)
await client.post("/api/v1/deployments", json=body)
else:
raise Prevention
- Require the provider-specific form step before submit in the deployment UI
- Validate provider_data is present and non-empty client-side for non-default providers
- Keep a captured working provider_data payload as a template for API scripts
When it happens
Trigger: Creating/updating a deployment of a non-default provider without a provider_data field, with provider_data: null, or with an empty object where the provider's schema requires content (e.g. missing connection/region/config fields).
Common situations: Frontend skipping the provider-specific form step; API scripts copying a generic deployment body to a provider-specific endpoint; UI bug clearing the provider_data state on edit.
Related errors
- Cannot build deployment artifact: the parent flow for versio
- Flow version '{flow_version.id}' cannot be used as a deploym
- The {provider_label} integration is not configured for {oper
- Empty result while {operation} ({provider_label}).
- Unexpected result while {operation} ({provider_label}): {det
AI-assisted analysis of langflow-ai/langflow@976ec789d2 (2026-08-14).
Data as JSON: /api/errors/5ad6d609a51ebaea.
Report an issue: GitHub.