> This page is for Financial Rider Flow.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://infonite.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://infonite.dev/_mcp/server.

# Create Session

POST https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init
Content-Type: application/json

Open a Financial Rider session for one of your customers, and get the `widget_url` to send them to.

Choose how the session finds your customer's bank:

| You send | The session |
| :--- | :--- |
| `markets` and `entity_types` | Offers every bank of those markets and kinds your application may use, the most used first. Your customer picks; with `max_connections` (1 to 3) they may connect several. |
| `engine_reference` | Connects that one bank, which must be able to run right now. Your customer chooses nothing; `max_connections` is 1. |

Sending both is refused (`422`). Values you leave out come from your application's defaults, when it has them. The consent screen is not chosen here: it is your application's, as agreed for it.

**Also in the request:**
- **`executions_features`** — what to read: the customer profile, accounts, cards, deposits, loans, the investment families, direct debits.
- **`engines_layout`, `priority_engines`, `featured_engines`** — how the selection draws the banks for this session: the first ones as rows of tiles, yours listed first in your order, up to three highlighted. A field you send is used as sent — an empty list orders nothing, an empty dictionary highlights nothing —; one you leave out takes your application's setting.
- **`fixed_parameters`** — what you already know about your customer: `user_identification` (a Spanish NIF or NIE) and `user_email`. A document that asks for the signer's identity starts with it, and the signer must assert that same identity. It is never used as a bank username.
- **`aes_key`** — encrypts the `data` of every webhook; without it, events travel without data.
- **`tokenized_access`** — answers with a `ticket` to exchange each connection for a reusable credentials token, at [Exchange a ticket](https://infonite.dev/direct-executions/api-reference/direct-executions-api/tokenization/direct-executions-v-1-token-exchange) on the Direct Executions API; refreshing is a server-to-server [Initiate with a token](https://infonite.dev/direct-executions/api-reference/direct-executions-api/starting-executions/direct-executions-v-1-init-tokenized), with no widget. **The session then offers only the banks that can keep credentials** (`tokenized_access` on the engine catalogue), and a named bank that cannot is refused.
- **`completion_mode` / `completion_url`** — what the experience does when the session ends; a return URL must be one of your application's.
- **`hooks_extra_data`** — values echoed into your webhook URLs.

**Why a session is refused:**
- `400` — nothing your application may use matches the filters (`no_engines_available`), nothing that matches can keep credentials when the session asks for `tokenized_access` (`no_engines_available_for_tokenized_access`), or the return URL is not one of yours.
- `403` — a production session from an application that is not in production, or without the capability it needs.
- `404` — the named bank does not exist.
- `422` — the request contradicts itself, or a named bank is not one this session can use — among the reasons, `engine_not_available_for_tokenized_access`.
- `503` — the named bank cannot run right now; the `detail` says why.

> This endpoint needs to be executed with an app secret, so should always be used in server side without exposing the secret to customers.


Reference: https://infonite.dev/flows/financial-rider/api-reference/financial-rider-api/sessions-management/flows-financial-rider-v-1-session-create

## Authentication

- `X-APP-SECRET` header (required) — Application Secret

## Servers

- `https://widgets.infonite.tech/api/flows` (Legacy, default)
- `https://widgets.infonite.io/api/flows` (Production)

## Request

### Body (application/json)

This endpoint expects a FlowStateCreateSchema.

- `customer_id` (string, required) — Your own identifier for the end user, up to 64 characters. It comes back with every read and every event of this session.
- `settings` (FlowSettingsCreateSchema, required) — How the session runs: what it reads, from where, and how the results reach you.
- `fixed_parameters` (FlowFixedParametersSchema, optional) — What you already know about the end user, to be corroborated on their signatures.
- `date_limit` (string, optional) — When the session must close if it is still open. Absent: 12 hours after creation; it is never later than 72 hours after creation, and never before it.

## Response

### 200

**200 OK**Flow Session created successfully

- `session_id` (string, required) — The identifier of the new session. Every read of the session uses it.
- `widget_url` (string, required) — Where to send the end user: open it in an iframe, a new tab or a web view.
- `session_token` (string, required) — The end user's credential for this session, already embedded in `widget_url`. It lets the widget act on the session; it never reads its results.
- `ticket` (string, optional) — Present only when the session asked for `tokenized_access`. Exchange it, together with the id of each connection in the results, for a reusable credentials token — at *Exchange a ticket*, on the Direct Executions API. It is shown here and nowhere else.

## Errors

### 400 Bad Request Error

**400 Bad Request**The session cannot be opened as asked

- `detail` (string, required) — Error message

### 401 Unauthorized Error

**401 Unauthorized**The application secret was not accepted

- `detail` (string, required) — Error message

### 403 Forbidden Error

**403 Forbidden**The application may not act, or may not open this session

- `detail` (string, required) — Error message

### 404 Not Found Error

**404 Not Found**The named engine does not exist

- `detail` (string, required) — Error message

### 422 Unprocessable Entity Error

**422 Unprocessable Content**The request could not be read, or contradicts itself. `detail` names every offender by its path: under `body` for what the schema refuses, under `settings` for what the session cannot run with once your application's defaults are applied.

- `detail` (list of ValidationError, required)

### 500 Internal Server Error

**500 Internal Server Error**The session could not be created

- `detail` (string, required) — Error message

### 503 Service Unavailable Error

**503 Service Unavailable**The named engine cannot run right now

- `detail` (string, required) — Error message

## Types

### FlowSettingsCreateSchema

How the session runs. Anything you leave out is taken from your application's defaults.

- `sandbox` (boolean, required) — `true` to run the session against demo entities. `false` requires an application enabled for production.
- `aes_key` (string, optional) — Optional 32-byte key, base64-encoded. With it, the webhooks carry the results encrypted under this key; without it they carry no data, and the results are read from the session API. Use a fresh key for every session.
- `executions_features` (list of FlowSettingsCreateSchemaExecutionsFeaturesItems, optional) — What to read from each connected entity. Absent: your application's default; with neither, the session is refused.
- `markets` (list of enum, optional) — The markets to offer entities from. Absent: your application's default; with neither, the session is refused.
  - Allowed values: `ES`, `CO`
- `entity_types` (list of enum, optional) — The kinds of financial entity to offer: `retail` (banking for individuals), `corporate` (banking for companies), `private` (private banking), `investment` (investment services) and `retailer_service` (card issuers and consumer finance that are not banks). Absent: your application's default; with neither, the session is refused.
  - Allowed values: `retail`, `corporate`, `private`, `investment`, `retailer_service`
- `max_connections` (integer, optional) — How many entities the end user may connect, from 1 to 3. Reaching it ends the session; below it the end user can finish earlier. Absent: your application's default.
- `engine_reference` (string, optional) — The engine to connect, when you already know which entity the end user banks with: an engine reference, as the engine catalogue publishes it. The session then skips the entity selection — it offers that engine alone and connects exactly one entity. It cannot be combined with `markets` or `entity_types`, and `max_connections` can only be 1.
- `tokenized_access` (boolean, optional) — `true` to tokenize the credentials of each connection, so that access can be run again later without them. The session then offers only the banks that can keep credentials. A production session requires an application enabled for tokenization. Absent: your application's default.
- `engines_layout` (enum, optional) — How the selection screen lays out the entities: `list`, or the first ones as one to three rows of tiles and the rest as a list below (`1-row-list`, `2-row-list`, `3-row-list`). Absent: your application's setting.
  - Allowed values: `list`, `1-row-list`, `2-row-list`, `3-row-list`
- `priority_engines` (list of string, optional) — The entities to list first, by engine code and in this order, ahead of the catalogue's own; an empty list lists none first. A code the session does not offer is ignored: a preference, never a filter. Absent: your application's setting.
- `featured_engines` (FlowSettingsCreateSchemaFeaturedEngines, optional) — Up to three entities to highlight on the selection, by engine code: a short text after an icon, where you say on the entity's tile. An empty dictionary highlights none. A code the session does not offer is ignored. Absent: your application's setting.
- `hooks_extra_data` (map from string to string, optional) — Extra data to be included in the hooks. This data will be returned in the webhook as part of the URL as query parameters. This can be useful to include dynamic data in the webhook. There are some template variables that can be used: * `{app_id}`: Your app ID * `{customer_id}`: The customer ID * `{session_id}`: The Session ID * `{parameters_id}`: The unique credentials ID, this identifier is computed by the engine based on the fixed part of the credentials (e.g. the username) * `{producer}`: The producer of the event * `{event}`: The event that triggered the hook * `{status_code}`: The status of the flow at the moment of the event For example, passing: ```json { "custom_param": "customValue", "current_event": "{event}", "status": "{status_code}", "id": "{session_id}" } ``` Will result in the following URL: `https://your.url.com/your/path?custom_param=customValue&current_event=ended&status=COMPLETED&id=67d7d9b72eb0693e7da47a0e` > **Note:** This data is not encrypted and should not contain sensitive information.
- `completion_mode` (enum, optional) — What the widget does when the session ends. Absent: it stays on its final screen.
  - Allowed values: `do_nothing`, `redirect`, `redirect_blank`
- `completion_url` (string, optional) — Where to send the end user when the session ends. Required by the redirect modes; it is one of your application's redirect URLs or lies under one — the same scheme, host and port, its path starting with the registered one.
- `completion_extra_data` (map from string to string, optional) — Extra data to be included in the redirect URL. This data will be added to the the url as query parameters. This can be useful to include dynamic data in the webhook. There are some template variables that can be used in the URL: * `{app_id}`: Your app ID * `{customer_id}`: The customer ID * `{session_id}`: The Session ID * `{status_code}`: The final status code of the session For example, passing: ```json { "custom_param": "customValue", "status": "{status_code}", "id": "{session_id}" } ``` Will result in the following URL: `https://your.url.com/your/path?custom_param=customValue&status=COMPLETED&id=67d7d9b72eb0693e7da47a0e` > **Note:** This data is not encrypted and should not contain sensitive information.

### FlowFixedParametersSchema

What you already know about the end user. All personal data provided in this section must have the proper consent of the end user. INFONITE assumes you obtained it before sending it.

- `user_identification` (string, optional) — The end user's Spanish NIF or NIE. When a document of the consent screen asks for the signer's identity, the widget offers this one, and the signer must assert the same: a different identity is refused. It is never imposed as an entity's username — a bank's may be another document, or an alias of its own.
- `user_email` (string, optional) — The end user's email, recorded with the evidence of each signature.

### ValidationError

- `loc` (list of ValidationErrorLocItems, required)
- `msg` (string, required)
- `type` (string, required)
- `input` (any, optional)
- `ctx` (ValidationErrorCtx, optional)

### FlowSettingsCreateSchemaExecutionsFeaturesItems

- Feature Code: enum
  - Allowed values: `accounts_read`, `cards_read`, `customer_information_read`, `deposits_read`, `direct_debits_read`, `funds_read`, `investment_accounts_read`, `loans_read`, `pensions_read`, `stocks_read`
- FlowSettingsCreateSchemaExecutionsFeaturesItems1

### FlowSettingsCreateSchemaFeaturedEngines

Up to three entities to highlight on the selection, by engine code: a short text after an icon, where you say on the entity's tile. An empty dictionary highlights none. A code the session does not offer is ignored. Absent: your application's setting.

### ValidationErrorLocItems

- string
- integer

### ValidationErrorCtx

### FlowSettingsCreateSchemaExecutionsFeaturesItems1

- `code`: `accounts_read` (Financial Accounts Read)
  - `configurations` (catgrid_forms__engines__features__financial__accounts__FeatureConfigurations, optional)
- `code`: `cards_read` (Financial Cards Read)
  - `configurations` (catgrid_forms__engines__features__financial__cards__FeatureConfigurations, optional)
- `code`: `customer_information_read` (Customer Information Read)
  - `configurations` (IFeatureConfigurations, optional) — This feature does not require any configuration
- `code`: `deposits_read` (Financial Deposits Read)
  - `configurations` (IFeatureConfigurations, optional) — This feature does not require any configuration
- `code`: `direct_debits_read` (Direct Debits Read)
  - `configurations` (IFeatureConfigurations, optional) — This feature does not require any configuration
- `code`: `funds_read` (Investment Funds Read)
  - `configurations` (IFeatureConfigurations, optional) — This feature does not require any configuration
- `code`: `investment_accounts_read` (Investment Accounts Read)
  - `configurations` (IFeatureConfigurations, optional) — This feature does not require any configuration
- `code`: `loans_read` (Financial Loans Read)
  - `configurations` (IFeatureConfigurations, optional) — This feature does not require any configuration
- `code`: `pensions_read` (Pension Plans Read)
  - `configurations` (IFeatureConfigurations, optional) — This feature does not require any configuration
- `code`: `stocks_read` (Investment Stocks Read)
  - `configurations` (IFeatureConfigurations, optional) — This feature does not require any configuration

### catgrid_forms__engines__features__financial__accounts__FeatureConfigurations

- `from_date` (date, optional, default: 30 days ago) — The date from which the sub-product will be read
- `to_date` (date, optional, default: today) — The date until which the sub-product will be read
- `limits_behaviour` (enum, optional, default: error) — The behaviour when the date limits are not respected. - `error`: raise an error and abort the execution - `adapt`: adapt the dates to the limits and continue the execution
  - Allowed values: `error`, `adapt`
- `read_transactions` (boolean, optional, default: false) — If true, the engine will try to read the account transactions
- `read_holders` (boolean, optional, default: false) — If true, the engine will try to read the account holders

### catgrid_forms__engines__features__financial__cards__FeatureConfigurations

- `from_date` (date, optional, default: 30 days ago) — The date from which the sub-product will be read
- `to_date` (date, optional, default: today) — The date until which the sub-product will be read
- `limits_behaviour` (enum, optional, default: error) — The behaviour when the date limits are not respected. - `error`: raise an error and abort the execution - `adapt`: adapt the dates to the limits and continue the execution
  - Allowed values: `error`, `adapt`
- `read_transactions` (boolean, optional, default: false) — If true, the engine will try to read the card transactions
- `filter_by_type` (list of enum, optional, default: ["financial_card:credit","financial_card:mixed","financial_card:debit","financial_card:prepaid"]) — The types of cards to be read. By default all types are requested
  - Allowed values: `financial_card:debit`, `financial_card:credit`, `financial_card:prepaid`, `financial_card:mixed`

### IFeatureConfigurations

This feature does not require any configuration

## Examples

### Let the end user choose their bank

**Request**

```json
{
  "customer_id": "cust_esp_202406",
  "settings": {
    "sandbox": true,
    "executions_features": [
      "customer_information_read",
      "accounts_read",
      "cards_read",
      "deposits_read",
      "loans_read",
      "investment_accounts_read",
      "stocks_read",
      "funds_read",
      "pensions_read"
    ],
    "markets": [
      "ES"
    ],
    "entity_types": [
      "retail"
    ]
  }
}
```

**Response**

```json
{
  "session_id": "644599da47847b79c03cc94f",
  "widget_url": "https://infonite.app?session_token=sk_test_644599da47847b79c03cc94fd41d8cd98f",
  "session_token": "sk_test_644599da47847b79c03cc94fd41d8cd98f"
}
```

**SDK Code**

```python Let the end user choose their bank
import requests

url = "https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init"

payload = {
    "customer_id": "cust_esp_202406",
    "settings": {
        "sandbox": True,
        "executions_features": ["customer_information_read", "accounts_read", "cards_read", "deposits_read", "loans_read", "investment_accounts_read", "stocks_read", "funds_read", "pensions_read"],
        "markets": ["ES"],
        "entity_types": ["retail"]
    }
}
headers = {
    "X-APP-SECRET": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Let the end user choose their bank
const url = 'https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init';
const options = {
  method: 'POST',
  headers: {'X-APP-SECRET': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"customer_id":"cust_esp_202406","settings":{"sandbox":true,"executions_features":["customer_information_read","accounts_read","cards_read","deposits_read","loans_read","investment_accounts_read","stocks_read","funds_read","pensions_read"],"markets":["ES"],"entity_types":["retail"]}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Let the end user choose their bank
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init"

	payload := strings.NewReader("{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"markets\": [\n      \"ES\"\n    ],\n    \"entity_types\": [\n      \"retail\"\n    ]\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("X-APP-SECRET", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Let the end user choose their bank
require 'uri'
require 'net/http'

url = URI("https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["X-APP-SECRET"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"markets\": [\n      \"ES\"\n    ],\n    \"entity_types\": [\n      \"retail\"\n    ]\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java Let the end user choose their bank
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init")
  .header("X-APP-SECRET", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"markets\": [\n      \"ES\"\n    ],\n    \"entity_types\": [\n      \"retail\"\n    ]\n  }\n}")
  .asString();
```

```php Let the end user choose their bank
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init', [
  'body' => '{
  "customer_id": "cust_esp_202406",
  "settings": {
    "sandbox": true,
    "executions_features": [
      "customer_information_read",
      "accounts_read",
      "cards_read",
      "deposits_read",
      "loans_read",
      "investment_accounts_read",
      "stocks_read",
      "funds_read",
      "pensions_read"
    ],
    "markets": [
      "ES"
    ],
    "entity_types": [
      "retail"
    ]
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'X-APP-SECRET' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp Let the end user choose their bank
using RestSharp;

var client = new RestClient("https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init");
var request = new RestRequest(Method.POST);
request.AddHeader("X-APP-SECRET", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"markets\": [\n      \"ES\"\n    ],\n    \"entity_types\": [\n      \"retail\"\n    ]\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Let the end user choose their bank
import Foundation

let headers = [
  "X-APP-SECRET": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "customer_id": "cust_esp_202406",
  "settings": [
    "sandbox": true,
    "executions_features": ["customer_information_read", "accounts_read", "cards_read", "deposits_read", "loans_read", "investment_accounts_read", "stocks_read", "funds_read", "pensions_read"],
    "markets": ["ES"],
    "entity_types": ["retail"]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Up to two banks, tokenized, with a redirect and your own context

**Request**

```json
{
  "customer_id": "cust_esp_202406",
  "settings": {
    "sandbox": true,
    "aes_key": "PkQ2cVJ0VXZXeFl6QTNCNUQ3RjlIMEoyTDRONlA4UjA=",
    "executions_features": [
      "customer_information_read",
      "accounts_read",
      "cards_read",
      "deposits_read",
      "loans_read",
      "investment_accounts_read",
      "stocks_read",
      "funds_read",
      "pensions_read"
    ],
    "markets": [
      "ES"
    ],
    "entity_types": [
      "retail",
      "retailer_service"
    ],
    "max_connections": 2,
    "tokenized_access": true,
    "hooks_extra_data": {
      "case_id": "CASE-2026-0912-77"
    },
    "completion_mode": "redirect",
    "completion_url": "https://clientapp.example.com/verification/done"
  },
  "fixed_parameters": {
    "user_identification": "44444444A",
    "user_email": "demo.person1@example.com"
  },
  "date_limit": "2026-09-12T23:59:59+00:00"
}
```

**Response**

```json
{
  "session_id": "644599da47847b79c03cc94f",
  "widget_url": "https://infonite.app?session_token=sk_test_644599da47847b79c03cc94fd41d8cd98f",
  "session_token": "sk_test_644599da47847b79c03cc94fd41d8cd98f",
  "ticket": "dRBnhbN9SKRM9154EfmSfFCJSKdQLevZSIFYcC68GgECejoiKgopvkVuUi7gkSoH"
}
```

**SDK Code**

```python Up to two banks, tokenized, with a redirect and your own context
import requests

url = "https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init"

payload = {
    "customer_id": "cust_esp_202406",
    "settings": {
        "sandbox": True,
        "aes_key": "PkQ2cVJ0VXZXeFl6QTNCNUQ3RjlIMEoyTDRONlA4UjA=",
        "executions_features": ["customer_information_read", "accounts_read", "cards_read", "deposits_read", "loans_read", "investment_accounts_read", "stocks_read", "funds_read", "pensions_read"],
        "markets": ["ES"],
        "entity_types": ["retail", "retailer_service"],
        "max_connections": 2,
        "tokenized_access": True,
        "hooks_extra_data": { "case_id": "CASE-2026-0912-77" },
        "completion_mode": "redirect",
        "completion_url": "https://clientapp.example.com/verification/done"
    },
    "fixed_parameters": {
        "user_identification": "44444444A",
        "user_email": "demo.person1@example.com"
    },
    "date_limit": "2026-09-12T23:59:59+00:00"
}
headers = {
    "X-APP-SECRET": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Up to two banks, tokenized, with a redirect and your own context
const url = 'https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init';
const options = {
  method: 'POST',
  headers: {'X-APP-SECRET': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"customer_id":"cust_esp_202406","settings":{"sandbox":true,"aes_key":"PkQ2cVJ0VXZXeFl6QTNCNUQ3RjlIMEoyTDRONlA4UjA=","executions_features":["customer_information_read","accounts_read","cards_read","deposits_read","loans_read","investment_accounts_read","stocks_read","funds_read","pensions_read"],"markets":["ES"],"entity_types":["retail","retailer_service"],"max_connections":2,"tokenized_access":true,"hooks_extra_data":{"case_id":"CASE-2026-0912-77"},"completion_mode":"redirect","completion_url":"https://clientapp.example.com/verification/done"},"fixed_parameters":{"user_identification":"44444444A","user_email":"demo.person1@example.com"},"date_limit":"2026-09-12T23:59:59+00:00"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Up to two banks, tokenized, with a redirect and your own context
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init"

	payload := strings.NewReader("{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"aes_key\": \"PkQ2cVJ0VXZXeFl6QTNCNUQ3RjlIMEoyTDRONlA4UjA=\",\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"markets\": [\n      \"ES\"\n    ],\n    \"entity_types\": [\n      \"retail\",\n      \"retailer_service\"\n    ],\n    \"max_connections\": 2,\n    \"tokenized_access\": true,\n    \"hooks_extra_data\": {\n      \"case_id\": \"CASE-2026-0912-77\"\n    },\n    \"completion_mode\": \"redirect\",\n    \"completion_url\": \"https://clientapp.example.com/verification/done\"\n  },\n  \"fixed_parameters\": {\n    \"user_identification\": \"44444444A\",\n    \"user_email\": \"demo.person1@example.com\"\n  },\n  \"date_limit\": \"2026-09-12T23:59:59+00:00\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("X-APP-SECRET", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Up to two banks, tokenized, with a redirect and your own context
require 'uri'
require 'net/http'

url = URI("https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["X-APP-SECRET"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"aes_key\": \"PkQ2cVJ0VXZXeFl6QTNCNUQ3RjlIMEoyTDRONlA4UjA=\",\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"markets\": [\n      \"ES\"\n    ],\n    \"entity_types\": [\n      \"retail\",\n      \"retailer_service\"\n    ],\n    \"max_connections\": 2,\n    \"tokenized_access\": true,\n    \"hooks_extra_data\": {\n      \"case_id\": \"CASE-2026-0912-77\"\n    },\n    \"completion_mode\": \"redirect\",\n    \"completion_url\": \"https://clientapp.example.com/verification/done\"\n  },\n  \"fixed_parameters\": {\n    \"user_identification\": \"44444444A\",\n    \"user_email\": \"demo.person1@example.com\"\n  },\n  \"date_limit\": \"2026-09-12T23:59:59+00:00\"\n}"

response = http.request(request)
puts response.read_body
```

```java Up to two banks, tokenized, with a redirect and your own context
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init")
  .header("X-APP-SECRET", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"aes_key\": \"PkQ2cVJ0VXZXeFl6QTNCNUQ3RjlIMEoyTDRONlA4UjA=\",\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"markets\": [\n      \"ES\"\n    ],\n    \"entity_types\": [\n      \"retail\",\n      \"retailer_service\"\n    ],\n    \"max_connections\": 2,\n    \"tokenized_access\": true,\n    \"hooks_extra_data\": {\n      \"case_id\": \"CASE-2026-0912-77\"\n    },\n    \"completion_mode\": \"redirect\",\n    \"completion_url\": \"https://clientapp.example.com/verification/done\"\n  },\n  \"fixed_parameters\": {\n    \"user_identification\": \"44444444A\",\n    \"user_email\": \"demo.person1@example.com\"\n  },\n  \"date_limit\": \"2026-09-12T23:59:59+00:00\"\n}")
  .asString();
```

```php Up to two banks, tokenized, with a redirect and your own context
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init', [
  'body' => '{
  "customer_id": "cust_esp_202406",
  "settings": {
    "sandbox": true,
    "aes_key": "PkQ2cVJ0VXZXeFl6QTNCNUQ3RjlIMEoyTDRONlA4UjA=",
    "executions_features": [
      "customer_information_read",
      "accounts_read",
      "cards_read",
      "deposits_read",
      "loans_read",
      "investment_accounts_read",
      "stocks_read",
      "funds_read",
      "pensions_read"
    ],
    "markets": [
      "ES"
    ],
    "entity_types": [
      "retail",
      "retailer_service"
    ],
    "max_connections": 2,
    "tokenized_access": true,
    "hooks_extra_data": {
      "case_id": "CASE-2026-0912-77"
    },
    "completion_mode": "redirect",
    "completion_url": "https://clientapp.example.com/verification/done"
  },
  "fixed_parameters": {
    "user_identification": "44444444A",
    "user_email": "demo.person1@example.com"
  },
  "date_limit": "2026-09-12T23:59:59+00:00"
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'X-APP-SECRET' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp Up to two banks, tokenized, with a redirect and your own context
using RestSharp;

var client = new RestClient("https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init");
var request = new RestRequest(Method.POST);
request.AddHeader("X-APP-SECRET", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"aes_key\": \"PkQ2cVJ0VXZXeFl6QTNCNUQ3RjlIMEoyTDRONlA4UjA=\",\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"markets\": [\n      \"ES\"\n    ],\n    \"entity_types\": [\n      \"retail\",\n      \"retailer_service\"\n    ],\n    \"max_connections\": 2,\n    \"tokenized_access\": true,\n    \"hooks_extra_data\": {\n      \"case_id\": \"CASE-2026-0912-77\"\n    },\n    \"completion_mode\": \"redirect\",\n    \"completion_url\": \"https://clientapp.example.com/verification/done\"\n  },\n  \"fixed_parameters\": {\n    \"user_identification\": \"44444444A\",\n    \"user_email\": \"demo.person1@example.com\"\n  },\n  \"date_limit\": \"2026-09-12T23:59:59+00:00\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Up to two banks, tokenized, with a redirect and your own context
import Foundation

let headers = [
  "X-APP-SECRET": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "customer_id": "cust_esp_202406",
  "settings": [
    "sandbox": true,
    "aes_key": "PkQ2cVJ0VXZXeFl6QTNCNUQ3RjlIMEoyTDRONlA4UjA=",
    "executions_features": ["customer_information_read", "accounts_read", "cards_read", "deposits_read", "loans_read", "investment_accounts_read", "stocks_read", "funds_read", "pensions_read"],
    "markets": ["ES"],
    "entity_types": ["retail", "retailer_service"],
    "max_connections": 2,
    "tokenized_access": true,
    "hooks_extra_data": ["case_id": "CASE-2026-0912-77"],
    "completion_mode": "redirect",
    "completion_url": "https://clientapp.example.com/verification/done"
  ],
  "fixed_parameters": [
    "user_identification": "44444444A",
    "user_email": "demo.person1@example.com"
  ],
  "date_limit": "2026-09-12T23:59:59+00:00"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### You already know their bank

**Request**

```json
{
  "customer_id": "cust_esp_202406",
  "settings": {
    "sandbox": true,
    "executions_features": [
      "customer_information_read",
      "accounts_read",
      "cards_read",
      "deposits_read",
      "loans_read",
      "investment_accounts_read",
      "stocks_read",
      "funds_read",
      "pensions_read"
    ],
    "engine_reference": "DEMOBANKXXXXFIN100ES9999-mobile"
  }
}
```

**Response**

```json
{
  "session_id": "644599da47847b79c03cc94f",
  "widget_url": "https://infonite.app?session_token=sk_test_644599da47847b79c03cc94fd41d8cd98f",
  "session_token": "sk_test_644599da47847b79c03cc94fd41d8cd98f"
}
```

**SDK Code**

```python You already know their bank
import requests

url = "https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init"

payload = {
    "customer_id": "cust_esp_202406",
    "settings": {
        "sandbox": True,
        "executions_features": ["customer_information_read", "accounts_read", "cards_read", "deposits_read", "loans_read", "investment_accounts_read", "stocks_read", "funds_read", "pensions_read"],
        "engine_reference": "DEMOBANKXXXXFIN100ES9999-mobile"
    }
}
headers = {
    "X-APP-SECRET": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript You already know their bank
const url = 'https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init';
const options = {
  method: 'POST',
  headers: {'X-APP-SECRET': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"customer_id":"cust_esp_202406","settings":{"sandbox":true,"executions_features":["customer_information_read","accounts_read","cards_read","deposits_read","loans_read","investment_accounts_read","stocks_read","funds_read","pensions_read"],"engine_reference":"DEMOBANKXXXXFIN100ES9999-mobile"}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go You already know their bank
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init"

	payload := strings.NewReader("{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"engine_reference\": \"DEMOBANKXXXXFIN100ES9999-mobile\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("X-APP-SECRET", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby You already know their bank
require 'uri'
require 'net/http'

url = URI("https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["X-APP-SECRET"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"engine_reference\": \"DEMOBANKXXXXFIN100ES9999-mobile\"\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java You already know their bank
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init")
  .header("X-APP-SECRET", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"engine_reference\": \"DEMOBANKXXXXFIN100ES9999-mobile\"\n  }\n}")
  .asString();
```

```php You already know their bank
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init', [
  'body' => '{
  "customer_id": "cust_esp_202406",
  "settings": {
    "sandbox": true,
    "executions_features": [
      "customer_information_read",
      "accounts_read",
      "cards_read",
      "deposits_read",
      "loans_read",
      "investment_accounts_read",
      "stocks_read",
      "funds_read",
      "pensions_read"
    ],
    "engine_reference": "DEMOBANKXXXXFIN100ES9999-mobile"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'X-APP-SECRET' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp You already know their bank
using RestSharp;

var client = new RestClient("https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init");
var request = new RestRequest(Method.POST);
request.AddHeader("X-APP-SECRET", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"engine_reference\": \"DEMOBANKXXXXFIN100ES9999-mobile\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift You already know their bank
import Foundation

let headers = [
  "X-APP-SECRET": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "customer_id": "cust_esp_202406",
  "settings": [
    "sandbox": true,
    "executions_features": ["customer_information_read", "accounts_read", "cards_read", "deposits_read", "loans_read", "investment_accounts_read", "stocks_read", "funds_read", "pensions_read"],
    "engine_reference": "DEMOBANKXXXXFIN100ES9999-mobile"
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Your entities first, highlighted, as tiles

**Request**

```json
{
  "customer_id": "cust_esp_202406",
  "settings": {
    "sandbox": true,
    "executions_features": [
      "customer_information_read",
      "accounts_read",
      "cards_read",
      "deposits_read",
      "loans_read",
      "investment_accounts_read",
      "stocks_read",
      "funds_read",
      "pensions_read"
    ],
    "markets": [
      "ES"
    ],
    "entity_types": [
      "retail"
    ],
    "engines_layout": "1-row-list",
    "priority_engines": [
      "DEMOBANKXXXXFIN100ES9999"
    ],
    "featured_engines": {
      "DEMOBANKXXXXFIN100ES9999": {
        "icon": "solar:star-bold",
        "text": "Your bank"
      }
    }
  }
}
```

**Response**

```json
{
  "session_id": "644599da47847b79c03cc94f",
  "widget_url": "https://infonite.app?session_token=sk_test_644599da47847b79c03cc94fd41d8cd98f",
  "session_token": "sk_test_644599da47847b79c03cc94fd41d8cd98f"
}
```

**SDK Code**

```python Your entities first, highlighted, as tiles
import requests

url = "https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init"

payload = {
    "customer_id": "cust_esp_202406",
    "settings": {
        "sandbox": True,
        "executions_features": ["customer_information_read", "accounts_read", "cards_read", "deposits_read", "loans_read", "investment_accounts_read", "stocks_read", "funds_read", "pensions_read"],
        "markets": ["ES"],
        "entity_types": ["retail"],
        "engines_layout": "1-row-list",
        "priority_engines": ["DEMOBANKXXXXFIN100ES9999"],
        "featured_engines": { "DEMOBANKXXXXFIN100ES9999": {
                "icon": "solar:star-bold",
                "text": "Your bank"
            } }
    }
}
headers = {
    "X-APP-SECRET": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Your entities first, highlighted, as tiles
const url = 'https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init';
const options = {
  method: 'POST',
  headers: {'X-APP-SECRET': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"customer_id":"cust_esp_202406","settings":{"sandbox":true,"executions_features":["customer_information_read","accounts_read","cards_read","deposits_read","loans_read","investment_accounts_read","stocks_read","funds_read","pensions_read"],"markets":["ES"],"entity_types":["retail"],"engines_layout":"1-row-list","priority_engines":["DEMOBANKXXXXFIN100ES9999"],"featured_engines":{"DEMOBANKXXXXFIN100ES9999":{"icon":"solar:star-bold","text":"Your bank"}}}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Your entities first, highlighted, as tiles
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init"

	payload := strings.NewReader("{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"markets\": [\n      \"ES\"\n    ],\n    \"entity_types\": [\n      \"retail\"\n    ],\n    \"engines_layout\": \"1-row-list\",\n    \"priority_engines\": [\n      \"DEMOBANKXXXXFIN100ES9999\"\n    ],\n    \"featured_engines\": {\n      \"DEMOBANKXXXXFIN100ES9999\": {\n        \"icon\": \"solar:star-bold\",\n        \"text\": \"Your bank\"\n      }\n    }\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("X-APP-SECRET", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Your entities first, highlighted, as tiles
require 'uri'
require 'net/http'

url = URI("https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["X-APP-SECRET"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"markets\": [\n      \"ES\"\n    ],\n    \"entity_types\": [\n      \"retail\"\n    ],\n    \"engines_layout\": \"1-row-list\",\n    \"priority_engines\": [\n      \"DEMOBANKXXXXFIN100ES9999\"\n    ],\n    \"featured_engines\": {\n      \"DEMOBANKXXXXFIN100ES9999\": {\n        \"icon\": \"solar:star-bold\",\n        \"text\": \"Your bank\"\n      }\n    }\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java Your entities first, highlighted, as tiles
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init")
  .header("X-APP-SECRET", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"markets\": [\n      \"ES\"\n    ],\n    \"entity_types\": [\n      \"retail\"\n    ],\n    \"engines_layout\": \"1-row-list\",\n    \"priority_engines\": [\n      \"DEMOBANKXXXXFIN100ES9999\"\n    ],\n    \"featured_engines\": {\n      \"DEMOBANKXXXXFIN100ES9999\": {\n        \"icon\": \"solar:star-bold\",\n        \"text\": \"Your bank\"\n      }\n    }\n  }\n}")
  .asString();
```

```php Your entities first, highlighted, as tiles
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init', [
  'body' => '{
  "customer_id": "cust_esp_202406",
  "settings": {
    "sandbox": true,
    "executions_features": [
      "customer_information_read",
      "accounts_read",
      "cards_read",
      "deposits_read",
      "loans_read",
      "investment_accounts_read",
      "stocks_read",
      "funds_read",
      "pensions_read"
    ],
    "markets": [
      "ES"
    ],
    "entity_types": [
      "retail"
    ],
    "engines_layout": "1-row-list",
    "priority_engines": [
      "DEMOBANKXXXXFIN100ES9999"
    ],
    "featured_engines": {
      "DEMOBANKXXXXFIN100ES9999": {
        "icon": "solar:star-bold",
        "text": "Your bank"
      }
    }
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'X-APP-SECRET' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp Your entities first, highlighted, as tiles
using RestSharp;

var client = new RestClient("https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init");
var request = new RestRequest(Method.POST);
request.AddHeader("X-APP-SECRET", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"customer_id\": \"cust_esp_202406\",\n  \"settings\": {\n    \"sandbox\": true,\n    \"executions_features\": [\n      \"customer_information_read\",\n      \"accounts_read\",\n      \"cards_read\",\n      \"deposits_read\",\n      \"loans_read\",\n      \"investment_accounts_read\",\n      \"stocks_read\",\n      \"funds_read\",\n      \"pensions_read\"\n    ],\n    \"markets\": [\n      \"ES\"\n    ],\n    \"entity_types\": [\n      \"retail\"\n    ],\n    \"engines_layout\": \"1-row-list\",\n    \"priority_engines\": [\n      \"DEMOBANKXXXXFIN100ES9999\"\n    ],\n    \"featured_engines\": {\n      \"DEMOBANKXXXXFIN100ES9999\": {\n        \"icon\": \"solar:star-bold\",\n        \"text\": \"Your bank\"\n      }\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Your entities first, highlighted, as tiles
import Foundation

let headers = [
  "X-APP-SECRET": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "customer_id": "cust_esp_202406",
  "settings": [
    "sandbox": true,
    "executions_features": ["customer_information_read", "accounts_read", "cards_read", "deposits_read", "loans_read", "investment_accounts_read", "stocks_read", "funds_read", "pensions_read"],
    "markets": ["ES"],
    "entity_types": ["retail"],
    "engines_layout": "1-row-list",
    "priority_engines": ["DEMOBANKXXXXFIN100ES9999"],
    "featured_engines": ["DEMOBANKXXXXFIN100ES9999": [
        "icon": "solar:star-bold",
        "text": "Your bank"
      ]]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://widgets.infonite.tech/api/flows/financial-rider/v1/manager/init")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```