Skip to main content

Version: latest

Plugins

A Plugin is a modular component that intercepts and modifies the request and response flow through the gateway. API7 Gateway includes over 100 enterprise-grade plugins for authentication, traffic control, observability, security, and AI capabilities.

Plugin execution

Plugins are executed in a specific order based on their Priority. A plugin with a higher priority number runs before a plugin with a lower priority number. This ensures that essential functions like authentication are completed before traffic control or proxying.

Plugin scopes

You can apply plugins at different levels of the configuration hierarchy:

  • Route level: Applied to a specific route. Only affects traffic matching that route.
  • Service level: Applied to a Service Template. Affects all routes within that service.
  • Consumer level: Applied to a specific Consumer. Affects all traffic identified as belonging to that consumer.
  • Global Rule: Applied to an entire Gateway Group. Affects all routes managed by that group.

Plugin categories

API7 Gateway categorizes plugins by their primary function. The following table provides examples of commonly used enterprise plugins:

CategoryExamples
Authenticationkey-auth, jwt-auth, basic-auth, hmac-auth, openid-connect, ldap-auth, multi-auth
Traffic Controllimit-count, limit-req, limit-conn, limit-count-advanced, api-breaker, traffic-split
Transformationproxy-rewrite, response-rewrite, body-transformer, grpc-transcode
Observabilityprometheus, opentelemetry, http-logger, kafka-logger, loki-logger, splunk-hec-logging
Securitycors, ip-restriction, ua-restriction, consumer-restriction, csrf, data-mask, opa, chaitin-waf
AI Gatewayai-proxy, ai-proxy-multi, ai-rate-limiting, ai-rag, ai-prompt-template, ai-prompt-guard
Serverlessaws-lambda, azure-functions, serverless-pre-function, serverless-post-function

Plugin Metadata

Some plugins require shared configuration across all instances of that plugin type. This is managed via Plugin Metadata. For example, you can define a shared Kafka broker address in the kafka-logger metadata, which all instances of the plugin will then use.

Configuration example

Plugins are defined as key-value pairs where the key is the plugin name and the value is the configuration object.

curl -k "https://localhost:7443/api/v1/services/{service_id}" -X PATCH \
-H "X-API-KEY: ${API_KEY}" \
-d '{
"plugins": {
"limit-count": {
"count": 100,
"time_window": 60,
"rejected_code": 429
}
}
}'

Next steps

API7.ai Logo

The digital world is connected by APIs,
API7.ai exists to make APIs more efficient, reliable, and secure.

Sign up for API7 newsletter

Product

API7 Gateway

SOC2 Type IIISO 27001HIPAAGDPRRed Herring

Copyright © APISEVEN PTE. LTD 2019 – 2026. Apache, Apache APISIX, APISIX, and associated open source project names are trademarks of the Apache Software Foundation