---
title: "Errors"
description: "Every error class that forges throws."
canonical_url: "https://docs-8831a2g1f-poetry.vercel.app/reference/errors"
---
# Errors

> Every error class that forges throws.

All errors extend `ForgeError`. Errors from a request carry `forge`, `instance`, `url` and `method`. See [Handle errors and rate limits](https://docs-8831a2g1f-poetry.vercel.app/guides/errors).

<table>
<thead>
  <tr>
    <th>
      Class
    </th>
    
    <th>
      Extends
    </th>
    
    <th>
      Thrown when
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        ForgeError
      </code>
    </td>
    
    <td>
      <code>
        Error
      </code>
    </td>
    
    <td>
      Base class
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ForgeApiError
      </code>
    </td>
    
    <td>
      <code>
        ForgeError
      </code>
    </td>
    
    <td>
      The forge responded with an error. Has <code>
        status
      </code>
      
       and <code>
        body
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        RateLimitedError
      </code>
    </td>
    
    <td>
      <code>
        ForgeApiError
      </code>
    </td>
    
    <td>
      A rate limit was hit and a retry didn't help. Has <code>
        resetAt
      </code>
      
       and <code>
        secondary
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        TokenRevokedError
      </code>
    </td>
    
    <td>
      <code>
        ForgeApiError
      </code>
    </td>
    
    <td>
      The credential was revoked or expired
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        InsufficientScopeError
      </code>
    </td>
    
    <td>
      <code>
        ForgeApiError
      </code>
    </td>
    
    <td>
      The credential is valid but lacks a scope or permission
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ForbiddenError
      </code>
    </td>
    
    <td>
      <code>
        ForgeApiError
      </code>
    </td>
    
    <td>
      The forge refused for another reason. Has <code>
        reason
      </code>
      
      : <code>
        org_restriction
      </code>
      
      , <code>
        sso_required
      </code>
      
      , <code>
        rate_limit_abuse
      </code>
      
      , <code>
        resource_protected
      </code>
      
       or <code>
        unknown
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        MergeBlockedError
      </code>
    </td>
    
    <td>
      <code>
        ForgeApiError
      </code>
    </td>
    
    <td>
      A pull request can't be merged yet, for example because of failing checks or branch protection
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        MergeConflictError
      </code>
    </td>
    
    <td>
      <code>
        ForgeApiError
      </code>
    </td>
    
    <td>
      A merge conflicts with the base branch, or the head moved since <code>
        sha
      </code>
      
       was read
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        MergeMethodRequiredError
      </code>
    </td>
    
    <td>
      <code>
        ForgeError
      </code>
    </td>
    
    <td>
      No merge method was given and the repository allows more than one
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ForgeTimeoutError
      </code>
    </td>
    
    <td>
      <code>
        ForgeError
      </code>
    </td>
    
    <td>
      A request or a pending merge exceeded <code>
        timeout
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ForgeNetworkError
      </code>
    </td>
    
    <td>
      <code>
        ForgeError
      </code>
    </td>
    
    <td>
      A request got no response: DNS, TLS, connection refused or a proxy refusal
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        WebhookVerificationError
      </code>
    </td>
    
    <td>
      <code>
        ForgeError
      </code>
    </td>
    
    <td>
      A delivery's signature didn't match
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        SubscriptionClosedError
      </code>
    </td>
    
    <td>
      <code>
        ForgeError
      </code>
    </td>
    
    <td>
      A live connection closed or failed. Has the last <code>
        cursor
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        UnsupportedOperationError
      </code>
    </td>
    
    <td>
      <code>
        ForgeError
      </code>
    </td>
    
    <td>
      The forge doesn't support the operation
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ReadOnlyError
      </code>
    </td>
    
    <td>
      <code>
        UnsupportedOperationError
      </code>
    </td>
    
    <td>
      A write was called on a <code>
        readOnly
      </code>
      
       provider
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ContentNotTextError
      </code>
    </td>
    
    <td>
      <code>
        ForgeError
      </code>
    </td>
    
    <td>
      A file was read as text and its bytes aren't valid UTF-8
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        UnknownForgeError
      </code>
    </td>
    
    <td>
      <code>
        ForgeError
      </code>
    </td>
    
    <td>
      A ref names a forge instance that no registered provider serves
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        UnresolvedThreadError
      </code>
    </td>
    
    <td>
      <code>
        ForgeError
      </code>
    </td>
    
    <td>
      A thread ref has no number, or is a kind the provider can't address
    </td>
  </tr>
</tbody>
</table>


## Sitemap

See the full [sitemap](https://docs-8831a2g1f-poetry.vercel.app/sitemap.md) for all pages.
