Join our community of builders on

Telegram!Telegram

Execute a plugin with optional wildcard route routing

Logs and traces are only returned when the plugin is configured with emit_logs / emit_traces. Plugin-provided errors are normalized into a consistent payload (code, details) and a derived message so downstream clients receive a stable shape regardless of how the handler threw.

The endpoint supports wildcard route routing, allowing plugins to implement custom routing logic:

  • /api/v1/plugins/{plugin_id}/call - Default endpoint (route = "")
  • /api/v1/plugins/{plugin_id}/call?route=/verify - Custom route via query parameter
  • /api/v1/plugins/{plugin_id}/call/verify - Custom route via URL path (route = "/verify")

The route is passed to the plugin handler via the context.route field. You can specify a custom route either by appending it to the URL path or by using the route query parameter.

POST
/api/v1/plugins/{plugin_id}/call
AuthorizationBearer <token>

In: header

Path Parameters

plugin_idstring

The unique identifier of the plugin

Query Parameters

route?string

Optional route suffix for custom routing (e.g., '/verify'). Alternative to appending the route to the URL path.

params?unknown

Plugin parameters. If not provided, the entire request body will be used as params.

Response Body

curl -X POST "https://loading/api/v1/plugins/string/call?route=string" \  -H "Content-Type: application/json" \  -d '{}'
{
  "data": "done!",
  "error": null,
  "metadata": {
    "logs": [
      {
        "level": "info",
        "message": "Plugin started..."
      }
    ],
    "traces": [
      {
        "method": "sendTransaction",
        "relayerId": "sepolia-example",
        "requestId": "6c1f336f-3030-4f90-bd99-ada190a1235b"
      }
    ]
  },
  "success": true
}
{
  "data": {
    "code": "VALIDATION_FAILED",
    "details": {
      "field": "email"
    }
  },
  "error": "Validation failed",
  "metadata": {
    "logs": [
      {
        "level": "error",
        "message": "Validation failed for field: email"
      }
    ]
  },
  "success": false
}
{
  "data": null,
  "error": "Unauthorized",
  "success": false
}
{
  "data": null,
  "error": "Plugin with ID plugin_id not found",
  "success": false
}
{
  "data": null,
  "error": "Too Many Requests",
  "success": false
}
{
  "data": null,
  "error": "Internal Server Error",
  "success": false
}