Institutions
One bank directory merged across every provider you've connected, ranked by your routing policy.
An institution (ins_…) is a bank. Each provider has its own list of banks; Unirail merges them, so a bank reached by Plaid and Yapily appears once with both providers attached.
const { data } = await unirail.institutions.list({ country: "GB", q: "monzo", limit: 10 });{
"id": "ins_8XkQ2mPz4r",
"name": "Monzo",
"country": "GB",
"logoUrl": "https://…",
"providers": [
{ "rail": "plaid", "connection": "con_…", "roles": ["bank-link", "payment"], "rank": 1 },
{ "rail": "yapily", "connection": "con_…", "roles": ["bank-link", "payment"], "rank": 2 }
],
"restrictions": []
}The directory depends on the environment you call it with. An institution only appears when one of that environment's connections reaches it, and providers is ranked by the environment's routing policy, best first. Your bank picker can render the list as is and pass the chosen id to a link session; Unirail picks the provider unless you force one with rail.
Restrictions and explanations
restrictions tells you up front when a bank comes with a limit, such as accounts that can only pay accounts at the same bank. Every restriction, infeasible route and failure in the API carries an explanation:
{ "key": "restriction.same_bank_only", "vars": { "bank": "DBS" }, "message": "Your DBS account can only send to DBS accounts." }message is an English rendering. To localise, translate from key and vars instead.