---
title: 'Examples: Parsing a Streamed Response'
deprecated: false
hidden: false
metadata:
robots: index
---
Scenario: You receive streamed (SSE-style) responses from an action and want to parse it into objects.
An HTTP action returns a streamed response in this format:
```
data: {"thread_id": "d7b653f6-076a-4dfe-ae1f-cba4c442jd34", "date": "2025-11-11T20:37:49.053856Z"}
data: {"chunk": "echo bravo papa juliet oscar echo kilo mike kilo. (topic: hello from azure)"}
data: {"chunk": "charlie delta lima victor zulu whiskey delta uniform november. (topic: hello from azure)"}
data: {"chunk": "victor tango foxtrot india hotel tango papa xray alpha romeo. (topic: hello from azure)"}
data: {"chunk": "lima hotel oscar november uniform whiskey zulu india whiskey papa. (topic: hello from azure)"}
```
You want to produce:
* `thread_id` from the first object
* `date` from the first object
* `text`as a concatenation of all chunk values
**Approach**
Treat the streamed output as a JSON array encoded as text:
1. Remove the data: prefix
2. Create JSON Strings
3. Parse with $PARSE_JSON()
4. Extract metadata from index [0] and chunks from [1:]
In your compound action the return can reference the SSE action
```yaml
- return:
output_mapper:
thread_id: $CONCAT("[", data.action_output.$REPLACE("data: ", ",").$TRIM(),"]"], "").$PARSE_JSON([0].thread_id
date: $CONCAT(["[", data.action_output.$REPLACE("data: ", ",").$TRIM(),"]"], "").$PARSE_JSON()[0].date
text:
EVAL():
expression: $CONCAT(x, " ")
args:
x:
MAP():
items: >
$CONCAT(
["[", data.action_output.$REPLACE("data: ", ",").$TRIM()[1:], "]"],
""
).$PARSE_JSON()[1:]
converter: item.chunk
```
Or
```yaml
MERGE():
- data.action_output.$SPLIT("\n\n")[0].$REPLACE("^data: ", "").$PARSE_JSON()
- text: data.action_output.$TRIM().$SPLIT("\n\n").$MAP(x => x.$REPLACE("^data: ", "").$PARSE_JSON().chunk).$CONCAT("\n", true)
```