---
title: "HTTP"
slug: "dataflow-integrations-http"
description: "Learn how to use HTTP protocol to communicate with Knovvu Data Flow using stateless, REST-style endpoints. "
updated: 2026-04-07T07:15:46Z
published: 2026-04-07T07:15:46Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.knovvu.com/llms.txt
> Use this file to discover all available pages before exploring further.

# HTTP

## Introduction

The aim of this document is to explain Http integration details for Data Flow.

Data Flow has been designed for streaming from the ground up. Even though the main focus is on streaming, one can also benefit from the use of Data Flow with batch operations. For Data Flow batch operations Http is the go-to protocol.

## Example

Let's first see what a sample Data Flow Http request looks like on Postman. You can download Postman Collection below.

[Wagtail_Postman_Collection.json](https://cdn.document360.io/9bca2910-6a3b-4224-9470-43f91f9a6d57/Images/Documentation/Wagtail_Postman_Collection.json)

****Authorization****

![image.png](https://cdn.document360.io/9bca2910-6a3b-4224-9470-43f91f9a6d57/Images/Documentation/image%28558%29.png)

****Necessary Headers****

![image.png](https://cdn.document360.io/9bca2910-6a3b-4224-9470-43f91f9a6d57/Images/Documentation/image%28850%29.png)

****Multipart Body****

![image.png](https://cdn.document360.io/9bca2910-6a3b-4224-9470-43f91f9a6d57/Images/Documentation/image%28851%29.png)

## Http Operation Flow

You can consider a batch operation as an aggregate of stream operations. When a request is received by Data Flow server, basically the following steps are executed:

- Bearer token is read from Http "Authorization" header and it is validated by the Identity Server.
- Tenant, ProjectName(or services) Http headers are read and corresponding project is determined by the server.
- Http Multipart body is segregated and parsed.
- A start message is generated from Http Multipart body part `Parameters`
- Any errors while starting the operation causes the operation to fail at this stage. If operation starts successfully then we continue.
- Http Multipart body `Audio` is read and converted to BinaryMessage(s), then written to Data Flow.
- A Flush command is sent to all the nodes which tells them to consume whatever data they received and try to finish as soon as possible.
- Wait until all the data in the system has been consumed and all the nodes finish their work.
- Accumulate all the events that reach the publisher node, serialize them and send it as the Http response.

## Multipart Explanations

Data Flow requires several inputs for a single operation. Http endpoint expects Multipart Body message to receive both the audio and textual parameters at the same time.

Bearer token is read from Http headers. So you do not need to send "token" here.

### Audio

- `Audio`: has to be a wav file. pcm, alaw, ulaw formats are supported.
- Audio information is extracted from the wav file header. You are expected not to send "Audio" field that is normally sent in start messages.

### Parameters

`Parameters` is a json formatted string. This part is treated similarly to a `Start` message with a few differences. There are Four main fields that are generally utilized in parameters.

- [Settings](/v1/docs/dataflow-integrations-http#settings):  Json Object
- [CallProperties](/v1/docs/dataflow-integrations-http#callproperties): Json Object.
- [Events](/v1/docs/dataflow-integrations-http#events): Json Array.
- Language: string. This field is a language tag that can be used by project nodes to override their default language for this session. The language tags follow IETF standards. i.e. "en-US".

          Important Note

          

Parameters field is an optional field that can be left blank. However some nodes require more information from this field to work. If your project's nodes do not explicitly ask for Parameters in their requirements, you can skip this section.

#### Settings

Settings field contains information that is used by the [Channel Switch](/v1/docs/dataflow-nodes-channel-switch) node, as well as project specific [Constraints](/v1/docs/dataflow-architecture-project-design#Constraints) The example below shows how you can run the `demo-batch` default project with every service.

```
{  
    "Settings":
    {    
        "ChannelTags":["agent", "customer"],
        "SpeakerDiarization": true,
        "DetectLanguage": true,
        "Normalizer": true,
        "ProfanityFilter": true,
        "Punctuation": true,
        "Summarization":true,
        "TopicDetection":true,
        "DebugMode":false
    }
}
```

#### CallProperties

Call Properties field contains useful information that is necessary for some of the SESTEK integration nodes to work. If the node documentation doesn't explicitly state that Call Properties is required, the user can skip this field altogether. For more information you can check the [CA Realtime](/v1/docs/dataflow-nodes-conversational-analytics-ca-realtime), [RTG](/v1/docs/rtg) and [VB Realtime](/v1/docs/voice-biometrics-1) pages.

```
{ 
  "CallProperties": 
  {
    "ExternalId": "a_valid_ext_id_for_call",
    "CustomerPhoneNumber": "a_valid_phone_number",
    "Direction": "1", 
    "UserProperties": {"ExternalId": "a_valid_ext_id_for_agent"}
  }
}
```

#### Events

Events field is a Json formatted array of objects. Each object represents an event. After the project starts, each of these events will be sent from the [Entry](/v1/docs/dataflow-nodes-entry) node consecutively. The example below sends two `SR Milestone` events that can be processed by many nodes such as: [TTS](/v1/docs/dataflow-nodes-tts-http-alpha), [Punctuation](/v1/docs/dataflow-nodes-punctuation), [Profanity Filter](/v1/docs/dataflow-nodes-profanity-filter), [Sentiment](/v1/docs/dataflow-nodes-sentiment) and more.

```
{
  "Events": [
    {
      "Name": "SR Milestone",
      "Channel": 0,
      "Data": {
        "Text": "Hello from channel zero"
      },
      "StartSampleIndex": 0,
      "EndSampleIndex": 1000
    },
    {
      "Name": "SR Milestone",
      "Channel": "1",
      "Data": {
        "Text": "Hello from channel one"
      },
      "StartSampleIndex": 1200,
      "EndSampleIndex": 2400
    }
  ]
}
```

#### Using Multiple Fields In Parameters

We can utilize all fields of `Parameters` at once as such:

```
{
    "Language":"en-US",
    "Settings":{ 
        "ChannelTags":["agent", "customer"]
    },
     "Events": [
        {
          "Name": "SR Milestone",
          "Channel": 0,
          "Data": {
            "Text": "Hello from channel zero"
          },
          "StartSampleIndex": 0,
          "EndSampleIndex": 1000
        },
        {
          "Name": "SR Milestone",
          "Channel": "1",
          "Data": {
            "Text": "Hello from channel one"
          },
          "StartSampleIndex": 1200,
          "EndSampleIndex": 2400
        }
     ],
     "CallProperties": 
     {
        "ExternalId": "a_valid_ext_id_for_call",
        "CustomerPhoneNumber": "a_valid_phone_number",
        "Direction": "1", 
        "UserProperties": {"ExternalId": "a_valid_ext_id_for_agent"}
      }
}
```
