Custom Actions

Llame a cualquier REST API que no esté en el catálogo de aplicaciones built-in. Configure URL, el método, los encabezados y la plantilla del cuerpo; luego use la respuesta como cualquier otro resultado de paso.


¿Qué son Custom Actions?

Custom Actions son pasos de solicitud HTTP respaldados por el http-request aplicación. Le permiten llamar a cualquier REST API (herramientas internas, fuentes de datos patentadas, servicios third-party sin una integración nativa) sin escribir código.

El URL, los encabezados y el cuerpo son plantillas. Puede inyectar salidas de pasos anteriores, campos de entrada o secretos del espacio de trabajo utilizando el estándar {{variable}} sintaxis.


Configuración

{
  type: "appAction",
  app: { id: "http-request", actionId: "request" },
  stepInputData: {
    url: "https://api.example.com/enrich?domain={{input.domain}}",
    method: "GET",           // GET | POST | PUT | DELETE | PATCH
    headers: {
      "Authorization": "Bearer {{input.apiKey}}",
      "Content-Type": "application/json"
    },
    body: {                  // for POST / PUT / PATCH
      "company": "{{steps.enrich.name}}",
      "score": "{{steps.score.value}}"
    }
  }
}

URL — admite variables de plantilla; Los parámetros de consulta se pueden integrar o construir dinámicamente.

encabezados — objeto JSON; Úselo para tokens de autenticación, tipo de contenido y encabezados personalizados.

cuerpo — objeto JSON o plantilla de cadena; utilizado con POST / PUT / PATCH.


Entrada y salida

Las entradas son variables de plantilla resueltas en el momento de la ejecución a partir de entradas del flujo de trabajo y salidas de pasos anteriores. La respuesta HTTP se analiza automáticamente:

  • respuesta JSON - analizado en un objeto; Los campos están disponibles como {{steps.my_step.fieldName}} en pasos posteriores.
  • Texto / respuesta HTML — disponible como {{steps.my_step.body}}.
  • Código de estado — disponible como {{steps.my_step.status}} para enrutamiento condicional.

Probar antes de agregar a un flujo de trabajo

Usar test_app_action desde cualquier cliente MCP para activar una solicitud en vivo e inspeccionar la respuesta sin consumir créditos de flujo de trabajo ni crear una ejecución:

test_app_action("http-request", "request", {
  url: "https://api.example.com/companies/acme",
  method: "GET",
  headers: { "Authorization": "Bearer sk-..." }
})
// Returns the live response so you can inspect fields before wiring them up

Patrones de autenticación

Token al portador en el encabezado

headers: { "Authorization": "Bearer {{input.token}}" }

Clave API como parámetro de consulta

url: "https://api.example.com/data?api_key={{input.apiKey}}"

Autenticación básica

headers: { "Authorization": "Basic {{input.base64Credentials}}" }

Evite codificar secretos en la configuración del paso. Páselos como entradas de flujo de trabajo (marcados como confidenciales) o recupérelos de los secretos del espacio de trabajo si es compatible.


Ejemplo: llamar a un webhook interno

{
  type: "appAction",
  app: { id: "http-request", actionId: "request" },
  stepInputData: {
    url: "https://hooks.company.internal/deal-scored",
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: {
      "dealId": "{{input.dealId}}",
      "score": "{{steps.score.value}}",
      "tier": "{{steps.aggregate.tier}}"
    }
  }
}

Próximos pasos

  • App System — Explore más de 100 integraciones built-in antes de crear una acción personalizada
  • App Actions Reference — Esquemas de entrada/salida para todas las acciones nativas
  • n8n Importar — Importar nodos de solicitud HTTP de flujos de trabajo n8n existentes