---
title: "Actions: K"
description: "How to set up each action of the 3 apps starting with K."
label: "K"
generated: "the tool catalog in services/core/src/tool-catalog"
---


Apps starting with K. Add any of these from **Integrations → n8n → Add tools → Browse apps**; see [Set up an action](/build/set-up-actions) for each way a key is sent, and the [catalog index](/reference/actions) for every app.

## Kafka

- **n8n node:** [Kafka](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.kafka/) (`n8n-nodes-base.kafka`, version 1), 1 action.
- **n8n performs it:** runs on the n8n credential *Kafka* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/kafka/)).
- **Veefore performs it:** not available. Kafka is not a web API (a database, queue, file transfer or local step), so only n8n can perform it.

**Kafka in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Kafka | n8n performs it | — |

## Keap

- **n8n node:** [Keap](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.keap/) (`n8n-nodes-base.keap`, version 1), 28 actions.
- **n8n performs it:** runs on the n8n credential *Keap OAuth2 API* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/keap/)).
- **Veefore performs it:** 28 of 28 actions, with OAuth 2.0 with a refresh token; Veefore renews access tokens at `https://api.infusionsoft.com/token` (scope `full`).
- **You enter:** OAuth client ID, Client secret, Refresh token.
- **API address:** `https://api.infusionsoft.com/crm/rest/v1`.
- **Get the key:** [keys.developer.keap.com](https://keys.developer.keap.com/)

**Keap in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create a company | `POST /companies` | `companyName` |
| Get many companies | `GET /companies` | — |
| Create or update a contact | `PUT /contacts` | `duplicateOption` |
| Delete a contact | `DELETE /contacts/{contactId}` | `contactId` |
| Get a contact | `GET /contacts/{contactId}` | `contactId` |
| Get many contacts | `GET /contacts` | — |
| Create a contact note | `POST /notes` | — |
| Delete a contact note | `DELETE /notes/{noteId}` | `noteId` |
| Get a contact note | `GET /notes/{noteId}` | `noteId` |
| Get many contact notes | `GET /notes` | — |
| Update a contact note | `PATCH /notes/{noteId}` | `noteId` |
| Create a contact tag | `POST /contacts/{contactId}/tags` | `contactId`, `tagIds` |
| Delete a contact tag | `DELETE /contacts/{contactId}/tags` | `contactId`, `tagIds` |
| Get many contact tags | `GET /contacts/{contactId}/tags` | `contactId` |
| Create an e-commerce order | `POST /orders` | `contactId`, `orderDate`, `orderTitle`, `orderType` |
| Get an e-commerce order | `GET /orders/{orderId}` | `orderId` |
| Delete an e-commerce order | `DELETE /orders/{orderId}` | `orderId` |
| Get many e-commerce orders | `GET /orders` | — |
| Create an e-commerce product | `POST /products` | `productName` |
| Delete an e-commerce product | `DELETE /products/{productId}` | `productId` |
| Get an e-commerce product | `GET /products/{productId}` | `productId` |
| Get many e-commerce products | `GET /products` | — |
| Create a record of an email sent | `POST /emails` | `sentToAddress`, `sentFromAddress` |
| Get many emails | `GET /emails` | — |
| Send an email | `POST /emails/queue` | `userId` |
| Delete a file | `DELETE /files/{fileId}` | `fileId` |
| Get many files | `GET /files` | — |
| Upload a file | `POST /files` | `fileAssociation`, `fileName`, `fileData` |

## KoBoToolbox

- **n8n node:** [KoBoToolbox](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.kobotoolbox/) (`n8n-nodes-base.koBoToolbox`, version 1), 17 actions.
- **n8n performs it:** runs on the n8n credential *KoBoToolbox API Token* ([how to set it up](https://docs.n8n.io/integrations/builtin/credentials/kobotoolbox/)).
- **Veefore performs it:** 17 of 17 actions, with the key in a header, as `Authorization: Token <key>`.
- **You enter:** API key.
- **API address:** `https://{host}`.

**KoBoToolbox in n8n**

| Action | Veefore calls | Fields to fill |
| --- | --- | --- |
| Create a file | `POST /api/v2/assets/{formId}/files/` | `formId`, `fileMode`, `binaryPropertyName`, `host` |
| Delete a file | `DELETE /api/v2/assets/{formId}/files/{fileId}` | `formId`, `fileId`, `host` |
| Get a file content | `GET /api/v2/assets/{formId}/files/{fileId}` | `formId`, `fileId`, `binaryPropertyName`, `download`, `host` |
| Get many files | `GET /api/v2/assets/{formId}/files` | `formId`, `host` |
| Get a form | `GET /api/v2/assets/{formId}` | `formId`, `host` |
| Get many forms | `GET /api/v2/assets/` | `returnAll`, `host` |
| Redeploy Current Form Version | `PATCH /api/v2/assets/{formId}/deployment/` | `formId`, `host` |
| Get a hook | `GET /api/v2/assets/{formId}/hooks/{hookId}` | `formId`, `hookId`, `host` |
| Get Many hooks | `GET /api/v2/assets/{formId}/hooks/` | `formId`, `returnAll`, `host` |
| Get Logs for a hook | `GET /api/v2/assets/{formId}/hooks/{hookId}/logs/` | `formId`, `hookId`, `host` |
| Retry All hooks | `PATCH /api/v2/assets/{formId}/hooks/{hookId}/retry/` | `formId`, `hookId`, `host` |
| Retry One hook | `PATCH /api/v2/assets/{formId}/hooks/{hookId}/logs/{logId}/retry/` | `formId`, `hookId`, `logId`, `host` |
| Delete a submission | `DELETE /api/v2/assets/{formId}/data/{submissionId}` | `formId`, `submissionId`, `host` |
| Get a submission | `GET /api/v2/assets/{formId}/data/{submissionId}` | `formId`, `submissionId`, `host` |
| Get many submissions | `GET /api/v2/assets/{formId}/data/` | `formId`, `returnAll`, `host` |
| Get the validation status for a submission | `GET /api/v2/assets/{formId}/data/{submissionId}/validation_status/` | `formId`, `submissionId`, `host` |
| Update the validation status for a submission | `PATCH /api/v2/assets/{formId}/data/{submissionId}/validation_status/` | `formId`, `submissionId`, `validationStatus`, `host` |
