Skip to content

docs(openapi): Add complete list of possible error types returned by the API#2428

Merged
Pijukatel merged 2 commits intomasterfrom
add-all-errors
Apr 14, 2026
Merged

docs(openapi): Add complete list of possible error types returned by the API#2428
Pijukatel merged 2 commits intomasterfrom
add-all-errors

Conversation

@Pijukatel
Copy link
Copy Markdown
Contributor

@Pijukatel Pijukatel commented Apr 14, 2026

Add all possible error types to the error enum that was added recently

Multi-status errors

These error type strings are reused across multiple factory functions with different HTTP status codes:

Error type Status codes Sources
invalid-input 400, 403 actor.ts (lines 218,224,230,246,252,264) → 400; actor_task.ts (lines 15,21,27,37) → 403; actor_task.ts (lines 47,53) → 400
invalid-parameter 400, 403 common.ts → 403; common.ts → 400
user-disabled 400, 403 user.ts → 403; user.ts → 400
user-email-is-disposable 400, 403 user.ts → 403; finance.ts → 400
user-email-not-verified 400, 403 user.ts → 403; finance.ts → 400

All other error type strings map to a single HTTP status code.


Previously in enum (kept)

Error type HTTP Source
actor-memory-limit-exceeded 402 actor.ts
actor-not-found 404 actor.ts
invalid-input 400/403 actor.ts → 400; actor_task.ts → 403
method-not-allowed 405 api.ts
page-not-found 404 api.ts
permission-denied not found in errors package — removed
rate-limit-exceeded 429 api.ts
record-not-found 404 common.ts
record-not-unique not found in errors package — removed
record-or-token-not-found 404 api.ts
request-id-invalid 400 storage.ts
request-too-large 413 api.ts
run-failed 400 api.ts
run-timeout-exceeded 408 api.ts
schedule-actor-not-found 404 scheduling.ts
schedule-actor-task-not-found 404 scheduling.ts
token-not-valid not found in errors package — removed
unknown-build-tag 403 actor.ts
unsupported-content-encoding 415 api.ts
user-not-found 404 common.ts
x402-payment-required 402 agentic_user.ts

Newly added

Error type HTTP Source
3d-secure-auth-failed 400 finance.ts
access-right-already-exists 400 iam.ts
action-not-found 400 scheduling.ts
actor-already-rented 403 paid_actors.ts
actor-can-not-be-rented 403 paid_actors.ts
actor-disabled 403 actor.ts
actor-is-not-rented 403 paid_actors.ts
actor-name-exists-new-owner 400 actor.ts
actor-name-not-unique 409 actor.ts
actor-not-github-actor 400 user_integrations.ts
actor-not-public 400 actor.ts
actor-permission-level-not-supported-for-agentic-payments 400 agentic_user.ts
actor-review-already-exists 400 actor.ts
actor-run-failed 500 tools.ts
actor-standby-not-supported-for-agentic-payments 400 agentic_user.ts
actor-task-name-not-unique 409 actor_task.ts
agentic-payment-info-retrieval-error 500 agentic_user.ts
agentic-payment-information-missing 500 agentic_user.ts
agentic-payment-insufficient-amount 402 agentic_user.ts
agentic-payment-provider-internal-error 500 agentic_user.ts
agentic-payment-provider-unauthorized 402 agentic_user.ts
airtable-webhook-deprecated 400 webhooks.ts
already-subscribed-to-paid-actor 403 paid_actors.ts
apify-plan-required-to-use-paid-actor 403 paid_actors.ts
apify-signup-not-allowed user.ts
auth-method-not-supported 400 mcp_connectors.ts
authorization-server-not-found 400 mcp_connectors.ts
auto-issue-date-invalid 400 payouts.ts
background-check-required 400 payouts.ts
billing-system-error 400 finance.ts
black-friday-plan-expired 400 finance.ts
braintree-error 400 finance.ts
braintree-not-linked finance.ts
braintree-operation-timed-out finance.ts
braintree-unsupported-currency finance.ts
build-not-found 403 actor.ts
build-outdated 403 actor.ts
cannot-add-apify-events-to-ppe-actor 403 paid_actors.ts
cannot-add-multiple-pricing-infos 400 paid_actors.ts
cannot-add-pricing-info-that-alters-past 400 paid_actors.ts
cannot-add-second-future-pricing-info 400 paid_actors.ts
cannot-build-actor-from-webhook 400 actor.ts
cannot-change-billing-interval 400 finance.ts and #404
cannot-change-owner 403 actor.ts and common.ts#L85
cannot-charge-apify-event 405 paid_actors.ts
cannot-charge-non-pay-per-event-actor 405 paid_actors.ts
cannot-comment-as-other-user 403 issues.ts
cannot-copy-actor-task 400 actor_task.ts
cannot-create-payout 400 payouts.ts
cannot-create-public-actor 403 actor.ts
cannot-create-tax-transaction 500 finance.ts
cannot-delete-critical-actor 403 actor.ts
cannot-delete-invoice 400 finance.ts
cannot-delete-paid-actor 403 paid_actors.ts
cannot-disable-one-time-event-for-apify-start-event 403 paid_actors.ts
cannot-disable-organization-with-enabled-members 403 organizations.ts
cannot-disable-user-with-subscription 400 finance.ts
cannot-link-oauth-to-unverified-email 403 user.ts
cannot-metamorph-to-pay-per-result-actor 403 paid_actors.ts
cannot-modify-actor-pricing-too-frequently 403 paid_actors.ts
cannot-modify-actor-pricing-with-immediate-effect 403 paid_actors.ts
cannot-override-paid-actor-trial 403 paid_actors.ts
cannot-permanently-delete-subscription 400 finance.ts
cannot-publish-actor 403 actor.ts
cannot-reduce-last-full-token 403 iam.ts
cannot-reimburse-more-than-original-charge 400 paid_actors.ts
cannot-reimburse-non-rental-charge 400 paid_actors.ts
cannot-remove-own-actor-from-recently-used 403 actor.ts
cannot-remove-payment-method 400 finance.ts
cannot-remove-pricing-info 400 paid_actors.ts
cannot-remove-running-run 400 runs.ts
cannot-remove-user-with-public-actors 400 user.ts
cannot-remove-user-with-subscription 400 finance.ts
cannot-remove-user-with-unpaid-invoice 400 finance.ts
cannot-rename-env-var 403 actor.ts
cannot-rent-paid-actor 403 paid_actors.ts
cannot-review-own-actor 400 actor.ts
cannot-set-access-rights-for-owner 400 iam.ts
cannot-set-is-status-message-terminal 400 runs.ts
cannot-unpublish-critical-actor 403 actor.ts
cannot-unpublish-paid-actor 403 paid_actors.ts
cannot-unpublish-profile 400 user.ts
cannot-update-invoice-field 400 finance.ts
concurrent-runs-limit-exceeded 402 actor.ts and #23
concurrent-update-detected 500 common.ts
conference-token-not-found 404 user.ts
content-encoding-forbidden-for-html 403 api.ts
coupon-already-redeemed 400 finance.ts
coupon-expired 400 finance.ts
coupon-for-new-customers 400 finance.ts
coupon-for-subscribed-users 400 finance.ts
coupon-limits-are-in-conflict-with-current-limits 400 finance.ts
coupon-max-number-of-redemptions-reached 400 finance.ts
coupon-not-found 404 finance.ts
coupon-not-unique 400 finance.ts
coupons-disabled 400 finance.ts
create-github-issue-not-allowed 410 user_integrations.ts
creator-plan-not-available 400 finance.ts
cron-expression-invalid 400 scheduling.ts
daily-ai-token-limit-exceeded 429 api.ts
daily-publication-limit-exceeded 429 actor.ts
dataset-does-not-have-fields-schema 400 storage.ts
dataset-does-not-have-schema 400 storage.ts
dataset-locked 402 storage.ts and #110
dataset-schema-invalid 400 storage.ts
dcr-not-supported 400 mcp_connectors.ts
default-dataset-not-found 400 api.ts
deleting-default-build 400 api.ts
deleting-unfinished-build 400 api.ts
email-already-taken 409 user.ts
email-already-taken-removed-user 409 user.ts
email-domain-not-allowed-for-coupon 400 finance.ts
email-invalid 403 common.ts
email-not-allowed 409 user.ts
email-not-valid 403 user.ts
email-update-too-soon 429 user.ts
elevated-permissions-needed 403 api.ts
env-var-already-exists 403 actor.ts
exchange-rate-fetch-failed finance.ts
expired-conference-token 403 user.ts
failed-to-charge-user 400 finance.ts
final-invoice-negative 500 finance.ts
github-branch-empty 400 user_integrations.ts
github-issue-already-exists 409 user_integrations.ts
github-public-key-not-found 400 api.ts
github-repository-not-found 400 user_integrations.ts
github-signature-does-not-match-payload 401 api.ts
github-user-not-authorized-for-issues 412 user_integrations.ts
gmail-not-allowed 403 user.ts
id-does-not-match 400 webhooks.ts
incompatible-billing-interval 400 finance.ts
incomplete-payout-billing-info 400 payouts.ts
inconsistent-currencies 400 payouts.ts
incorrect-pricing-modifier-prefix 400 paid_actors.ts
input-json-invalid-characters 400 scheduling.ts
input-json-not-object 400 scheduling.ts
input-json-too-long 400 scheduling.ts
input-update-collision 429 actor_task.ts
insufficient-permissions 403 iam.ts and common.ts#L30
insufficient-permissions-to-change-field 403 common.ts
insufficient-security-measures 403 common.ts
insufficient-tax-country-evidence 400 finance.ts
integration-auth-error 403 user_integrations.ts
internal-server-error 500 common.ts, storage.ts#L34, storage.ts#L41
invalid-billing-info 400 finance.ts
invalid-billing-period-for-payout 400 payouts.ts
invalid-build 403 actor.ts
invalid-client-key 400 storage.ts and #15
invalid-collection 400 actor.ts
invalid-conference-login-password 403 user.ts
invalid-content-type-header 400 api.ts
invalid-credentials 403 user.ts
invalid-git-auth-token 401 user_integrations.ts
invalid-github-issue-url 400 user_integrations.ts
invalid-header 400 actor.ts
invalid-id 400 common.ts
invalid-idempotency-key 400 api.ts
invalid-input 400/403 actor.ts → 400; actor_task.ts → 403
invalid-input-schema 400 actor.ts
invalid-invoice finance.ts, :142, :169
invalid-invoice-type finance.ts
invalid-issue-date finance.ts
invalid-label-params 400 meta_labels.ts
invalid-main-account-user-id 403 user.ts
invalid-oauth-app 400 user.ts
invalid-oauth-scope 400 user.ts
invalid-one-time-invoice 400 finance.ts
invalid-parameter 400/403 common.ts → 403; common.ts → 400
invalid-payout-status 400 payouts.ts
invalid-picture-url 400 common.ts
invalid-record-key 400 storage.ts
invalid-request 400 https://github.com/apify/apify-core/blob/v0.1464.0//src/packages/errors/src/errors/api.ts#L3,9,15,39,45,51,118,130,136,142,148,154,160,166,172,178,184
invalid-resource-type 400 iam.ts
invalid-signature 400 tools.ts
invalid-subscription-plan finance.ts
invalid-tax-number 400 finance.ts
invalid-tax-number-format 400 finance.ts
invalid-token 400 api.ts
invalid-token-type 400 api.ts
invalid-two-factor-code user.ts
invalid-two-factor-code-or-recovery-code user.ts
invalid-two-factor-recovery-code user.ts
invalid-username 403 user.ts
invalid-value 400 tools.ts
invitation-invalid-resource-type 400 invitation.ts
invitation-no-longer-valid 403 invitation.ts
invoice-canceled 400 finance.ts
invoice-cannot-be-refunded-due-to-too-high-amount 400 finance.ts
invoice-incomplete 400 finance.ts and #191
invoice-is-draft 400 finance.ts
invoice-locked 400 finance.ts
invoice-must-be-buffer 400 finance.ts
invoice-not-canceled 400 finance.ts
invoice-not-draft 400 finance.ts
invoice-not-found 500 finance.ts
invoice-outdated finance.ts
invoice-paid-already 400 finance.ts
issue-already-connected-to-github 409 user_integrations.ts
issue-not-found 404 user_integrations.ts
issues-bad-request 406 issues.ts
issuer-not-registered 400 common.ts
job-finished 403 actor.ts
label-already-linked 409 meta_labels.ts
last-api-token 403 iam.ts
limit-reached 400 common.ts
max-items-must-be-greater-than-zero 400 actor.ts
max-metamorphs-exceeded 400 actor.ts
max-total-charge-usd-below-minimum 400 actor.ts
max-total-charge-usd-must-be-greater-than-zero 400 actor.ts
migration-disabled 400 user.ts
missing-actor-rights 401 actor_task.ts
missing-api-token 403 iam.ts
missing-billing-info 400 finance.ts
missing-line-items 400 payouts.ts
missing-payment-date 400 finance.ts
missing-payout-billing-info 400 payouts.ts
missing-proxy-password 403 iam.ts
missing-reporting-fields finance.ts
missing-resource-name 400 iam.ts
missing-settings 404 actor.ts
missing-username 400 iam.ts
monthly-usage-limit-too-low 403 user.ts
more-than-one-update-not-allowed 400 paid_actors.ts
multiple-records-found 404 common.ts
must-be-admin 401 api.ts
name-not-unique 400 common.ts and #97
next-runtime-computation-failed 500 scheduling.ts
no-columns-in-exported-dataset 400 storage.ts
no-payment-attempt-for-refund-found 400 finance.ts
no-payment-method-available 400 finance.ts
no-team-account-seats-available 402 organizations.ts
non-temporary-email 409 user.ts
not-enough-usage-to-run-paid-actor 402 actor.ts
not-implemented 400 common.ts
not-supported-currencies 400 payouts.ts
o-auth-service-already-connected 403 user.ts
o-auth-service-not-connected 403 user.ts
oauth-resource-access-failed 400 common.ts
one-time-invoice-already-marked-paid 400 finance.ts
only-drafts-can-be-deleted 400 payouts.ts
operation-canceled 200 common.ts
operation-not-allowed 403 common.ts
operation-timed-out 408 common.ts
organization-cannot-own-itself 403 organizations.ts
organization-role-not-found 404 organizations.ts
overlapping-payout-billing-periods 400 payouts.ts
own-token-required 403 api.ts
param-not-one-of 400 common.ts
parameter-required 400 common.ts
parameters-mismatched 400 common.ts
password-reset-email-already-sent 429 user.ts
password-reset-token-expired 403 user.ts
pay-as-you-go-without-monthly-interval 400 finance.ts
payment-attempt-status-message-required 400 finance.ts
payout-already-paid 400 payouts.ts
payout-canceled 400 payouts.ts
payout-invalid-state 400 payouts.ts
payout-must-be-approved-to-be-marked-paid 400 payouts.ts
payout-not-found 400 payouts.ts
payout-number-already-exists 400 payouts.ts
phone-number-invalid 400 user.ts
phone-number-landline 400 user.ts
phone-number-opted-out 400 user.ts
phone-verification-disabled 400 user.ts
platform-feature-disabled 403 api.ts
price-overrides-validation-failed 400 paid_actors.ts
pricing-model-not-supported 400 paid_actors.ts
promotional-plan-not-available 400 finance.ts
proxy-auth-ip-not-unique 400 user.ts
public-actor-disabled 403 actor.ts
query-timeout 503 common.ts
quoted-price-outdated 410 finance.ts
recaptcha-invalid 403 user.ts
recaptcha-required 403 user.ts
record-not-public 403 common.ts
record-too-large 400 storage.ts
redirect-uri-mismatch 400 user.ts
reduced-plan-not-available 400 finance.ts
rental-charge-already-reimbursed 400 paid_actors.ts
rental-not-allowed 405 actor.ts
request-aborted-prematurely 400 api.ts
request-handled-or-locked 400 storage.ts
request-queue-duplicate-requests 400 storage.ts
requested-dataset-view-does-not-exist 400 storage.ts
resume-token-expired 403 user.ts
russia-is-evil 400 finance.ts
same-user 400 actor.ts
schedule-name-not-unique 409 scheduling.ts
schema-validation 400 tools.ts and #37
schema-validation-failed 400 common.ts
sign-up-method-not-allowed 403 user.ts
slack-integration-not-custom 400 user_integrations.ts
socket-closed 408 actor.ts
socket-destroyed 408 tools.ts
store-schema-invalid 400 storage.ts
store-terms-not-accepted 403 actor.ts
stripe-enabled 400 finance.ts
stripe-generic-decline 400 finance.ts
stripe-not-enabled 400 finance.ts
stripe-not-enabled-for-user 403 user.ts
tagged-build-required 403 actor.ts
tax-country-invalid 400 finance.ts
tax-number-invalid 400 finance.ts
tax-number-validation-failed 400 finance.ts
taxamo-call-failed 500 finance.ts
taxamo-request-failed finance.ts
testing-error 400 common.ts
token-not-provided 401 api.ts
too-few-versions 403 actor.ts
too-many-actor-tasks 403 actor_task.ts
too-many-actors 403 actor.ts
too-many-labels-on-resource 400 meta_labels.ts
too-many-mcp-connectors 403 mcp_connectors.ts
too-many-o-auth-apps 403 user.ts
too-many-organizations 403 organizations.ts
too-many-requests 429 api.ts
too-many-schedules 403 scheduling.ts
too-many-ui-access-keys 400 iam.ts
too-many-user-labels 403 meta_labels.ts
too-many-values 403 scheduling.ts
too-many-versions 403 actor.ts
too-many-webhooks 403 webhooks.ts
unexpected-route 404 api.ts
unknown-payment-provider finance.ts
unsubscribe-token-invalid 403 user.ts
unsupported-actor-pricing-model-for-agentic-payments 400 agentic_user.ts
unsupported-file-type-for-issue 400 upload.ts
unsupported-file-type-image-expected 400 upload.ts
unsupported-file-type-text-or-json-expected 400 upload.ts
unsupported-permission 400 iam.ts
upcoming-subscription-bill-not-up-to-date 500 finance.ts
user-already-exists 409 user.ts
user-already-verified 400 user.ts
user-creates-organizations-too-fast 403 organizations.ts
user-disabled 400/403 user.ts → 403; user.ts → 400
user-email-is-disposable 400/403 user.ts → 403; finance.ts → 400
user-email-not-set 403 user.ts
user-email-not-verified 400/403 user.ts → 403; finance.ts → 400
user-has-no-subscription finance.ts
user-integration-not-found 404 user_integrations.ts
user-is-already-invited 403 invitation.ts
user-is-already-organization-member 403 organizations.ts
user-is-not-member-of-organization 403 user.ts
user-is-not-organization 403 user.ts
user-is-organization 403 organizations.ts
user-is-organization-owner 403 organizations.ts and user.ts#L176
user-is-removed 400 user.ts
user-not-logged-in 403 user.ts
user-not-verified 403 user.ts
user-or-token-not-found 401 iam.ts
user-plan-not-allowed-for-coupon 400 finance.ts
user-problem-with-card 400 finance.ts
user-record-not-found 404 common.ts
username-already-taken 409 user.ts
username-missing 403 user.ts
username-not-allowed 403 user.ts
username-removal-forbidden 403 user.ts
username-required 403 actor.ts and #174
verification-email-already-sent 429 user.ts
verification-token-expired 403 user.ts
version-already-exists 403 actor.ts
versions-size-exceeded 403 actor.ts
weak-password 403 user.ts
x402-agentic-payment-already-finalized 402 agentic_user.ts
x402-agentic-payment-insufficient-amount 402 agentic_user.ts
x402-agentic-payment-malformed-token 401 agentic_user.ts
x402-agentic-payment-settlement-failed 402 agentic_user.ts
x402-agentic-payment-settlement-in-progress 409 agentic_user.ts
x402-agentic-payment-settlement-stuck 500 agentic_user.ts
x402-agentic-payment-unauthorized 401 agentic_user.ts
zero-invoice 400 finance.ts

Partially implements: #2286

@github-actions github-actions bot added this to the 138th sprint - Tooling team milestone Apr 14, 2026
@github-actions github-actions bot added the t-tooling Issues with this label are in the ownership of the tooling team. label Apr 14, 2026
@apify-service-account
Copy link
Copy Markdown

Preview for this PR was built for commit 455f5fb and is ready at https://pr-2428.preview.docs.apify.com!

@apify-service-account
Copy link
Copy Markdown

A PR to update the Python client models has been created: apify/apify-client-python#723

This was automatically triggered by OpenAPI specification changes in this PR.

@apify-service-account
Copy link
Copy Markdown

Preview for this PR was built for commit 9f60cb8 and is ready at https://pr-2428.preview.docs.apify.com!

@Pijukatel Pijukatel requested a review from vdusek April 14, 2026 11:32
@apify-service-account
Copy link
Copy Markdown

Preview for this PR was built for commit 21c1ef5 and is ready at https://pr-2428.preview.docs.apify.com!

@apify-service-account
Copy link
Copy Markdown

The Python client model PR has been updated with the latest OpenAPI spec changes: apify/apify-client-python#723

@Pijukatel
Copy link
Copy Markdown
Contributor Author

Pijukatel commented Apr 14, 2026

@vdusek , @janbuchar, I am not so sure about this. What do you think?

If we want to define error types as enums for code generation, then we have to include all of them; otherwise, the validator will complain.

The second option is to revert from enum back to string.

@vdusek
Copy link
Copy Markdown
Contributor

vdusek commented Apr 14, 2026

I would say the large enum is fine.

@Pijukatel Pijukatel marked this pull request as ready for review April 14, 2026 13:40
@Pijukatel Pijukatel merged commit 598cbcb into master Apr 14, 2026
18 of 19 checks passed
@Pijukatel Pijukatel deleted the add-all-errors branch April 14, 2026 15:34
Pijukatel pushed a commit to apify/apify-client-python that referenced this pull request Apr 14, 2026
This PR updates the auto-generated Pydantic models based on OpenAPI
specification changes in [apify-docs PR
#2428](apify/apify-docs#2428).

---------

Co-authored-by: apify-service-account <apify-service-account@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

t-tooling Issues with this label are in the ownership of the tooling team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants