# ExternalService v2.0.0-rc.2 - Table of Contents

> Elixir library for safely using any external service or API using automatic retry with rate limiting and circuit breakers. Calls to external services can be synchronous, asynchronous background tasks, or multiple calls can be made in parallel for MapReduce style processing.

## Pages

- [Overview](readme.md)
- [Changelog](changelog.md)
- [License](license.md)

- Guides
  - [Getting Started](getting-started.md)
  - [The Module Front Door](the-front-door.md)
  - [Circuit Breakers](circuit-breakers.md)
  - [Retries](retries.md)
  - [Rate Limiting](rate-limiting.md)
  - [Error Handling](error-handling.md)
  - [Telemetry](telemetry.md)

- Reference
  - [ExternalService Cheatsheet](cheatsheet.md)
  - [Migrating to 2.0](migrating-to-2-0.md)
  - [About ExternalService](about.md)

## Modules

- [ExternalService](ExternalService.md): ExternalService handles all retry and circuit breaker logic for calls to external services.
- [ExternalService.Gateway](ExternalService.Gateway.md): Deprecated. Use `use ExternalService` instead.
- [ExternalService.RetryOptions](ExternalService.RetryOptions.md): Options that control retry logic for calls to external services.

- Exceptions
  - [ExternalService.CircuitBreakerOpen](ExternalService.CircuitBreakerOpen.md): Raised or returned when a call is rejected because the service's circuit breaker
is open (the fuse is blown).
  - [ExternalService.RetriesExhausted](ExternalService.RetriesExhausted.md): Raised or returned when the allowable number of retries (or the retry time
budget) is exceeded while calling an external service.
  - [ExternalService.ServiceNotStarted](ExternalService.ServiceNotStarted.md): Raised or returned when a call is made to a service that has not been started
with `ExternalService.start/2`.

