By default, Meld filters the institutions shown in the picker to those that support every product in the /connect/start request. Sometimes you want users to see institutions that may not support all products, and then fetch data only for the products that are supported. Optional products solve this use case: they are aggregated on a best-effort basis and do not restrict which institutions appear.
When to use optional products
- You want maximum institution coverage but still want bonus data (such as investments) where it exists.
- A product like
INVESTMENT_HOLDINGS is nice to have for some customers but should not gate the rest of the flow.
- You are retroactively adding products via the update connection endpoint — those products always land in
optionalProducts.
Rules
- You must specify at least one product in the required
products array.
- A product cannot appear in both
products and optionalProducts.
- Optional products are aggregated on a best-effort basis — Meld does not guarantee data will be returned for them. Build your UI accordingly.
Sample request
curl --location 'https://api-sb.meld.io/bank-linking/connect/start' \
--header 'Meld-Version: 2022-11-10' \
--header 'Content-Type: application/json' \
--header 'Authorization: BASIC ***Redacted API Key***' \
--data '{
"externalCustomerId": "testCustomer",
"products": [
"BALANCES",
"TRANSACTIONS"
],
"optionalProducts": [
"INVESTMENT_HOLDINGS",
"INVESTMENT_TRANSACTIONS"
]
}'
In the example above, the picker filters institutions to those that support BALANCES and TRANSACTIONS. Institutions are not filtered out for missing investment support. If the connected accounts do carry investment data, Meld retrieves it and emits the corresponding webhooks.
Optional products are powerful for maximizing coverage, but do not guarantee data will be returned for those products. Always handle the case where investment or other optional data is empty.