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

# Backup providers

> Automatic failover to backup providers when primary providers are unavailable.

# What are backup providers?

Backup providers help prevent failures caused by a single provider issue. When your primary provider is unavailable, hits a provider-specific rate limit, or returns errors, Uniblock automatically routes requests to backup providers in your configured priority list.

If you receive a `429` from Uniblock itself, that means your project has reached the request limit available under your current Uniblock plan. In that case, backup providers do not override the plan-level limit.

**Use backup providers when you need:**

* 99.99%+ uptime guarantees
* Protection against provider outages
* Automatic provider failover when an upstream provider is rate-limited
* Zero-downtime failover

<Info>
  Backup providers are enabled by default for all Uniblock users. No configuration required.
</Info>

***

## How it works

Uniblock maintains a priority list (fallback list) of providers for each endpoint category. When a request fails:

1. **Primary attempt** - Request goes to your top-priority provider
2. **Failure detection** - System detects failure (timeout, rate limit, 5xx error, invalid key)
3. **Automatic failover** - Request immediately routes to next provider in list
4. **Seamless response** - Your application receives the response without knowing a failover occurred

<Info>
  Backup providers handle upstream provider failures and provider-specific rate limits. Uniblock plan limits still apply separately, and a `429` response from Uniblock means your project has exceeded the request rate included with your current plan.
</Info>

<Frame caption="Endpoint fallback list with automatic provider switching">
  <img src="https://mintcdn.com/uniblock/AAmZ2PQpKS7NEhKq/images/docs/02e9899b1fcdef57d0ae34358af7606375f05c3f0790d4a72b9ba39d1b4df651-image.png?fit=max&auto=format&n=AAmZ2PQpKS7NEhKq&q=85&s=1d103d5f37e8fdf2fb2775526a105455" width="1423" height="793" data-path="images/docs/02e9899b1fcdef57d0ae34358af7606375f05c3f0790d4a72b9ba39d1b4df651-image.png" />
</Frame>

***

## Fallback list types

### Internal fallback (default)

Uniblock's pre-configured provider list optimized for reliability and cost.

**Characteristics:**

* No setup required
* Enabled by default for all users
* Optimized based on real-time provider performance
* Includes 30+ blockchain data providers
* Automatically updated as provider performance changes

**Example internal fallback list for token balances:**

1. Covalent (lowest cost, high reliability)
2. Moralis (medium cost, high reliability)
3. Alchemy (higher cost, highest reliability)
4. QuickNode (backup)

```bash Using internal fallback (default) theme={null}
curl --location \
'https://api.uniblock.dev/uni/v1/token/balances?chainId=1&address=0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb' \
--header 'x-api-key: YOUR_API_KEY'
```

If Covalent fails → automatically tries Moralis → then Alchemy → then QuickNode.

### External keys fallback (custom)

Bring your own provider API keys and configure custom priority lists.

**Characteristics:**

* Use your existing provider credits
* Full control over provider priority
* Uniblock auto-routing as final fallback
* Configure different lists per endpoint category

**Example custom fallback list:**

1. Your Alchemy key (primary)
2. Your Infura key (backup)
3. Your QuickNode key (backup)
4. Uniblock auto-routing (final fallback)

**Benefits of this approach:**

* Consume your own provider credits first
* Uniblock provides ultimate reliability as final backup
* Custom routing based on your provider relationships
* Unified management of all provider keys

[Learn how to configure custom fallback lists →](/guides/uniblock/autorouting/dashboard-integrations)

***

## Common failure scenarios

### Upstream provider rate limit exceeded

**Scenario:** Your Alchemy key hits its own provider rate limit (300 requests/second).

**What happens:**

1. Request #301 fails with rate limit error
2. Uniblock detects rate limit response
3. Request automatically routes to Infura (next in list)
4. Your app receives successful response

**Result:** Zero downtime, seamless failover for that provider-specific limit.

<Warning>
  This is different from a Uniblock `429`. A Uniblock `429` means your project has reached the request limit included with your current plan, not that a backup provider should be tried.
</Warning>

### Provider outage

**Scenario:** Infura experiences a service outage.

**What happens:**

1. Request times out after 5 seconds
2. Uniblock detects timeout
3. Request automatically routes to QuickNode
4. Your app receives successful response

**Result:** Your users never notice the outage.

### Invalid API key

**Scenario:** Your provider API key expires or is invalid.

**What happens:**

1. Request fails with 401 authentication error
2. Uniblock detects invalid key
3. Request automatically routes to next provider
4. Dashboard alerts you to update the key

**Result:** Service continues while you fix the key.

### Provider-specific error

**Scenario:** Provider returns 5xx server error.

**What happens:**

1. Request fails with 500 internal server error
2. Uniblock detects server error
3. Request automatically routes to next provider
4. Your app receives successful response

**Result:** Provider issues don't affect your application.

***

## Configuration example

Here's how a custom fallback list works with your own provider keys:

<Steps>
  <Step title="Add your provider keys">
    In the [Uniblock dashboard](https://dashboard.uniblock.dev), add your provider API keys:

    * Alchemy: `alch_abc123...`
    * Infura: `infura_xyz789...`
    * QuickNode: `qn_def456...`
  </Step>

  <Step title="Configure priority list">
    Set your fallback order for token endpoints:

    1. Alchemy (your key)
    2. Infura (your key)
    3. QuickNode (your key)
    4. Uniblock auto-routing (final backup)
  </Step>

  <Step title="Make API calls normally">
    ```bash theme={null}
    curl --location \
    'https://api.uniblock.dev/uni/v1/token/balances?chainId=1&address=0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb' \
    --header 'x-api-key: YOUR_UNIBLOCK_KEY'
    ```
  </Step>

  <Step title="Automatic failover">
    If Alchemy fails, Uniblock automatically tries Infura, then QuickNode, then its own provider pool. Your code never changes.
  </Step>
</Steps>

***

## Key benefits

<CardGroup cols={2}>
  <Card title="High availability" icon="shield-check">
    Achieve 99.99%+ uptime with multi-provider redundancy.
  </Card>

  <Card title="Seamless failover" icon="arrows-rotate">
    Automatic provider switching transparent to your application.
  </Card>

  <Card title="Rate limit protection" icon="gauge">
    Reduce provider-specific rate limit failures by automatically switching to backup providers.
  </Card>

  <Card title="Cost optimization" icon="dollar-sign">
    Use cheaper providers first, expensive ones as backup.
  </Card>
</CardGroup>

***

## Monitoring and alerts

Track failover events in the Uniblock dashboard:

* **Failover count** - How many times backup providers were used
* **Provider health** - Real-time status of each provider
* **Error breakdown** - Types of failures triggering failovers
* **Cost analysis** - Which providers are being used most

**Alerts available:**

* Provider key expiration warnings
* High failover rate notifications
* Provider performance degradation alerts

***

## Best practices

<Check>
  **Use Uniblock auto-routing as final fallback** - Even with your own provider keys, add Uniblock auto-routing as the last item in your priority list for ultimate reliability.
</Check>

<Check>
  **Configure different lists per endpoint category** - Token endpoints may need different providers than NFT endpoints. Optimize each category separately.
</Check>

<Check>
  **Monitor failover rates** - High failover rates indicate issues with your primary provider. Review and adjust your priority list.
</Check>

<Check>
  **Test your fallback configuration** - Temporarily disable your primary provider to verify failover works as expected.
</Check>

***

## Next steps

<CardGroup cols={2}>
  <Card title="Configure priority lists" icon="list-ol" href="/guides/uniblock/autorouting/dashboard-integrations">
    Set up custom fallback lists with your own provider keys.
  </Card>

  <Card title="Auto-retry" icon="rotate" href="/guides/uniblock/autorouting/uniblock-auto-retry">
    Learn how auto-retry works before failover occurs.
  </Card>

  <Card title="Routing optimization" icon="gauge-high" href="/guides/uniblock/autorouting/uniblock-routing-optimization">
    Optimize provider selection for cost and performance.
  </Card>

  <Card title="Dashboard" icon="chart-line" href="https://dashboard.uniblock.dev">
    Monitor provider health and failover events.
  </Card>
</CardGroup>

***

## Common pitfalls

<Warning>
  **Don't rely on a single provider** - Even with backup providers, test your configuration to ensure failover works correctly.
</Warning>

<Warning>
  **Provider key expiration** - Set up alerts for expiring provider keys. Expired keys trigger unnecessary failovers.
</Warning>

<Warning>
  **Inconsistent data across providers** - Different providers may return slightly different data formats. Test thoroughly when switching providers.
</Warning>

<Warning>
  **Cost implications** - Backup providers may have different pricing. Monitor which providers are being used to manage costs effectively.
</Warning>

***

<Card title="Ready to get started with Uniblock?" icon="rocket" href="https://dashboard.uniblock.dev">
  Create your free account and start building with unified blockchain infrastructure across 100+ chains.
</Card>

<CardGroup cols={2}>
  <Card title="View API reference" icon="book" href="/reference/unified-api-reference-overview">
    Explore all available endpoints and interactive playgrounds
  </Card>

  <Card title="Join our community" icon="discord" href="https://discord.gg/uniblock">
    Get help from our team and connect with other developers
  </Card>
</CardGroup>
