# ol.llx.ai.impl.errors

_platforms: clj, cljs_

## client-errors

### clj

_platforms: clj_

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L7-L17)

### cljs

_platforms: cljs_

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L7-L17)

---

## transient-errors

### clj

_platforms: clj_

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L19-L23)

### cljs

_platforms: cljs_

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L19-L23)

---

## response-errors

### clj

_platforms: clj_

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L25-L27)

### cljs

_platforms: cljs_

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L25-L27)

---

## all-error-types

### clj

_platforms: clj_

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L29-L30)

### cljs

_platforms: cljs_

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L29-L30)

---

## rate-limit

### clj

_platforms: clj_

```clojure
(rate-limit provider message & {:keys [http-status retry-after request-id provider-code]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L46-L55)

### cljs

_platforms: cljs_

```clojure
(rate-limit provider message & {:keys [http-status retry-after request-id provider-code]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L46-L55)

---

## server-error

### clj

_platforms: clj_

```clojure
(server-error provider message & {:keys [http-status provider-code request-id]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L57-L65)

### cljs

_platforms: cljs_

```clojure
(server-error provider message & {:keys [http-status provider-code request-id]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L57-L65)

---

## timeout-error

### clj

_platforms: clj_

```clojure
(timeout-error provider message & {:keys [timeout-ms request-id]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L67-L74)

### cljs

_platforms: cljs_

```clojure
(timeout-error provider message & {:keys [timeout-ms request-id]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L67-L74)

---

## connection-error

### clj

_platforms: clj_

```clojure
(connection-error provider message & {:keys [request-id]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L76-L82)

### cljs

_platforms: cljs_

```clojure
(connection-error provider message & {:keys [request-id]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L76-L82)

---

## authentication-error

### clj

_platforms: clj_

```clojure
(authentication-error provider message & {:keys [http-status]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L84-L90)

### cljs

_platforms: cljs_

```clojure
(authentication-error provider message & {:keys [http-status]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L84-L90)

---

## authorization-error

### clj

_platforms: clj_

```clojure
(authorization-error provider message & {:keys [http-status]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L92-L98)

### cljs

_platforms: cljs_

```clojure
(authorization-error provider message & {:keys [http-status]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L92-L98)

---

## invalid-request

### clj

_platforms: clj_

```clojure
(invalid-request message & {:keys [provider http-status context]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L100-L107)

### cljs

_platforms: cljs_

```clojure
(invalid-request message & {:keys [provider http-status context]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L100-L107)

---

## model-not-found

### clj

_platforms: clj_

```clojure
(model-not-found provider message & {:keys [http-status]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L109-L115)

### cljs

_platforms: cljs_

```clojure
(model-not-found provider message & {:keys [http-status]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L109-L115)

---

## quota-exceeded

### clj

_platforms: clj_

```clojure
(quota-exceeded provider message & {:keys [http-status]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L117-L123)

### cljs

_platforms: cljs_

```clojure
(quota-exceeded provider message & {:keys [http-status]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L117-L123)

---

## retry-delay-exceeded

### clj

_platforms: clj_

```clojure
(retry-delay-exceeded provider requested-delay-ms max-delay-ms & {:keys [request-id]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L125-L141)

### cljs

_platforms: cljs_

```clojure
(retry-delay-exceeded provider requested-delay-ms max-delay-ms & {:keys [request-id]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L125-L141)

---

## content-filter

### clj

_platforms: clj_

```clojure
(content-filter provider message & {:keys [provider-code]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L143-L149)

### cljs

_platforms: cljs_

```clojure
(content-filter provider message & {:keys [provider-code]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L143-L149)

---

## invalid-response

### clj

_platforms: clj_

```clojure
(invalid-response provider message & {:keys [context]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L151-L157)

### cljs

_platforms: cljs_

```clojure
(invalid-response provider message & {:keys [context]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L151-L157)

---

## streaming-error

### clj

_platforms: clj_

```clojure
(streaming-error provider message & {:keys [recoverable?]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L159-L164)

### cljs

_platforms: cljs_

```clojure
(streaming-error provider message & {:keys [recoverable?]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L159-L164)

---

## provider-error

### clj

_platforms: clj_

```clojure
(provider-error provider message & {:keys [http-status provider-code request-id recoverable?]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L166-L174)

### cljs

_platforms: cljs_

```clojure
(provider-error provider message & {:keys [http-status provider-code request-id recoverable?]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L166-L174)

---

## unsupported-reasoning-level

### clj

_platforms: clj_

```clojure
(unsupported-reasoning-level model-id requested-level)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L176-L184)

### cljs

_platforms: cljs_

```clojure
(unsupported-reasoning-level model-id requested-level)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L176-L184)

---

## tool-not-found

### clj

_platforms: clj_

```clojure
(tool-not-found tool-name available-tools)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L186-L195)

### cljs

_platforms: cljs_

```clojure
(tool-not-found tool-name available-tools)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L186-L195)

---

## validation-error

### clj

_platforms: clj_

```clojure
(validation-error tool-name args errors)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L197-L208)

### cljs

_platforms: cljs_

```clojure
(validation-error tool-name args errors)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L197-L208)

---

## http-status->error

### clj

_platforms: clj_

```clojure
(http-status->error status provider message & {:keys [provider-code retry-after request-id body]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L210-L230)

### cljs

_platforms: cljs_

```clojure
(http-status->error status provider message & {:keys [provider-code retry-after request-id body]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L210-L230)

---

## extract-retry-after

### clj

_platforms: clj_

```clojure
(extract-retry-after headers & {:keys [max-seconds] :or {max-seconds 60}})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L243-L254)

### cljs

_platforms: cljs_

```clojure
(extract-retry-after headers & {:keys [max-seconds] :or {max-seconds 60}})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L243-L254)

---

## extract-retry-after-from-message

### clj

_platforms: clj_

```clojure
(extract-retry-after-from-message message & {:keys [max-seconds] :or {max-seconds 60}})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L256-L264)

### cljs

_platforms: cljs_

```clojure
(extract-retry-after-from-message message & {:keys [max-seconds] :or {max-seconds 60}})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L256-L264)

---

## extract-retry-after-hint

### clj

_platforms: clj_

```clojure
(extract-retry-after-hint headers message & {:keys [max-seconds] :or {max-seconds 60}})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L266-L269)

### cljs

_platforms: cljs_

```clojure
(extract-retry-after-hint headers message & {:keys [max-seconds] :or {max-seconds 60}})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L266-L269)

---

## llx-error?

### clj

_platforms: clj_

```clojure
(llx-error? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L271-L274)

### cljs

_platforms: cljs_

```clojure
(llx-error? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L271-L274)

---

## recoverable?

### clj

_platforms: clj_

```clojure
(recoverable? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L276-L279)

### cljs

_platforms: cljs_

```clojure
(recoverable? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L276-L279)

---

## rate-limit-error?

### clj

_platforms: clj_

```clojure
(rate-limit-error? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L281-L284)

### cljs

_platforms: cljs_

```clojure
(rate-limit-error? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L281-L284)

---

## quota-exceeded-error?

### clj

_platforms: clj_

```clojure
(quota-exceeded-error? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L286-L289)

### cljs

_platforms: cljs_

```clojure
(quota-exceeded-error? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L286-L289)

---

## rate-limited-error?

### clj

_platforms: clj_

```clojure
(rate-limited-error? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L291-L294)

### cljs

_platforms: cljs_

```clojure
(rate-limited-error? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L291-L294)

---

## timeout-error?

### clj

_platforms: clj_

```clojure
(timeout-error? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L296-L299)

### cljs

_platforms: cljs_

```clojure
(timeout-error? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L296-L299)

---

## client-error?

### clj

_platforms: clj_

```clojure
(client-error? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L301-L304)

### cljs

_platforms: cljs_

```clojure
(client-error? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L301-L304)

---

## transient-error?

### clj

_platforms: clj_

```clojure
(transient-error? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L306-L309)

### cljs

_platforms: cljs_

```clojure
(transient-error? ex)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L306-L309)

---

## should-retry?

### clj

_platforms: clj_

```clojure
(should-retry? ex & {:keys [max-retries current-retry] :or {max-retries 2 current-retry 0}})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L311-L315)

### cljs

_platforms: cljs_

```clojure
(should-retry? ex & {:keys [max-retries current-retry] :or {max-retries 2 current-retry 0}})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L311-L315)

---

## retry-delay-ms

### clj

_platforms: clj_

```clojure
(retry-delay-ms ex retry-count)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L317-L332)

### cljs

_platforms: cljs_

```clojure
(retry-delay-ms ex retry-count)
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L317-L332)

---

## retry-loop-async

### clj

_platforms: clj_

```clojure
(retry-loop-async f max-retries sleep-fn)
(retry-loop-async f max-retries sleep-fn {:keys [call-id provider max-retry-delay-ms]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L334-L377)

### cljs

_platforms: cljs_

```clojure
(retry-loop-async f max-retries sleep-fn)
(retry-loop-async f max-retries sleep-fn {:keys [call-id provider max-retry-delay-ms]})
```

[source,window=_blank](https://github.com/outskirtslabs/llx/blob/main/src/ol/llx/ai/impl/errors.cljc#L334-L377)
