---
editLink: false
lastUpdated: false
---

[@salesforce/b2c-tooling-sdk](../../modules.md) / [clients](../index.md) / resolvePreferredBackend

# Function: resolvePreferredBackend()

> **resolvePreferredBackend**\<`TPrimary`\>(`opts`): `"scapi"` \| `TPrimary`

Defined in: [packages/b2c-tooling-sdk/src/clients/scapi-backend-utils.ts:233](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/1dedfc1ffefa01c3d5bff62c8f7e7e682a1a91cd/packages/b2c-tooling-sdk/src/clients/scapi-backend-utils.ts#L233)

Generic tri-state backend resolver shared by SCAPI-vs-OCAPI and SCAPI-vs-legacy
domains — the single definition of the preference/availability precedence.

- Explicit primary → primary.
- Explicit `'scapi'` → `'scapi'`, throwing `unavailableMessage()` when the SCAPI
  config is missing (fail loud; never silently downgrade).
- `'auto'` → `'scapi'` when config is available, otherwise the primary backend.

## Type Parameters

### TPrimary

`TPrimary` *extends* `string`

## Parameters

### opts

[`ResolvePreferredBackendOptions`](../interfaces/ResolvePreferredBackendOptions.md)\<`TPrimary`\>

## Returns

`"scapi"` \| `TPrimary`
