{"record":{"id":"0e8e23d6cb66e00c","repo":"microsoft/semantic-kernel","slug":"no-payload-is-provided-by-the-argument-self-payl","errorCode":null,"errorMessage":"No payload is provided by the argument '{self.payload_argument_name}'.","messagePattern":"No payload is provided by the argument '(.+?)'\\.","errorType":"exception","errorClass":"FunctionExecutionException","httpStatus":null,"severity":"error","filePath":"python/semantic_kernel/connectors/openapi_plugin/openapi_runner.py","lineNumber":83,"sourceCode":"        \"\"\"Build the operation URL.\"\"\"\n        url = operation.build_operation_url(arguments, server_url_override, api_host_url)\n        return self.build_full_url(url, operation.build_query_string(arguments))\n\n    def build_json_payload(self, payload_metadata: RestApiPayload, arguments: dict[str, Any]) -> tuple[str, str]:\n        \"\"\"Build the JSON payload.\"\"\"\n        if self.enable_dynamic_payload:\n            if payload_metadata is None:\n                raise FunctionExecutionException(\n                    \"Payload can't be built dynamically due to the missing payload metadata.\"\n                )\n\n            payload = self.build_json_object(payload_metadata.properties, arguments)\n            content = json.dumps(payload)\n            return content, payload_metadata.media_type\n\n        argument = arguments.get(self.payload_argument_name)\n        if not isinstance(argument, str):\n            raise FunctionExecutionException(f\"No payload is provided by the argument '{self.payload_argument_name}'.\")\n\n        return argument, argument\n\n    def build_json_object(self, properties, arguments, property_namespace=None):\n        \"\"\"Build the JSON payload object.\"\"\"\n        result = {}\n\n        for property_metadata in properties:\n            argument_name = self.get_argument_name_for_payload(property_metadata.name, property_namespace)\n            if property_metadata.type == \"object\":\n                node = self.build_json_object(property_metadata.properties, arguments, argument_name)\n                result[property_metadata.name] = node\n                continue\n            property_value = arguments.get(argument_name)\n            if property_value is not None:\n                result[property_metadata.name] = property_value\n                continue\n            if property_metadata.is_required:","sourceCodeStart":65,"sourceCodeEnd":101,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/python/semantic_kernel/connectors/openapi_plugin/openapi_runner.py#L65-L101","documentation":"When `enable_dynamic_payload` is False, `build_json_payload` expects the caller to supply the entire body as a string under `payload_argument_name`. If that argument is missing or not a `str`, it raises `FunctionExecutionException`.","triggerScenarios":"Invoking an operation with a request body while `enable_dynamic_payload=False` and either not passing `payload_argument_name` in arguments, or passing a non-string (dict/list/None).","commonSituations":"Default mode (dynamic payload off) where the caller forgets the body; passing a dict expecting it to be serialized automatically; mismatch between the configured `payload_argument_name` and the key the caller used.","solutions":["Pass the body as a JSON string under the configured `payload_argument_name` (default is typically `body`/`payload`).","Or enable `enable_dynamic_payload=True` so individual property arguments are assembled into the body.","`json.dumps(...)` any dict/list before assigning it to the payload argument.","Print the runner's `payload_argument_name` to confirm the expected key."],"exampleFix":"# before\nargs = {\"id\": 1}  # body missing / not a string -> raises 1497\nawait runner.run_operation(op, args, options)\n\n# after\nimport json\nargs = {\"id\": 1, runner.payload_argument_name: json.dumps({\"name\": \"Rex\"})}\nawait runner.run_operation(op, args, options)","handlingStrategy":"validation","validationCode":"import json\n\ndef ensure_body_argument(runner, args, body):\n    key = runner.payload_argument_name\n    if key not in args or not isinstance(args[key], str):\n        args[key] = body if isinstance(body, str) else json.dumps(body)\n    return args\n\nargs = ensure_body_argument(runner, args, {\"name\": \"Rex\"})\nawait runner.run_operation(op, args, options)","typeGuard":"def has_string_payload(args, payload_arg_name) -> bool:\n    return isinstance(args.get(payload_arg_name), str)","tryCatchPattern":"from semantic_kernel.exceptions import FunctionExecutionException\n\ntry:\n    await runner.run_operation(op, args, options)\nexcept FunctionExecutionException as e:\n    if \"No payload is provided\" in str(e):\n        args[runner.payload_argument_name] = json.dumps(body_dict)\n        await runner.run_operation(op, args, options)\n    else:\n        raise","preventionTips":["When dynamic payload is off, always pass a JSON string body.","Use `json.dumps` on dicts/lists before assigning to the payload arg.","Print `runner.payload_argument_name` to confirm the expected key.","Wrap invocations to auto-fill the body argument."],"tags":["openapi-plugin","payload","runtime","semantic-kernel"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}