API errors
Every fremforge API error is RFC 9457 application/problem+json and carries a type URI naming the specific error:
{
"type": "https://docs.frem.sh/reference/api/errors/seat-cap-reached",
"title": "Payment Required",
"status": 402,
"detail": "Seat cap reached - add seats or enable seat overage in Org admin -> Billing."
}Branch on type. title and detail are human-readable and may be reworded; type plus status is the stable contract.
There are 200 distinct error types.
400 Bad Request
The request was malformed, or a field failed validation.
| Error type | |
|---|---|
confirm-mismatch | Confirm mismatch |
create-failed | Create failed |
css-too-large | Css too large |
digest-mismatch | Digest mismatch |
empty-update | Empty update |
format-mismatch | Format mismatch |
ids-required | Ids required |
invalid-access | Invalid access |
invalid-allowed-audiences | Invalid allowed audiences |
invalid-allowlist | Invalid allowlist |
invalid-api-key | Invalid api key |
invalid-artifact-name | Invalid artifact name |
invalid-artifact-version | Invalid artifact version |
invalid-attestation-format | Invalid attestation format |
invalid-audiences | Invalid audiences |
invalid-azure-deployment | Invalid azure deployment |
invalid-base-url | Invalid base url |
invalid-billing-emails | Invalid billing emails |
invalid-block-action | Invalid block action |
invalid-block-severity | Invalid block severity |
invalid-body | Invalid body |
invalid-ca-keys | Invalid ca keys |
invalid-cidr | Invalid cidr |
invalid-client-id | Invalid client id |
invalid-commit-sha | Invalid commit sha |
invalid-content | Invalid content |
invalid-css | Invalid css |
invalid-days | Invalid days |
invalid-digest | Invalid digest |
invalid-domain | Invalid domain |
invalid-email | Invalid email |
invalid-enabled | Invalid enabled |
invalid-expected-current-seat-cap | Invalid expected current seat cap |
invalid-expires-at | Invalid expires at |
invalid-feature | Invalid feature |
invalid-field | Invalid field |
invalid-format | Invalid format |
invalid-gates | Invalid gates |
invalid-git-ref | Invalid git ref |
invalid-input | Invalid input |
invalid-json | Invalid json |
invalid-label | Invalid label |
invalid-max-tokens | Invalid max tokens |
invalid-messages | Invalid messages |
invalid-mode | Invalid mode |
invalid-model | Invalid model |
invalid-multipart | Invalid multipart |
invalid-name | Invalid name |
invalid-pattern | Invalid pattern |
invalid-pr-number | Invalid pr number |
invalid-principal-policy | Invalid principal policy |
invalid-provider | Invalid provider |
invalid-purpose | Invalid purpose |
invalid-repo | Invalid repo |
invalid-repo-filter | Invalid repo filter |
invalid-repo-full-name | Invalid repo full name |
invalid-request | Invalid request |
invalid-require-cert | Invalid require cert |
invalid-role | Invalid role |
invalid-rules-url | Invalid rules url |
invalid-run-id | Invalid run id |
invalid-scope | Invalid scope |
invalid-scopes | Invalid scopes |
invalid-seat-cap | Invalid seat cap |
invalid-seats | Invalid seats |
invalid-secret | Invalid secret |
invalid-since | Invalid since |
invalid-sla | Invalid sla |
invalid-slug | Invalid slug |
invalid-status | Invalid status |
invalid-sub-template | Invalid sub template |
invalid-target-url | Invalid target url |
invalid-team | Invalid team |
invalid-technical-admin-email | Invalid technical admin email |
invalid-temperature | Invalid temperature |
invalid-tenant-slug | Invalid tenant slug |
invalid-term | Invalid term |
invalid-ttl | Invalid ttl |
invalid-type | Invalid type |
invalid-url | Invalid url |
invalid-username | Invalid username |
invalid-value | Invalid value |
invalid-vendor | Invalid vendor |
missing-assertion | Missing assertion |
missing-params | Missing params |
missing-sbom | Missing sbom |
no-fields | No fields |
no-scopes | No scopes |
pause-failed | Pause failed |
reason-required | Reason required |
reason-too-long | Reason too long |
reserved-prefix | Reserved prefix |
seat-change-failed | Seat change failed |
too-many-events | Too many events |
too-many-ids | Too many ids |
too-many-messages | Too many messages |
too-many-teams | Too many teams |
unknown-scope | Unknown scope |
unsupported-grant-type | Unsupported grant type |
unsupported-spec-version | Unsupported spec version |
value-too-large | Value too large |
401 Unauthorized
Authentication is missing, or the credential was rejected.
| Error type | |
|---|---|
authentication-required | Authentication required |
invalid-client | Invalid client |
invalid-token | Invalid token |
403 Forbidden
The credential is valid but not permitted to do this.
| Error type | |
|---|---|
cross-tenant | Cross tenant |
insufficient-scope | Insufficient scope |
not-in-allowlist | Not in allowlist |
oauth-session-pat-mint-forbidden | Oauth session pat mint forbidden |
protected-account | Protected account |
repo-owner-mismatch | Repo owner mismatch |
scope-escalation | Scope escalation |
tenant-scope-required | Tenant scope required |
user-identity-required | User identity required |
wildcard-mint-refused | Wildcard mint refused |
404 Not Found
The resource does not exist - or your token cannot see it.
| Error type | |
|---|---|
attempt-not-found | Attempt not found |
no-active-approval | No active approval |
no-findings | No findings |
not-found | Not found |
tenant-not-found | Tenant not found |
409 Conflict
The request conflicts with the resource’s current state.
| Error type | |
|---|---|
already-accepted | Already accepted |
already-cancelled | Already cancelled |
already-disabled | Already disabled |
already-paused | Already paused |
already-resolved | Already resolved |
checkout-in-flight | Checkout in flight |
domain-verification-required | Domain verification required |
duplicate-grant | Duplicate grant |
duplicate-key | Duplicate key |
duplicate-name | Duplicate name |
duplicate-pattern | Duplicate pattern |
duplicate-pending | Duplicate pending |
internal-tenant | Internal tenant |
last-owner | Last owner |
name-conflict | Name conflict |
no-ca-keys | No ca keys |
no-rewrites | No rewrites |
no-seats-available | No seats available |
not-cancelled | Not cancelled |
not-cancelling | Not cancelling |
not-enabled | Not enabled |
not-enrolled | Not enrolled |
not-pending | Not pending |
not-removed | Not removed |
operator-managed | Operator managed |
overage-frozen | Overage frozen |
overage-paid-plan-only | Overage paid plan only |
refund-unavailable | Refund unavailable |
rescan-skipped | Rescan skipped |
seat-cap-reached | Seat cap reached |
self-approve | Self approve |
stale-seat-cap | Stale seat cap |
tenant-not-accepting | Tenant not accepting |
410 Gone
The resource existed and is permanently gone.
| Error type | |
|---|---|
challenge-expired | Challenge expired |
logs-purged | Logs purged |
413 Payload Too Large
The body is larger than this endpoint accepts.
| Error type | |
|---|---|
payload-too-large | Payload too large |
415 Unsupported Media Type
The request Content-Type is not supported.
| Error type | |
|---|---|
unsupported-media-type | Unsupported media type |
429 Too Many Requests
You have exceeded a rate limit.
| Error type | |
|---|---|
rate-limited | Rate limited |
rate-limited-global | Rate limited global |
500 Internal Server Error
Something failed on our side.
| Error type | |
|---|---|
db-error | Db error |
insert-failed | Insert failed |
internal | Internal |
internal-error | Internal error |
rate-limit-misconfigured | Rate limit misconfigured |
sign-failed | Sign failed |
501 Not Implemented
Not implemented yet.
| Error type | |
|---|---|
not-implemented-yet | Not implemented yet |
502 Bad Gateway
An upstream dependency returned an error.
| Error type | |
|---|---|
approve-failed | Approve failed |
ci-bot-mint-failed | Ci bot mint failed |
ci-bot-revoke-failed | Ci bot revoke failed |
forgejo-error | Forgejo error |
forgejo-failed | Forgejo failed |
forgejo-upstream-error | Forgejo upstream error |
install-failed | Install failed |
mollie-error | Mollie error |
mollie-unavailable | Mollie unavailable |
obs-put-failed | Obs put failed |
pr-open-failed | Pr open failed |
provisioning-failed | Provisioning failed |
remove-failed | Remove failed |
revoke-failed | Revoke failed |
test-failed | Test failed |
upstream-auth-failed | Upstream auth failed |
upstream-error | Upstream error |
upstream-unreachable | Upstream unreachable |
503 Service Unavailable
A dependency is temporarily unavailable.
| Error type | |
|---|---|
ai-disabled | Ai disabled |
attestations-disabled | Attestations disabled |
billing-unavailable | Billing unavailable |
ci-bots-unavailable | Ci bots unavailable |
forgejo-not-configured | Forgejo not configured |
forgejo-proxy-disabled | Forgejo proxy disabled |
forgejo-unavailable | Forgejo unavailable |
forgejo-unreachable | Forgejo unreachable |
invitations-unavailable | Invitations unavailable |
not-configured | Not configured |
ownership-unverifiable | Ownership unverifiable |
renovate-disabled | Renovate disabled |
sbom-ingest-unavailable | Sbom ingest unavailable |
seat-change-unavailable | Seat change unavailable |
seat-holds-unavailable | Seat holds unavailable |
secrets-unavailable | Secrets unavailable |
siem-unavailable | Siem unavailable |
token-exchange-disabled | Token exchange disabled |