> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes.

# parse_post_prompt_data

> Return post_prompt_data as a plain dict, whichever of its three shapes arrived.

[ref-post-prompt]: /docs/server-sdks/reference/python/core/post-prompt

[strip]: /docs/server-sdks/reference/python/core/post-prompt/strip-json-fence

Return `post_prompt_data` as a plain dict, whichever shape it arrived in:

* A `{"parsed": {...}}` or `{"parsed": [ {...} ]}` wrapper is unwrapped first.
* A flat object with real keys is returned as-is, minus `raw` and `parsed`.
* A `{"raw": "..."}` string is unfenced with [`strip_json_fence()`][strip] and parsed as JSON.
  Prose that isn't JSON becomes `{"summary": "<the prose>"}`.

Never raises. A malformed summary degrades to `{}` rather than failing the request that
delivered it.

## Parameters

**`data`** `Any` — required

The `post_prompt_data` value from a post-prompt body.

---

## Returns

`dict[str, Any]` -- The summary object, or `{}` when there is nothing usable.

## Example

```python {3}
from signalwire.core.post_prompt import parse_post_prompt_data

summary = parse_post_prompt_data(raw_body.get("post_prompt_data"))
print(summary.get("intent"))
```

Part of the [post-prompt normalization][ref-post-prompt] module.