Skip to content

"Failed to load API definition" error when using docs api from adk web server #3526

Closed

Description

@zmy1116

Describe the bug
After launching dev server using adk web, when I want to see api definitions with http://localhost:8000/docs

I got error Failed to load API definition.

To Reproduce
Please share a minimal code and data to reproduce your problem.
Steps to reproduce the behavior:

  1. Install google-adk
  2. Run adk web
  3. Open http://localhost:8000/docs
  4. get error Failed to load API definition.
    First few lines of the error trace
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/home/envision/Documents/Test3/.venv/lib/python3.10/site-packages/pydantic/type_adapter.py", line 287, in _init_core_attrs
    self.core_schema = _getattr_no_parents(self._type, '__pydantic_core_schema__')
  File "/home/envision/Documents/Test3/.venv/lib/python3.10/site-packages/pydantic/type_adapter.py", line 56, in _getattr_no_parents
    raise AttributeError(attribute)
AttributeError: __pydantic_core_schema__

During handling of the above exception, another exception occurred:

Last few lines of error trace

pydantic.errors.PydanticSchemaGenerationError: Unable to generate pydantic-core schema for <class 'mcp.client.session.ClientSession'>. Set `arbitrary_types_allowed=True` in the model_config to ignore this error or implement `__get_pydantic_core_schema__` on your type to fully support it.

If you got this error by calling handler(<some type>) within `__get_pydantic_core_schema__` then you likely need to call `handler.generate_schema(<some type>)` since we do not call `__get_pydantic_core_schema__` on `<some type>` otherwise to avoid infinite recursion.

For further information visit https://errors.pydantic.dev/2.12/u/schema-for-unknown-type

Expected behavior
I can confirm it works in 1.17, but not in i.18

Screenshots

Image Image Image

Desktop (please complete the following information):

  • OS: linux
  • Python version(python -V): 3.10
  • ADK version(pip show google-adk): 1.18

Model Information:

  • Are you using LiteLLM: No
  • Which model is being used(e.g. gemini-2.5-pro): gemini-2.5-flash

Activity

  1. added
    web[Component] This issue will be transferred to adk-web
    on Nov 12, 2025
  2. added theissue type on Nov 12, 2025
  3. self-assigned this
    on Nov 13, 2025
  4. alirezahekmati commented on Nov 15, 2025

    @alirezahekmati

    Hi! it seems there is something wrong with adk api_server. I have the same problem and it's not just related to docs.
    there is a bigger problem you can see these two issues. however, their solution didn't work for me.
    #3164
    #3173

  5. hcchengithub commented on Nov 25, 2025

    @hcchengithub

    both 'adk api_server' and 'adk web' run into “Failed to load API definition” at the moment when try to visit http://localhost:8000/docs

    Note: Roll back to 1.5.0 <-- OK!!

    google-adk 1.19.0 , Windows 11 <--- problem! error message shown below:

    INFO: Started server process [15680]
    INFO: Waiting for application startup.

    +-----------------------------------------------------------------------------+
    | ADK Web Server started |
    | |
    | For local testing, access at http://127.0.0.1:8000. |
    +-----------------------------------------------------------------------------+

    INFO: Application startup complete.
    INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
    INFO: 127.0.0.1:56087 - "GET /docs HTTP/1.1" 200 OK
    INFO: 127.0.0.1:56087 - "GET /openapi.json HTTP/1.1" 500 Internal Server Error
    ERROR: Exception in ASGI application
    Traceback (most recent call last):
    File "D:\uv\venvs\adks\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi
    result = await app( # type: ignore[func-returns-value]
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    self.scope, self.receive, self.send
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
    File "D:\uv\venvs\adks\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in call
    return await self.app(scope, receive, send)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\fastapi\applications.py", line 1133, in call
    await super().call(scope, receive, send)
    File "D:\uv\venvs\adks\Lib\site-packages\starlette\applications.py", line 113, in call
    await self.middleware_stack(scope, receive, send)
    File "D:\uv\venvs\adks\Lib\site-packages\starlette\middleware\errors.py", line 186, in call
    raise exc
    File "D:\uv\venvs\adks\Lib\site-packages\starlette\middleware\errors.py", line 164, in call
    await self.app(scope, receive, _send)
    File "D:\uv\venvs\adks\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in call
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    File "D:\uv\venvs\adks\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
    raise exc
    File "D:\uv\venvs\adks\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
    File "D:\uv\venvs\adks\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in call
    await self.app(scope, receive, send)
    File "D:\uv\venvs\adks\Lib\site-packages\starlette\routing.py", line 716, in call
    await self.middleware_stack(scope, receive, send)
    File "D:\uv\venvs\adks\Lib\site-packages\starlette\routing.py", line 736, in app
    await route.handle(scope, receive, send)
    File "D:\uv\venvs\adks\Lib\site-packages\starlette\routing.py", line 290, in handle
    await self.app(scope, receive, send)
    File "D:\uv\venvs\adks\Lib\site-packages\starlette\routing.py", line 78, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    File "D:\uv\venvs\adks\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
    raise exc
    File "D:\uv\venvs\adks\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
    File "D:\uv\venvs\adks\Lib\site-packages\starlette\routing.py", line 75, in app
    response = await f(request)
    ^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\fastapi\applications.py", line 1088, in openapi
    return JSONResponse(self.openapi())
    ~~~~~~~~~~~~^^
    File "D:\uv\venvs\adks\Lib\site-packages\fastapi\applications.py", line 1059, in openapi
    self.openapi_schema = get_openapi(
    ~~~~~~~~~~~^
    title=self.title,
    ^^^^^^^^^^^^^^^^^
    ...<12 lines>...
    external_docs=self.openapi_external_docs,
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
    File "D:\uv\venvs\adks\Lib\site-packages\fastapi\openapi\utils.py", line 514, in get_openapi
    field_mapping, definitions = get_definitions(
    ~~~~~~~~~~~~~~~^
    fields=all_fields,
    ^^^^^^^^^^^^^^^^^^
    ...<2 lines>...
    separate_input_output_schemas=separate_input_output_schemas,
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
    File "D:\uv\venvs\adks\Lib\site-packages\fastapi_compat.py", line 244, in get_definitions
    field_mapping, definitions = schema_generator.generate_definitions(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    inputs=inputs
    ^^^^^^^^^^^^^
    )
    ^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 379, in generate_definitions
    self.generate_inner(schema)
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 2088, in definitions_schema
    return self.generate_inner(schema['schema'])
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 959, in list_schema
    items_schema = {} if 'items_schema' not in schema else self.generate_inner(schema['items_schema'])
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 556, in new_handler_func
    json_schema = js_modify_function(schema_or_field, current_handler)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\main.py", line 852, in get_pydantic_json_schema
    return handler(core_schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1604, in model_schema
    json_schema = self.generate_inner(schema['schema'])
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1717, in model_fields_schema
    json_schema = self._named_required_fields_schema(named_required_fields)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1508, in _named_required_fields_schema
    field_json_schema = self.generate_inner(field).copy()
    ~~~~~~~~~~~~~~~~~~~^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 528, in js_updates_handler_func
    json_schema = {**current_handler(schema_or_field), **js_updates}
    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1576, in model_field_schema
    return self.generate_inner(schema['schema'])
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1175, in default_schema
    json_schema = self.generate_inner(schema['schema'])
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 959, in list_schema
    items_schema = {} if 'items_schema' not in schema else self.generate_inner(schema['items_schema'])
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1013, in tuple_schema
    prefixItems = [self.generate_inner(item) for item in schema['items_schema']]
    ~~~~~~~~~~~~~~~~~~~^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 556, in new_handler_func
    json_schema = js_modify_function(schema_or_field, current_handler)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\main.py", line 852, in get_pydantic_json_schema
    return handler(core_schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1604, in model_schema
    json_schema = self.generate_inner(schema['schema'])
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1717, in model_fields_schema
    json_schema = self._named_required_fields_schema(named_required_fields)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1508, in _named_required_fields_schema
    field_json_schema = self.generate_inner(field).copy()
    ~~~~~~~~~~~~~~~~~~~^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 528, in js_updates_handler_func
    json_schema = {**current_handler(schema_or_field), **js_updates}
    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1576, in model_field_schema
    return self.generate_inner(schema['schema'])
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1175, in default_schema
    json_schema = self.generate_inner(schema['schema'])
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1245, in nullable_schema
    inner_json_schema = self.generate_inner(schema['schema'])
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 556, in new_handler_func
    json_schema = js_modify_function(schema_or_field, current_handler)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\main.py", line 852, in get_pydantic_json_schema
    return handler(core_schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1604, in model_schema
    json_schema = self.generate_inner(schema['schema'])
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1717, in model_fields_schema
    json_schema = self._named_required_fields_schema(named_required_fields)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1508, in _named_required_fields_schema
    field_json_schema = self.generate_inner(field).copy()
    ~~~~~~~~~~~~~~~~~~~^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 528, in js_updates_handler_func
    json_schema = {**current_handler(schema_or_field), **js_updates}
    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1576, in model_field_schema
    return self.generate_inner(schema['schema'])
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1175, in default_schema
    json_schema = self.generate_inner(schema['schema'])
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1245, in nullable_schema
    inner_json_schema = self.generate_inner(schema['schema'])
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 556, in new_handler_func
    json_schema = js_modify_function(schema_or_field, current_handler)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\main.py", line 852, in get_pydantic_json_schema
    return handler(core_schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1604, in model_schema
    json_schema = self.generate_inner(schema['schema'])
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1123, in function_before_schema
    return self.generate_inner(schema['schema'])
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1717, in model_fields_schema
    json_schema = self._named_required_fields_schema(named_required_fields)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1508, in _named_required_fields_schema
    field_json_schema = self.generate_inner(field).copy()
    ~~~~~~~~~~~~~~~~~~~^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 528, in js_updates_handler_func
    json_schema = {**current_handler(schema_or_field), **js_updates}
    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1576, in model_field_schema
    return self.generate_inner(schema['schema'])
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1175, in default_schema
    json_schema = self.generate_inner(schema['schema'])
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1245, in nullable_schema
    inner_json_schema = self.generate_inner(schema['schema'])
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 556, in new_handler_func
    json_schema = js_modify_function(schema_or_field, current_handler)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\main.py", line 852, in get_pydantic_json_schema
    return handler(core_schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1604, in model_schema
    json_schema = self.generate_inner(schema['schema'])
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1123, in function_before_schema
    return self.generate_inner(schema['schema'])
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1717, in model_fields_schema
    json_schema = self._named_required_fields_schema(named_required_fields)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1508, in _named_required_fields_schema
    field_json_schema = self.generate_inner(field).copy()
    ~~~~~~~~~~~~~~~~~~~^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 528, in js_updates_handler_func
    json_schema = {**current_handler(schema_or_field), **js_updates}
    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1576, in model_field_schema
    return self.generate_inner(schema['schema'])
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1175, in default_schema
    json_schema = self.generate_inner(schema['schema'])
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 1245, in nullable_schema
    inner_json_schema = self.generate_inner(schema['schema'])
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 578, in generate_inner
    json_schema = current_handler(schema)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
    return self.handler(core_schema)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 511, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 921, in is_instance_schema
    return self.handle_invalid_for_json_schema(schema, f'core_schema.IsInstanceSchema ({schema["cls"]})')
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "D:\uv\venvs\adks\Lib\site-packages\pydantic\json_schema.py", line 2442, in handle_invalid_for_json_schema
    raise PydanticInvalidForJsonSchema(f'Cannot generate a JsonSchema for {error_info}')
    pydantic.errors.PydanticInvalidForJsonSchema: Cannot generate a JsonSchema for core_schema.IsInstanceSchema (<class 'httpx.Client'>)

    For further information visit https://errors.pydantic.dev/2.12/u/invalid-for-json-schema

  6. bldev2473 commented on Nov 25, 2025

    @bldev2473

    Any updates?
    Same problem in adk 1.19.0

  7. pfrantz commented on Nov 27, 2025

    @pfrantz

    yep same adk 1.19.0 still has this problem

  8. ManuelSLemos commented on Nov 28, 2025

    @ManuelSLemos

    Hi, @zmy1116, @bldev2473 , @pfrantz

    There is already a PR solving the issue, I guess it will be applied in the next version.

    In the meantime, I have solved it by copying this file into my project (https://github.com/google/adk-python/blob/349aae4f3a92d24f2c544366b05b6813632085f7/src/google/adk/utils/pydantic_v2_compatibility.py)

    and applying it this way.

    from utils.pydantic_v2_compatibility import create_robust_openapi_function
    
    agents_dir = os.path.join(os.path.dirname(__file__), "agents")
    
    app = get_fast_api_app(
        agents_dir=agents_dir,
        ... (your options)
    )
    
    app.openapi = create_robust_openapi_function(app)
  9. bhattronak commented on Dec 10, 2025

    @bhattronak

    same in adk 1.20.0

  10. chiragpatil-lp commented on Dec 11, 2025

    @chiragpatil-lp

    @bhattronak I have just upgraded to 1.20.0 but get the same error, is this this case with you too?

  11. bhattronak commented on Dec 11, 2025

    @bhattronak

    @chiragpatil-lp yes, though swagger isn’t working, but all APIs are, hit {base-url}/list-apps and you can see all apps, we don’t really need swagger, we just need all apis working!

  12. surajksharma07 commented on Dec 12, 2025

    @surajksharma07
    Collaborator

    @zmy1116 This is a Pydantic v2 compatibility issue where FastAPI can't generate JSON schemas for certain types (httpx.Client, mcp.client.session.ClientSession) exposed in ADK routes.

    PR #3521 has the fix - you can apply it now by downloading pydantic_v2_compatibility.py from https://github.com/google/adk-python/blob/349aae4f3a92d24f2c544366b05b6813632085f7/src/google/adk/utils/pydantic_v2_compatibility.py and adding app.openapi = create_robust_openapi_function(app) after getting your FastAPI app.

    Alternatively, rolling back to ADK v1.17 works (confirmed by multiple users in this thread).

    Thanks!

  13. added
    answered[Status] This issue has been answered by the maintainer
    on Dec 12, 2025
  14. aechiara commented on Dec 15, 2025

    @aechiara

    i was only able to run api_server with these versions:

    pydantic==2.11.5
    pydantic-settings==2.9.1
    pydantic_core==2.33.2
    google-adk==1.15.1

  15. alirezahekmati commented on Dec 17, 2025

    @alirezahekmati

    Hi, @ManuelSLemos
    Could you elaborate more on where should we put this code?
    like imagine I start with a raw project that only has agent.py, .env, init.py

    Hi, @zmy1116, @bldev2473 , @pfrantz

    There is already a PR solving the issue, I guess it will be applied in the next version.

    In the meantime, I have solved it by copying this file into my project (https://github.com/google/adk-python/blob/349aae4f3a92d24f2c544366b05b6813632085f7/src/google/adk/utils/pydantic_v2_compatibility.py)

    and applying it this way.

    from utils.pydantic_v2_compatibility import create_robust_openapi_function

    agents_dir = os.path.join(os.path.dirname(file), "agents")

    app = get_fast_api_app(
    agents_dir=agents_dir,
    ... (your options)
    )

    app.openapi = create_robust_openapi_function(app)

  16. surajksharma07 commented on Dec 17, 2025

    @surajksharma07
    Collaborator

    Update:this issue is still present in ADK v1.21.0. PR #3521 with the fix has not been merged yet.

    @alirezahekmati For the workaround, if you're using adk web or adk api_server commands directly, you'll need to create a custom FastAPI app instead. Here's how:

    1. Download pydantic_v2_compatibility.py from https://github.com/google/adk-python/blob/349aae4f3a92d24f2c544366b05b6813632085f7/src/google/adk/utils/pydantic_v2_compatibility.py and save it in your project directory
    2. Create a custom server file (e.g., server.py):
    from google.adk.cli.fast_api import get_fast_api_app
    from pydantic_v2_compatibility import create_robust_openapi_function
    import uvicorn
    
    app = get_fast_api_app(agents_dir="./agents")  # Point to your agents directory
    app.openapi = create_robust_openapi_function(app)
    
    if __name__ == "__main__":
        uvicorn.run(app, host="127.0.0.1", port=8000)
    1. Run: python server.py

    Alternatively, downgrade to ADK v1.17 where this works: pip install google-adk==1.17.0

    The core APIs work fine in v1.18-v1.21.0 (you can use /list-apps and other endpoints) - only the /docs Swagger UI is broken.

  17. llalitkumarrr commented on Feb 4, 2026

    @llalitkumarrr
    Collaborator

    Closing this issue as there has been no recent activity.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

answered[Status] This issue has been answered by the maintainerweb[Component] This issue will be transferred to adk-web

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions