# Move your WhatsApp API calls from Interakt to Flow

> To move a WhatsApp template send from Interakt’s API to SkedX Flow: change the URL from https://api.interakt.ai/v1/public/message/ to https://flowserver.skode.ai/api/v1/messages/template/, the header from "Authorization: Basic <Interakt key>" to "Authorization: Bearer <Flow key>", and flatten the body: countryCode + phoneNumber become one "to" (e.g. "+919876543210"); template.name becomes template_name; template.bodyValues becomes variables; template.languageCode becomes language (optional); callbackData becomes callback_data; "type" is dropped. Flow answers {"ok": true, "id": …} where Interakt answered {"result": true, …}, so check ok instead of result. headerValues and buttonValues have no Flow equivalent yet; callback_data comes back in Flow’s delivered, read and failed webhooks. The template must be approved on the WhatsApp number connected to Flow.

Product: SkedX Flow · Topic: APIs & Developers · Draft — steps not yet re-verified in the live product

If your system sends WhatsApp templates through Interakt’s API, moving it to Flow is a small change: a new address, a new key and a flatter body. Your data and your logic stay as they are. About six minutes per place you send from.

## Step 1: Make sure the template is approved on your Flow number

Templates belong to a WhatsApp number. Before switching a send, [list your templates in Flow](https://skode.ai/help/flow/developers/send-your-first-template-in-5-minutes/) and check the one you use is there with `"status": "approved"` and the same technical name. Moving the number itself to Flow is covered in [Channels](https://skode.ai/help/flow/channels/).

## Step 2: Change the address and the key

[Create a Flow API key](https://skode.ai/help/flow/developers/create-an-api-key/) with **Send messages and templates**, then swap two lines. Interakt takes its key as HTTP Basic; Flow takes its key after the word `Bearer`.

```text
Interakt:  POST https://api.interakt.ai/v1/public/message/
           Authorization: Basic <your Interakt API key>

Flow:      POST https://flowserver.skode.ai/api/v1/messages/template/
           Authorization: Bearer sk_flow_…
```

## Step 3: Flatten the body

- `countryCode` + `phoneNumber` -> one `to`, country code first: `"+91" + "9876543210"` becomes `"+919876543210"`.
- `template.name` -> `template_name`.
- `template.bodyValues` -> `variables` — the same list, in the same order.
- `template.languageCode` -> `language`, or leave it out: Flow uses the template’s own.
- `callbackData` -> `callback_data`.
- `"type": "Template"` — drop it; the address already says it’s a template.

## Step 4: Before and after

The same reminder, as Interakt took it and as Flow takes it. Either way your customer gets the same message, each value in its blank: the batch, the faculty, the time, the topic and the class link.

Interakt:
```json
{
  "countryCode": "+91",
  "phoneNumber": "9876543210",
  "callbackData": "batch-108-reminder",
  "type": "Template",
  "template": {
    "name": "batch_session_reminder_v1",
    "languageCode": "en",
    "bodyValues": ["Batch 108", "Meera Nair", "8.30 PM to 10:00 PM",
                   "SEO recap", "https://example.com/class/108"]
  }
}
```

Flow:
```json
{
  "to": "+919876543210",
  "template_name": "batch_session_reminder_v1",
  "variables": ["Batch 108", "Meera Nair", "8.30 PM to 10:00 PM",
                "SEO recap", "https://example.com/class/108"],
  "callback_data": "batch-108-reminder"
}
```

## Step 5: Check “ok”, not “result”

Interakt answered `{"result": true, "message": "…", "id": "…"}`; Flow answers `{"ok": true, "id": "…", "callbackData": "…"}`. Change the one line that checks for success. Errors come back with `"ok": false` and an `error` message — [each one explained](https://skode.ai/help/flow/developers/flow-api-errors/).

## Step 6: Sending from n8n? Change one node

In the HTTP Request node that called Interakt, change the URL, swap the credential for a Header Auth one holding `Bearer sk_flow_…`, and flatten the JSON body as above — [the full n8n guide](https://skode.ai/help/flow/developers/connect-flow-to-n8n/).

## Common questions

### What about headerValues and buttonValues?

Flow’s API fills body blanks only for now. A template whose header or buttons need values can’t be sent through the API yet — use a body-only version for automated sends.

### Interakt sent my callbackData back in its webhooks. Does Flow?

Yes. Flow’s delivered, read and failed webhooks carry your `callback_data`, next to `provider_message_id` — the `id` the send answered with — so you can match a receipt to its send.

### Are there rate limits like Interakt’s plans?

Flow doesn’t limit how fast you send templates. WhatsApp’s own daily limit for your number still applies.

### Can my tool keep sending Interakt’s exact JSON?

Not to the API. If you can’t change what the tool sends, an [inbound hook](https://skode.ai/help/flow/developers/inbound-hooks-send-without-code/) can take fields as they are — but a list such as `bodyValues` counts as one value, so it works only when your values arrive as separate fields.

## Useful links
- Interakt: send templates using APIs — the request you’re moving from: https://www.interakt.shop/resource-center/how-to-send-whatsapp-templates-using-apis-webhooks/
- Flow API reference — the request you’re moving to: https://flow.skode.ai/docs/

Videos and screenshots © 2026 SkedX, with sample data only. Share and link to them freely; copying the SkedX product or its design is not allowed. Terms: https://skode.ai/terms/

## Related guides
- Send a WhatsApp template over the API: https://skode.ai/help/flow/developers/send-a-whatsapp-template-over-the-api/
- Connect Flow to n8n: https://skode.ai/help/flow/developers/connect-flow-to-n8n/
- Flow API errors, and how to fix each one: https://skode.ai/help/flow/developers/flow-api-errors/
- Move your WhatsApp Business app number from another provider to SkedX Flow: https://skode.ai/help/flow/channels/move-your-whatsapp-business-app-number-from-another-provider/

Source: https://skode.ai/help/flow/developers/move-your-api-calls-from-interakt/