# started_in_another_browser

> The attempt was started in another browser

- Status: 400 Bad Request
- Returned by: The account connection (/oauth)
- Retry (`retryWhen`): `after_fix`
- Did anything happen? (`outcome`): `none` (It did not happen)
- The account connection
- Page in the portal: https://developers.rivr.io/errors/started_in_another_browser
- Try it: `GET https://developers.rivr.io/errors/simulate/started_in_another_browser` answers with the code's exact wire form; `?succeedAfter=N&attempt=K` gives a 200 once `attempt` passes `N`

## What it means

The same `state` or the same `code_challenge` has already started a request from another browser. An attempt belongs to the browser that started it, so that a leaked address can't be replayed. The same browser may reload, but in an older browser an interrupted first answer can still give this page. The code is shown on Rivr's error page, and the browser isn't sent back. The request in the first browser isn't affected.

## What your system does

Create a new `state` and a new `code_verifier` for every attempt, and send the browser to `GET /oauth/authorize` again.

## Is it worth retrying?

No, not without changing the call.

`retryWhen`: `after_fix`. Change the request first, as the code's page says: a value, the token, a header or a new key. Then send it.

## Did anything happen?

`outcome`: `none`. **It did not happen.** This call did not do what you asked for and changed nothing else that you can see or that concerns money. Where the code has an `outcomeNote`, it takes precedence.

## Example: The account connection (/oauth)

```http
HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<h1>Kopplingen kunde inte startas</h1>
<p>Den här starten av kopplingen går inte att använda igen. Ladda om sidan i systemet du kom från och starta kopplingen därifrån.</p>
<p>Felkod: started_in_another_browser</p>
```

The `title`, `detail`, `message` and `error_description` texts are exactly as the API writes them today.
