---
title: Non-interactive plugins
description: Some plugins, typically selectors, do not need to interact with the user to do their job. Making these plugins API-capable is straight-forward.
component: pingfederate
version: 13.1
page_id: pingfederate:sdk_developers_guide:pf_noninteract_plugins
canonical_url: https://docs.pingidentity.com/pingfederate/13.1/sdk_developers_guide/pf_noninteract_plugins.html
llms_txt: https://docs.pingidentity.com/pingfederate/llms.txt
docs_for_agents: https://developer.pingidentity.com/build-with-ai/docs-for-agents.md
revdate: July 5, 2022
section_ids:
  related-links: Related links
---

# Non-interactive plugins

Some plugins, typically selectors, do not need to interact with the user to do their job. Making these plugins API-capable is straight-forward.

You still implement the `AuthnApiPlugin` interface, but you can just return null from the `getApiSpec()` method. And then you override the default implementation of `getApiPluginDescriptor()` and return an `AuthnApiPluginDescriptor` instance with the `interactive` flag set to `false`. As with many other classes in the SDK, there is an `AuthnApiPluginDescriptor.Builder` class to help in creating the descriptor.

When `interactive` is `false`, PingFederate knows that it never needs to redirect when it encounters your selector. If the request is occurring on the API endpoint, PingFederate can immediately call `selectContext()`. The same is true if the request is occurring on a front-channel endpoint, such as `/as/authorization.oauth2`.

If your selector does not implement `AuthnApiPlugin`, then PingFederate assumes that only a front-channel endpoint can call your selector. If PingFederate encounters your selector while executing an API request, PingFederate will send a `RESUME` response to the API client so that the user is redirected to PingFederate.

## Related links

* [Developing authentication API-capable adapters and selectors](pf_develop_auth_api_capable_adapt_selec.html)
