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

# Extract data from JSON

> Use Get data from JSON in Fliqr AI Flows to parse JSONPath values into custom fields — including AI responses that return JSON.

**Get data from JSON** reads a JSON string (from an AI Action, External Request, or a custom field) and saves selected values into custom fields using JSONPath.

Find it in Flow Builder under **Actions → Tools → Get data from JSON**.

## Extract with JSONPath

<Steps>
  <Step title="Have JSON in a field">
    Store the JSON string in a custom field first (for example from an [AI Action](/docs/core-concepts/flows/ai-actions) or [External Request](/docs/core-concepts/flows/external-requests) mapping).
  </Step>

  <Step title="Add Get data from JSON">
    Point the action at the field that holds the JSON.
  </Step>

  <Step title="Map paths to fields">
    For each value you need, set a JSONPath and a destination custom field.
  </Step>

  <Step title="Validate paths">
    Copy a sample response into a JSONPath tester (for example [Site24x7 JSONPath finder](https://www.site24x7.com/tools/jsonpath-finder-validator.html)) before you publish.
  </Step>
</Steps>

## Success and failure paths

| Path        | When it runs                               |
| ----------- | ------------------------------------------ |
| **Success** | At least one custom field received a value |
| **Failed**  | JSON is invalid, or no field was updated   |

<Warning>
  If you map several fields and a JSONPath is wrong, Fliqr AI may clear the destination custom field. After extraction, use a [Condition](/docs/core-concepts/flows/conditions) to confirm required fields are not empty before you continue.
</Warning>

## Ask AI to return JSON

In an AI Action prompt, ask for JSON and include an example shape:

```text theme={null}
Read the receipt and return JSON only with customer tax ID, email, and phone:

{
  "email": "",
  "phone": "",
  "tax_id": ""
}
```

Then run **Get data from JSON** on the model output and map `email`, `phone`, and `tax_id` into custom fields.

## Typical uses

* Split one API blob into many contact fields
* Parse structured AI output (receipts, tickets, qualification scores)
* Normalize nested JSON before [Dynamic choices](/docs/core-concepts/flows/dynamic-choices) or Conditions

## Next

<CardGroup cols={2}>
  <Card title="External requests" icon="plug" href="/docs/core-concepts/flows/external-requests">
    Call APIs and map response bodies.
  </Card>

  <Card title="Dynamic content" icon="code" href="/docs/core-concepts/flows/dynamic-content">
    Return ready-to-send messages from your API.
  </Card>
</CardGroup>
