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

# Retrieving Data

> Read data from a Blnk Core instance via the Blnk Cloud Data API.

export const CtaCallout = props => {
  const {title, buttonLabel, href, trackingEvent, buttonTarget, rel = "noopener noreferrer", children} = props;
  const handleCtaClick = () => {
    if (typeof window === "undefined" || !trackingEvent) {
      return;
    }
    try {
      window.dispatchEvent(new CustomEvent("blnk:docs-cta", {
        detail: {
          name: trackingEvent,
          href
        }
      }));
    } catch {}
    try {
      window.posthog?.capture?.(trackingEvent, {
        href
      });
    } catch {}
    const gaPayload = {
      cta_href: href
    };
    try {
      window.gtag?.("event", trackingEvent, gaPayload);
    } catch {}
    try {
      window.dataLayer = window.dataLayer || [];
      window.dataLayer.push({
        event: trackingEvent,
        ...gaPayload
      });
    } catch {}
  };
  const isExternal = typeof href === "string" && (/^https?:\/\//i).test(href);
  const target = buttonTarget ?? (isExternal ? "_blank" : undefined);
  const linkRel = isExternal ? rel : undefined;
  return <section className="cta-callout not-prose relative my-8 w-full min-w-0 overflow-hidden rounded-xl border border-zinc-200 p-5 dark:border-white/10">
      <div className="cta-callout-noise" aria-hidden="true" />
      <div className="cta-callout-layout">
        {title ? <div className="cta-callout-title-row">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="14" height="14" className="cta-callout-icon shrink-0 text-zinc-800 dark:text-zinc-200" aria-hidden="true">
              <g fill="none" fillRule="nonzero">
                <path d="M28 0v28H0V0h28ZM14.691833333333335 27.134333333333334l-0.012833333333333334 0.0023333333333333335 -0.08283333333333333 0.04083333333333334 -0.023333333333333334 0.004666666666666667 -0.016333333333333335 -0.004666666666666667 -0.08283333333333333 -0.04083333333333334c-0.011666666666666667 -0.004666666666666667 -0.022166666666666668 -0.0011666666666666668 -0.028000000000000004 0.005833333333333334l-0.004666666666666667 0.011666666666666667 -0.019833333333333335 0.49933333333333335 0.005833333333333334 0.023333333333333334 0.011666666666666667 0.015166666666666667 0.12133333333333333 0.08633333333333333 0.0175 0.004666666666666667 0.014000000000000002 -0.004666666666666667 0.12133333333333333 -0.08633333333333333 0.014000000000000002 -0.018666666666666668 0.004666666666666667 -0.019833333333333335 -0.019833333333333335 -0.4981666666666667c-0.0023333333333333335 -0.011666666666666667 -0.0105 -0.019833333333333335 -0.019833333333333335 -0.021Zm0.3091666666666667 -0.13183333333333336 -0.015166666666666667 0.0023333333333333335 -0.21583333333333335 0.1085 -0.011666666666666667 0.011666666666666667 -0.0035000000000000005 0.012833333333333334 0.021 0.5016666666666667 0.005833333333333334 0.014000000000000002 0.009333333333333334 0.008166666666666668 0.23450000000000004 0.1085c0.014000000000000002 0.004666666666666667 0.026833333333333334 0 0.03383333333333334 -0.009333333333333334l0.004666666666666667 -0.016333333333333335 -0.03966666666666667 -0.7163333333333334c-0.0035000000000000005 -0.014000000000000002 -0.011666666666666667 -0.023333333333333334 -0.023333333333333334 -0.025666666666666667Zm-0.8341666666666667 0.0023333333333333335a0.026833333333333334 0.026833333333334334 0 0 0 -0.0315 0.007000000000000001l-0.007000000000000001 0.016333333333333335 -0.03966666666666667 0.7163333333333334c0 0.014000000000000002 0.008166666666666668 0.023333333333333334 0.019833333333333335 0.028000000000000004l0.0175 -0.0023333333333333335 0.23450000000000004 -0.1085 0.011666666666666667 -0.009333333333333334 0.004666666666666667 -0.012833333333333334 0.019833333333333335 -0.5016666666666667 -0.0035000000000000005 -0.014000000000000002 -0.011666666666666667 -0.011666666666666667 -0.21466666666666667 -0.10733333333333334Z" strokeWidth="1.1667" />
                <path fill="currentColor" d="M14 2.916666666666667A1.75 1.75 0 0 1 15.750000000000002 4.666666666666667v6.302333333333334L21.207666666666668 7.816666666666667a1.75 1.75 0 0 1 1.75 3.031L17.5 14l5.457666666666667 3.151166666666667a1.75 1.75 0 0 1 -1.75 3.031l-5.457666666666667 -3.1500000000000004V23.333333333333336a1.75 1.75 0 0 1 -3.5 0v-6.302333333333334L6.792333333333334 20.183333333333337a1.75 1.75 0 1 1 -1.75 -3.031L10.5 14 5.042333333333334 10.848833333333333a1.75 1.75 0 0 1 1.75 -3.031l5.457666666666667 3.1500000000000004V4.666666666666667A1.75 1.75 0 0 1 14 2.916666666666667Z" strokeWidth="1.1667" />
              </g>
            </svg>
            <p className="cta-callout-title min-w-0 font-semibold text-zinc-800 dark:text-zinc-200">
              {title}
            </p>
          </div> : null}
        <div className={`cta-callout-body text-sm leading-normal text-zinc-800 dark:text-zinc-200${title ? " cta-callout-body--indented" : ""}`}>
          {children}
        </div>
        <a href={href} target={target} rel={linkRel} onClick={handleCtaClick} data-docs-cta={trackingEvent || undefined} className="cta-callout-button inline-flex items-center justify-center gap-1 rounded-full bg-white px-3 py-1.5 text-sm font-semibold transition hover:bg-zinc-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white/50 dark:bg-white dark:hover:bg-zinc-200">
          {buttonLabel}
          <span className="cta-callout-button-arrow" aria-hidden="true">
            →
          </span>
        </a>
      </div>
    </section>;
};

The Data API lets you read, query, and filter data stored in a Blnk Core instance through Blnk Cloud.

For the full endpoint reference, see [Data API](/cloud/reference/data-api). To filter with JSON bodies, see [Filtering data](/cloud/proxy/filters-api).

It provides read-only access to Core data and is commonly used for dashboards, analytics, reporting, and back-office operations.

### How it works

* All requests go through Blnk Cloud, not directly to Core.
* Every request must target a specific Core instance using instance\_id.
* You authenticate using a Cloud access token.
* Blnk Cloud routes the request to the correct Core instance and returns the response.

### URL structure

**Base URL:**

```bash theme={"system"}
https://api.cloud.blnkfinance.com/data
```

**Required headers:**

```bash theme={"system"}
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json
```

Every request must always include `instance_id` as a query parameter.

```bash theme={"system"}
?instance_id=YOUR_INSTANCE_ID
```

***

## Listing resources

To list ledgers, balances, transactions, or identities, the general pattern is:

```bash wrap theme={"system"}
curl -X GET "https://api.cloud.blnkfinance.com/data/{resource}?instance_id=YOUR_INSTANCE_ID&page=1&pageSize=20" \
  -H "Authorization: Bearer blnk_at_YOUR_ACCESS_TOKEN"
```

<Info>
  `page` and `pageSize` are optional. If you omit them, defaults apply:

  * `page=1`
  * `pageSize=30` for ledgers, `pageSize=20` for balances, transactions, and identities.
</Info>

| Resource     | Path            |
| ------------ | --------------- |
| Ledgers      | `/ledgers`      |
| Balances     | `/balances`     |
| Transactions | `/transactions` |
| Identities   | `/identities`   |

For example, to list transactions:

<CodeGroup>
  ```bash Example - List all transactions wrap theme={"system"}
  curl -X GET "https://api.cloud.blnkfinance.com/data/transactions?instance_id=YOUR_INSTANCE_ID&page=1&pageSize=20" \
    -H "Authorization: Bearer blnk_at_YOUR_ACCESS_TOKEN"
  ```

  ```json 200 OK theme={"system"}
  {
    "data": [
      {
        "transaction_id": "txn_c4e70eb8-e4d6-4e04-a2e2-92a43b969e0c",
        "amount": 100.50,
        "currency": "USD",
        "source": "bln_5ce86029-3c2e-4e2a-aae2-7fb931ca4c4f",
        "destination": "bln_ANOTHER_BALANCE_ID_FROM_STEP_2",
        "status": "APPLIED",
        "created_at": "2024-11-26T08:40:00.000000000Z",
        "precision": 100,
        "meta_data": {
          "myApp": {
            "channel": "web",
            "approval_status": "approved"
          }
        }
      }
    ],
    "total": 42
  }
  ```
</CodeGroup>

***

## Fetch resource details

To retrieve details for a single ledger, balance, transaction, or identity by ID, use the detail routes. The general pattern is:

```bash wrap theme={"system"}
curl -X GET "https://api.cloud.blnkfinance.com/data/{resource}/{resource_id}?instance_id=YOUR_INSTANCE_ID&page=1&pageSize=20" \
  -H "Authorization: Bearer blnk_at_YOUR_ACCESS_TOKEN"
```

| Resource    | Path                                 |
| ----------- | ------------------------------------ |
| Ledger      | `/data/ledgers/:ledger_id`           |
| Balance     | `/data/balances/:balance_id`         |
| Transaction | `/data/transactions/:transaction_id` |
| Identity    | `/data/identities/:identity_id`      |

<CodeGroup>
  ```bash Example - Transaction details wrap theme={"system"}
  curl -X GET "https://api.cloud.blnkfinance.com/data/transactions/txn_c4e70eb8-e4d6-4e04-a2e2-92a43b969e0c?instance_id=YOUR_INSTANCE_ID" \
    -H "Authorization: Bearer blnk_at_YOUR_ACCESS_TOKEN"
  ```

  ```bash Example - Balance details wrap theme={"system"}
   curl -X GET "https://api.cloud.blnkfinance.com/data/balances/bln_5ce86029-3c2e-4e2a-aae2-7fb931ca4c4f?instance_id=YOUR_INSTANCE_ID" \
    -H "Authorization: Bearer blnk_at_YOUR_ACCESS_TOKEN"
  ```
</CodeGroup>

***

## Working with filters

The Data API uses suffixes on field names to express filter operators.

Instead of sending operators as separate parameters, you append a suffix to the field name to indicate how the value should be compared.

```
{field}_{operator}=value
```

For example:

```bash theme={"system"}
currency_eq=USD
amount_gte=50
status_ne=PENDING
```

Each filter is passed as a query parameter. Multiple filters can be combined in a single request.

<Warning>
  The following parameters are reserved for pagination, sorting, or routing and must not be used as filter fields:

  * `page`, `pageSize`, `per_page`, `limit`, `offset`
  * `sort`, `order`, `order_by`, `order_dir`
  * `instance_id`, `org_id`
</Warning>

### Supported operators

| Operator     | Suffix     | Meaning          | Example                                                         |
| ------------ | ---------- | ---------------- | --------------------------------------------------------------- |
| Equal        | `_eq`      | equals           | `currency_eq=USD`                                               |
| Not equal    | `_ne`      | not equals       | `status_ne=PENDING`                                             |
| Greater than | `_gt`      | `>`              | `amount_gt=100`                                                 |
| Greater/eq   | `_gte`     | `≥`              | `amount_gte=50`                                                 |
| Less than    | `_lt`      | `<`              | `amount_lt=500`                                                 |
| Less/eq      | `_lte`     | `≤`              | `amount_lte=500`                                                |
| In           | `_in`      | in list          | `status_in=APPLIED,SCHEDULED`                                   |
| Between      | `_between` | between          | `created_at_between=2025-01-01T00:00:00Z\|2025-01-31T23:59:59Z` |
| Like         | `_like`    | pattern match    | `reference_like=ref_%`                                          |
| ILike        | `_ilike`   | case-insensitive | `description_ilike=%fee%`                                       |

### Operator-specific rules

1. **BETWEEN:**

   * Provide two values separated by a single pipe `|`
   * Encode the pipe as `%7C` in URLs

   ```bash Example theme={"system"}
   created_at_between=2025-01-01T00:00:00%7C2025-01-31T23:59:59Z
   ```

2. **IN:**

   * Provide comma-separated values

   ```bash Example theme={"system"}
   currency_in=USD,EUR,GBP`
   ```

3. **LIKE / ILIKE:**

   * Use SQL-style wildcards.
   * `%` matches any sequence of characters.
   * `_` matches a single character.

   ```bash Example theme={"system"}
   reference_like=ref_%
   description_ilike=%fee%
   ```

### Example: Filtering transactions

Here's an example of how filter operators can be used together in a request:

<CodeGroup>
  ```bash Example request URL wrap theme={"system"}
  GET /data/transactions?
    instance_id=YOUR_INSTANCE_ID&
    currency_eq=USD&
    amount_gte=50&
    amount_lte=500&
    created_at_between=2025-01-01T00:00:00%7C2025-01-31T23:59:59Z
  ```

  ```json Success theme={"system"}
  {
    "data": [
      {
        "transaction_id": "txn_c4e70eb8-e4d6-4e04-a2e2-92a43b969e0c",
        "amount": 100.50,
        "currency": "USD",
        "status": "APPLIED",
        "created_at": "2025-01-15T10:00:00.000000000Z"
      }
    ],
    "total": 12
  }
  ```
</CodeGroup>

### Filterable fields by resource

The table below lists the fields you can use for filtering on each Data API resource.

| Resource     | Fields                                                                                                                                                                                                                                                               |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ledgers      | `ledger_id`, `name`, `created_at`, `meta_data`, `meta_data.<path>`                                                                                                                                                                                                   |
| Balances     | `balance_id`, `ledger_id`, `identity_id`, `indicator`, `currency`<br />`balance`, `credit_balance`, `debit_balance`<br />`inflight_balance`, `inflight_credit_balance`, `inflight_debit_balance`<br />`created_at`, `meta_data`                                      |
| Transactions | `transaction_id`, `parent_transaction`, `amount`, `currency`<br />`source`, `destination`, `balance_id`, `reference`<br />`status`, `created_at`, `effective_date`, `precision`, `meta_data`                                                                         |
| Identities   | `identity_id`, `first_name`, `last_name`, `other_names`, `gender`, `dob`<br />`email_address`, `phone_number`, `nationality`, `street`, `country`<br />`state`, `organization_name`, `category`, `identity_type`<br />`post_code`, `city`, `created_at`, `meta_data` |

> Nested `meta_data` keys use dot notation, and the operator suffix goes at the end. Example: `meta_data.myApp.channel_eq=web`.

***

<CtaCallout title="Need help building your app?" href="https://blnkfinance.com/contact/us?utm_source=blnk_docs&utm_medium=documentation&utm_campaign=apps-help" buttonLabel="Get Pro Support" trackingEvent="clicked_pro_support">
  We help you build custom apps for your use case or get help building your own from scratch.
</CtaCallout>
