class safir.slack.webhook.SlackRouteErrorHandler(path, endpoint, *, response_model=<fastapi.datastructures.DefaultPlaceholder object>, status_code=None, tags=None, dependencies=None, summary=None, description=None, response_description='Successful Response', responses=None, deprecated=None, name=None, methods=None, operation_id=None, response_model_include=None, response_model_exclude=None, response_model_by_alias=True, response_model_exclude_unset=False, response_model_exclude_defaults=False, response_model_exclude_none=False, include_in_schema=True, response_class=<fastapi.datastructures.DefaultPlaceholder object>, dependency_overrides_provider=None, callbacks=None, openapi_extra=None, generate_unique_id_function=<fastapi.datastructures.DefaultPlaceholder object>)#

Bases: APIRoute

Custom fastapi.routing.APIRoute that reports exceptions to Slack.

Dynamically wrap FastAPI route handlers in an exception handler that reports uncaught exceptions (other than fastapi.HTTPException, fastapi.exceptions.RequestValidationError, starlette.exceptions.HTTPException, and exceptions inheriting from SlackIgnoredException) to Slack.

This class must be initialized by calling its initialize method to send alerts. Until that has been done, it will silently do nothing.


Specify this class when creating a router. All uncaught exceptions from handlers managed by that router will be reported to Slack, if Slack alerts are configured.

router = APIRouter(route_class=SlackRouteErrorHandler)


Based on this StackOverflow question.


Methods Summary


Wrap route handler with an exception handler.

initialize(hook_url, application, logger)

Configure Slack alerting.

Methods Documentation


Wrap route handler with an exception handler.

Return type:

Callable[[Request], Coroutine[Any, Any, Response]]

classmethod initialize(hook_url, application, logger)#

Configure Slack alerting.

Until this function is called, all Slack alerting for uncaught exceptions will be disabled.

  • hook_url (str) – The URL of the incoming webhook to use to publish the message.

  • application (str) – Name of the application reporting an error.

  • logger (BoundLogger) – Logger to which to report errors sending messages to Slack.

Return type: