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 exc

View on GitHub (pinned to 976ec789d2)

Solutions

  1. Include a non-empty provider_data object matching the provider's expected schema in the request body
  2. Fetch the provider's expected shape from the deployment create/update schema (or a working create request) and mirror it
  3. 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

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


AI-assisted analysis of langflow-ai/langflow@976ec789d2 (2026-08-14). Data as JSON: /api/errors/5ad6d609a51ebaea. Report an issue: GitHub.